線形代数の基本・「スカラー」「ベクトル」「行列」の積

#線形代数の基本・「スカラー」「ベクトル」「行列」の積

こんにちは、mucunです。

今回の記事では、線形代数の基本について紹介させていただきます。
別で機械学習の記事も書かせていただいてるのですが、
その補足のための記事となります。

##線形代数とは

線形代数の説明については、下記記事に詳しく書いてありました。
（参考：[線形代数とは何か](http://eman-physics.net/math/linear01.html)、[線形代数のおはなし](http://senkei.nomaki.jp/)）

線形代数は機械学習にて、一般的が概念として使われているものです。
特徴は、複数要素を１変数で表現するところです。
複数要素とは、「ベクトル」や「行列」と呼ばれるものです。
例えば、ある「ベクトル」と「ベクトル」の内積を取ろうとした場合、
線形代数の概念無しで式を表現すると、
$$y=\sum_{i = 1}^n w_ix_i$$という式になりますが、
線形代数の概念有りで式を表現すると、
$$y=w^Tx$$というスッキリした形で表現できます。
１つの変数に複数の要素が含まれるという概念があるので、
$\sum$ 記号を使う必要がありません。
この考え方が、式が煩雑になったときの思考整理にスゴく役に立ちます。

つまり、線形代数とは、
大規模な計算式をスッキリまとめるためのものと言えます。
そして、そうやって思考整理することが、
新たな発見の後押しとなることもあるのです。

##押さえるべき概念３つ「スカラー」「ベクトル」「行列」

線形代数の計算をする上で押さえておくべき概念は、
「スカラー」「ベクトル」「行列」の３つです。

１つずつ説明していきます。

###「スカラー」

調べると、「大きさのみで表され、方向をもたない量」と出ます。
これはつまり、連ならず独立した１つの数値のことです。
<img width="100" src="https://qiita-image-store.s3.amazonaws.com/0/126499/46075ade-6839-b77a-17f0-037751f93984.png">

###「ベクトル」

調べると、「要素を（縦または横に）一列に並べたもの」と出ます。
プログラミング経験者であれば、「１次元の配列」というと、
分かりやすいかもしれません。
<img width="350" src="https://qiita-image-store.s3.amazonaws.com/0/126499/f52abdc1-23dc-ceb2-0cb3-45a565638d02.png">

###「行列」

調べると、「数字・文字を長方形や正方形に並べたもの」と出ます。
こちらもプログラミングでいうところの「２次元の配列」というと、
分かりやすいかもしれません。
<img width="350" src="https://qiita-image-store.s3.amazonaws.com/0/126499/89a49dc2-93f9-64c4-a477-68f1872179ff.png">

##具体的に計算をしてみる

具体的にどう計算するのか、まとめます。

###「スカラー」×「スカラー」

「$a$：スカラー」、「$b$：スカラー」である場合、
「$ab$」式の結果は、下記図の通りとなります。
これは、普通の掛け算ですね。

<img width="200" src="https://qiita-image-store.s3.amazonaws.com/0/126499/a2e88f2c-5e79-1c76-780c-6207da7512e7.png">

<img width="200" src="https://qiita-image-store.s3.amazonaws.com/0/126499/ed2ba37e-b049-6c47-2216-4ba1c9d26fa3.png">

###「スカラー」×「ベクトル」

「$a$：スカラー」、「$b$：ベクトル」である場合、
「$ab$」式の結果は、下記図の通りとなります。
これは、ベクトルの定数倍ということです。

<img width="220" src="https://qiita-image-store.s3.amazonaws.com/0/126499/c7e4fc8b-803d-02e3-cfb7-078e9ab22b3d.png">

<img width="220" src="https://qiita-image-store.s3.amazonaws.com/0/126499/78c05189-e9ef-e137-732b-bee9a347e46d.png">

###「ベクトル」×「スカラー」

「$a$：ベクトル」、「$b$：スカラー」である場合、
「$ab$」式の結果は、下記図の通りとなります。
これも、ベクトルの定数倍ということです。

<img width="220" src="https://qiita-image-store.s3.amazonaws.com/0/126499/0b342a60-351e-7eaa-3780-60db13155e72.png">

<img width="220" src="https://qiita-image-store.s3.amazonaws.com/0/126499/ca18e856-f4b9-7cb1-1c23-98fff2c10820.png">

###「ベクトル」×「ベクトル」

「$a$：ベクトル」、「$b$：ベクトル」である場合、話が少し複雑です。
実はルールがあり、「$a$」の列数と「$b$」の行数とが等しくないと、
積の計算ができないルールとなっています。
仮に、「$a$」「$b$」に縦長のベクトルであれば、計算が可能なのは、

* 「$a^Tb$」
* 「$ab^T$」

のいずれかとなります。
ここで式中の「$^T$」は転置の意です。
転置とは、「ベクトル」「行列」にて、行と列を対角に反転することです。

図で説明していきます。
先ず、転置についてです。

<img width="350" src="https://qiita-image-store.s3.amazonaws.com/0/126499/d719fccc-8590-a110-097e-73dacbe06a1c.png">

という関係です。

そして、積について計算可能なのは、以下のケースです。

<img width="500" src="https://qiita-image-store.s3.amazonaws.com/0/126499/6209e3ba-1f1f-d63a-dc3a-c2e04591b4b3.png">

<img width="550" src="https://qiita-image-store.s3.amazonaws.com/0/126499/3984b5e8-62b1-961d-201b-24a1def91847.png">

###「ベクトル」×「行列」

「$a$：ベクトル」、「$b$：行列」である場合、
前述同様、「$a$」の列数と「$b$」の行数とが等しくないと、
計算ができないルールとなっています。
「$ab$」式の結果は、下記図の通りとなります。

<img width="550" src="https://qiita-image-store.s3.amazonaws.com/0/126499/93d4db9a-9131-4a02-7d70-3861a8a33464.png">

###「行列」×「ベクトル」

「$a$：行列」、「$b$：ベクトル」である場合、
「$ab$」式の結果は、下記図の通りとなります。

<img width="550" src="https://qiita-image-store.s3.amazonaws.com/0/126499/d2d814da-c98d-caa5-85f9-c4ca05f6cdb5.png">

###「行列」×「行列」

「$a$：行列」、「$b$：行列」である場合、
「$ab$」式の結果は、下記図の通りとなります。

<img width="550" src="https://qiita-image-store.s3.amazonaws.com/0/126499/69f3d71d-fe04-4b20-e472-6b51c50193ad.png">

以上、冗長な説明になってしまいましたが、
線形代数における積の取り方が理解してもらえたかと思います。

今回の記事は、ここまでとなります。
読んで下さった方、ありがとうございました。(T_T)/~~~