1
会員になると、いいね!でマイページに保存できます。
コンピュータ関連の勉強をする際、数学的な説明が登場するとそれだけで理解する気が失せてしまうこともあるでしょう。特に高校生が苦手とするベクトルや行列などは名前すら聞きたくない人も多いかもしれません。しかし、ディープラーニングの中ではそれ以上に難解な「テンソル」と呼ばれる数字が扱われています。数学的に理解できるほどではなくとも、どんなものなのかというイメージくらいはつかめておくと、ディープラーニングの理解が深まります。今回は、小難しい話は抜きにして、簡単にディープラーニングが扱う数値について説明していきます。
「テンソル」とは?
ディープラーニングでは、複雑なニューラルネットワーク上で膨大な数の数値が駆け巡っています。コンピュータはそれらの数値を個別に扱うこともできます。
しかし、そのままではニューラルネットワーク内での計算を理論化できませんし、何よりもニューラルネットワークごとに扱う数値に関する何かしらの共通認識がなければ、ほかの人間がプログラムのコードを読んでも何が書いてあるのか分からず、技術の応用や発展につなげにくくなります。そこで使われるようになった数学的概念が「テンソル」でした。
テンソルという概念は数学的に理解するには難解なものですが、私たちから見る分には「沢山の数値の集まり」として見えます。
基本的には沢山の数値を集めて「1つの情報」として表現するのがテンソルで、例えるなら「ゲームキャラクターの特徴を無数のステータスで表す」ようなものです。表現したい情報は「キャラクター」という1つの存在だけなのですが、それを数値で表す際に「力」「素早さ」「体力」「知力」といったいくつもの数値化されたパラメータが使われるというわけです。
「テンソル」と「ベクトル」「行列」の関係
テンソルがただの数値の集まりと違うのは「数値の種類(次元/軸の数)がいくつあるか」「1種類あたり何項目あるか」などの基本情報を付け加えるだけで、膨大な数値の集まりをきれいに整理できてしまう点にあります。
そして、テンソルを使うと「ベクトル」や「行列」といった特殊な形の情報もまとめて扱うことができるようになります。
たとえば、ベクトルは1列の数字だけなので「1種類(1次元)のテンソル」として表せますし、行列は行と列で2種類の要素があるので「2種類(2次元)のテンソル」ということになります。その上で、各種類あたりの項目数を付け加えて「1種類で4項目のテンソル」なら「4次元のベクトル」ということになりますし、「2種類で3項目と4項目のテンソル」なら「3行4列の行列」ということになります。
端的に言えば「名前が変わっただけ」なのですが、ベクトルや行列の計算は高校で習ったように、さまざまな方法論が開発されています。そのため、もっと種類や項目数の多い多次元のテンソルに比べると計算が(比較的)簡単なのです。ベクトルや行列を計算するためのアルゴリズムを使って処理できるので、できればベクトルや行列のようなシンプルな形式にしたいというイメージです。
ただ、複雑で大規模なニューラルネットワークでは、次元数が大きく計算の難しい多次元のテンソルが使われています。こうした規模の大きなテンソルの計算はコンピュータでも難しく、通常のCPUでは処理に時間がかかるため、並列計算に特化したGPUなどが使われています。
近年はテンソル計算に特化したコンピュータやアルゴリズムが開発されており、コンピュータの「テンソルを扱う能力」は飛躍的に向上しています。
【次ページ】翻訳技術の仕組み、「言葉をベクトル化する」とは?
関連タグ