第10話 ディープラーニングに必要な数学知識 -線形代数 行列の演算-
前回に引続き、線形代数を学んでいきます。
今回は行列の演算についてです。
ディープラーニングでは行列計算を多用するらしいので、今回学習することはきっと重要でしょう。
内容は次のとおりです。
・スカラーと行列の演算
・行列の要素同士の演算(アダマール積)
・行列同士の掛け算(行列積)
・ベクトルと行列の演算
・行列の転置
ちなみに教科書の1/4くらいが終わりました。
本丸のディープラーニングに到達するまでの道のりは険しいですね・・・。
それでは今回の学習のスタートです!
(教科書「はじめてのディープラーニング」我妻幸長著)
スカラーと行列の演算
スカラー(普通の数)と行列の掛け算は、数学ではこのようになります。
そしてNumPyで実装するときはこうなります。
特に悩むようなところはないですね。
スカラーと各要素の演算は、掛け算以外でも演算記号を使ってできます。
行列の要素ごとの演算
行列の要素ごとに掛け算することを「アダマール積」と言います。初耳(•o•)
数式ではこのように表します。
NumPyでアダマール積をやってみましょう。
スカラーの時と同じで、掛け算記号を用いてできました。
掛け算以外の演算も、スカラーと同様に演算記号を用いてできます。
とっても簡単♪
行列同士の掛け算
「行列の積」「行列積」と呼びます。
アダマール積より計算が圧倒的にめんどくさいです。
でも私はこちらの方が馴染みがあるかな。
数式表記だとこうなります。
まったくもってカオスですね・・・。
簡単な例題をしましょう。
Aの行とBの列の要素を掛け算して、足していく感じです。
はっきり言って面倒臭い行列積ですが、NumPyではdot関数を用いれば一瞬でできちゃいます。やっほーい!
ちなみに、行列積を計算するためには次の条件を満たす必要があります。
この条件を満たしていないとNumPyはエラーコードを吐きます。
ベクトルと行列の掛け算
これは行列積の考え方が適用できます。
なぜなら、ベクトルが1行m列の行列と考えれば良いからです。
掛け算する相手がm行n列の行列であれば、行列積が求められますね。
行列の転置
行列の行と列を入れ替えることを転置と言います。
数式ではこのように表します。
NumPyでは、「.T」を配列につけて転置します。
何回か登場するtransposeでも同じように転置できます。
ディープラーニングでは行列積を求めるために、転置を使うようです。
軸の入れ替えについて、行列(2階のテンソル)では「.T」でできますが、3階級以上のテンソルではtransposeを使います。
今回はディープラーニングの演算のコアとなる(であろう)行列の演算について学習しました。
NumPyを使えば、行列の演算が驚くほど簡単にできることがわかりましたね!
次回は微分について学習します。
それではまた(^_^)ノシ
よろしければサポートお願いします!いただいたサポートは書籍代等に活用いたします!