目次
こんにちは。sinyです。
先日、G検定に合格したのですが、改めて基礎知識について復習をしていてスカラー、ベクトル、テンソルの考え方がややこしいなというのがあったので改めて整理してみました。
この記事では、ディープラーニングを学習するにあたって必要となる「スカラ、ベクトル、テンソル」の考え方について簡単にまとめています。
ディープラーニングを理解するには、スカラ、ベクトル、テンソル、微分法、勾配下降法といった数学の概念を理解することが必須になってきます。
数学が苦手!という方も避けて通れない部分だと思いますので、一度整理してみてください。
スカラ、ベクトル、テンソルとは?
ディープラーニングでは基本的に多次元配列としてデータを扱っていきます。
この配列は「テンソル」とも呼ばれ、ディープラーニングではデータ構造としてテンソルを利用します。
また、テンソル数のことを「軸」という言い方をします。
テンソルとは、データのコンテナ(入れ物)のようなもので、ほとんどの場合は数値データです。
よく数学で出てくる行列(2行3列とか)は2次元テンソルです。
大抵は0~4次元テンソルぐらいまで理解できれば問題ないと思いますので、以下に具体例を交えて説明します。
ちなみに、配列の形状とテンソル数は、それぞれnumpyのshape属性、ndim属性で確認できます。
0次元テンソル(スカラー)
数値を1つしか含んでないテンソルをスカラーと呼びます。
スカラーは「スカラーテンソルもしくは0次元テンソル」とも言います。
【0次元テンソルの例】
上図の通り、スカラー(0次元テンソル)では形状が空になります。
1次元テンソル(ベクトル)
数値の配列のことをベクトルといいます。
ベクトルは1次元テンソルで、テンソル数は1になります。
上図の場合、ベクトルの要素は4つあるので、4次元ベクトルと言います。
形状は(4, )のように単一要素で表されます。(この辺はしっかり押さえておいたほうがいいです)
ここで混同しやすいですが、4次元ベクトルと4次元テンソルは違います。
4次元テンソルは軸が4つあり、各軸に対して数値が存在するというイメージです。
2次元テンソル(行列)
ベクトルの配列を行列と言います。
こんなやつですね。
行列は「行」と「列」の2つの軸をもつので2次元テンソルです。
形状は (3, 4)のように(行、列)で表されます。
3次元テンソルとより高次元のテンソル
2次元テンソルを新しい配列要素に詰め込むと3次元テンソルになります。
一般に、n次元テンソルの要素を新しい配列に詰め込むとn+1次元テンソルになります。
以下のようなイメージです。
この辺は最初のうちぱっと理解しづらい部分なので、一度整理しておくとよいですね。
まだまだ大丈夫という方は、以下の4次元テンソル。
4次元テンソル
詳細は図を見ていただければ分かると思いますが、4次元テンソルの場合は、配列の要素が3次元テンソルになっています。
ディープラーニングを学習する上では、このぐらいは理解しておいたほうがよいでしょう。
おすすめの書籍
行列、テンソル等の最低限の基礎知識を身に着けつつディープラーニングも学習したいと言うかたには以下の書籍がお勧めです。
これまで10冊以上ディープラーニングの書籍を購入しましたが、この本が一番とっつきやすく、今もこの本を使って勉強をしています。
最低限の知識だけでなく、もう少し深く学習したいという方には以下の書籍などを読んでみるとよいと思います。
キャンパスゼミシリーズは私もいくつか持っていますが、難しすぎず、簡単すぎず、丁寧に説明しているのでお勧めです。
この記事が良かったと思う方はTwitterフォロー(shiny)とリツイート頂けると嬉しいです!