機械学習勉強ログ

機械学習に関連した勉強を記録していこうと思います。

線形代数の基本的な計算(1) ~ベクトルと行列の基本的な計算方法~

今回は、前回から1週間後の更新になりました。

最近は休日になるのが楽しみになっている状況です。

前回は、ベクトル・行列はプログラムにおける複合的なデータ構造(配列やハッシュ)と近しい という(個人的な理解)ところまで

話を進めてきました。今回は、それらの表現を使ってどんな操作ができるのか見ていきたいと思います。

工学基礎 はじめての線形代数学 (KS理工学専門書)

工学基礎 はじめての線形代数学 (KS理工学専門書)

ちなみに、僕はこの本を使って勉強していて、現状は5章まで解き進めた状態で、このブログを綴っています。

スカラー、ベクトル、行列の基本的な演算

まず、ベクトル行列の計算方法ですが、今読み進めていたところまでを振り返ると

最初は、まず次のことが理解できていれば問題ないと感じました。

  • (1)スカラーとベクトルの演算
  • (2)ベクトルとベクトルの演算
  • (3)ベクトルと行列の演算
  • (4)行列と行列の演算

いろいろな計算が出て来るのですが、

ベクトル行列の計算は、内積の計算を中心に計算方法が組み立てられている ように思えましたので、

その点を図解して説明していきたいと思います。

1. スカラー * ベクトル

f:id:fugafigs:20190330122246p:plain:w300

まず、スカラー * ベクトルですが、これは スカラーの値をベクトルの各要素に分配していく イメージです。これは簡単ですね!

2. ベクトル * ベクトル (内積 )

f:id:fugafigs:20190330134959p:plain:w300

次に、こいつがかなり重要な概念な 内積 ですが、

計算自体は簡単で、ベクトルのそれぞれの要素を掛け算して、足したもの です。

それぞれの要素を足し合わせて、1つの要素にするので、内積の結果はベクトルではなく スカラー値 になります。

ちなみに、ベクトルの要素数(次元)があっていないと内積という演算そのものができない

仕様となっておりますw。ご注意ください!

内積は、ドット積とも言うそうです。

ベクトルの 内積という操作がどういう意味であるか については重要な概念なので、

次回1回かけて掘り下げていこうかと思います。

3. ベクトル * 行列

f:id:fugafigs:20190330134709p:plain:w300

次は、ベクトルと行列のドット積となります。

これは、上の図で見た通り、左側ベクトルを右側のそれぞれの縦ベクトルに分配して内積をとっていくイメージとなります。

内積の計算イメージをしっかり頭に入れておけば、そんなに難しくないはずです。

結果は、スカラー値が横に2つ並んだ結果になります。

4. 行列 * ベクトル

f:id:fugafigs:20190330135218p:plain:w300

次は、行列とベクトルのドット積ですが、先ほどと考え方はほとんど一緒です。

左側の横ベクトルから、右側の縦ベクトルに対して内積をとっていく イメージとなります。

結果は、要素数が2(つまり、2次元)のベクトルが1つとなりました。

5. 行列 * 行列

f:id:fugafigs:20190330125918p:plain:w300

これは、見ればわかる通り、3と4で出てきた演算の組み合わせですね。

4つのベクトルの内積を縦横に分配しているとみることもできます。

結果は、4x4の行列、(要素数が2のベクトルが2つ並んでいる)となります。

高校で習ったときは、やたら複雑な計算だと思っていましたが、

4つのベクトルが並んでいると見れれば、案外簡単だと思いました。(計算はそれなりにめんどくさいですが、)

まとめ

今回は、計算方法を図解して説明しました。

次回は、今回覚えた計算が実際に何の役に立つのかについて、見ていきたいと思います。