5分でわかる!「行列」の計算方法

ディープラーニング
ディープラーニング
スポンサーリンク

ディープラーニングでは、掛け算の合計をなんども計算する必要があるのですが、この時にとても役に立つのが「行列」(単なる数値をタテヨコに並べたもの)同士の掛け算です。しかし、いざ「行列を計算せよ!」と言われても戸惑ってしまいますね。そこで今回は、「行列」の計算方法をできるだけわかりやすくまとめてみました。

 
関連記事:ディープラーニングの数学「スカラー・ベクトル・行列・テンソル」とは?

行列の「足し算」と「引き算」

行列の「足し算」と「引き算」は、特にむずかしいことはありません。同じ位置にある数値を、足し算もしくは引き算するだけです。

<行列の足し算>
行列を足し算する手順

<行列の引き算>
行列を引き算する手順

ただし、行列の足し算と引き算は、同じ型の行列同士でしかできません。例えば下の2行2列の行列(これを「2 × 2 の行列」と呼びます)と、2行3列の行列(これを「2 × 3 の行列」と呼びます)を足し算や引き算をすることはできません。

違う型の行列同士の足し算ができない例

行列の「掛け算」

少しコツがいるのが、ディープラーニングの計算でよく使う 行列の「掛け算」(行列の積)です。

一番単純な「2 × 2 の行列」同士の掛け算で計算方法を確認していきましょう。

2×2の行列

まず、左の行列の1行目の左から、右の行列の1列目の上から順番に掛け算し、合計した値を左上のマス(1行1列目)に書きます。(文章にするとどうしてもややこしくなるので、図を見てくださいね)

2×2の行列同士の掛け算の計算方法(1/4)

次に、左の行列の1行目と、右の行列の2列目を掛け算し、合計した値を右上のマス(1行2列目)に書きます。

2×2の行列同士の掛け算の計算方法(2/4)

同じ要領で、左の行列の2行目と、右の行列の1列目を掛け算し、合計した値を左下のマス(2行1列目)に書きます。

2×2の行列同士の掛け算の計算方法(3/4)

最後に、左の行列の2行目と、右の行列の2列目を掛け算し、合計した値を右下のマス(2行2列目)に書けば、行列の掛け算の完成です!

2×2の行列同士の掛け算の計算方法(4/4)

行列の掛け算は計算が面倒ではありますが、計算方法さえ知っていれば難しいことはありません。行列の掛け算は「行→と列↓を掛ける!」と覚えておきましょう。

行列の掛け算の注意点

行列の掛け算は、違う型の行列同士でもできるのですが、『左の行列の「列の数」と 右の行列の「行の数」を一致させる』必要があることに注意しなければなりません。

例えば「2行 × 3列 の行列」と「2行 × 2列 の行列」の掛け算は次のようになるため計算することができません。

「2×3の行列」と「2×2の行列」の掛け算ができない例

これは特に重要な注意点なので、必ず覚えておきましょう。キーワードは「列と行の数を一致させる!」です。

行列の「割り算」はない

では、行列の割り算はというと、行列には「割り算」がありません。そのかわりに逆行列というものがあります。興味がありましたら検索してみてください。

5秒でできる!行列の計算

ディープラーニングでは 1000 × 1000 のような巨大な行列の掛け算を、なんども繰り返し行う必要がありますので、手計算でやっていては日が暮れてしまいますし、コンピューターでも大変な計算なので時間かかります。

そんな時に便利なのが、プログラム言語の Python の NumPy(ナンパイ)というライブラリです。このライブラリを使えば、行列の計算を高速に行うことができます。

sample.py

import numpy as np

# 2×2の行列
a = np.array([[1, 2],[3, 4]])

# 2×2の行列
b = np.array([[5, 6],[7, 8]])

# 行列の掛け算
y = np.dot(a, b)

print(y)

上のサンプルコードを実行すると次のように表示されます。先ほどの行列の掛け算の答えと同じことが確認できますね。

$ python sample.py
[[19 22]
 [43 50]]

まとめ

「行列」の計算方法のおさらいです。

行列の「足し算」:同じ位置にある数値を足す
行列の「引き算」:同じ位置にある数値を引く
行列の「掛け算」:行→と列↓を掛ける。列と行の数を一致させることに注意!
行列の「割り算」:行列に割り算はない

おわりに

この記事を書くのにあたって、書籍「もう一度高校数学」を参考にさせて頂きました。(2019年現在は高校数学で行列はやりませんが、この書籍が発行された当時は高校数学にも行列があったようです)行列だけでなくディープラーニングを学ぶ上で必要になる、Σ(シグマ)記号の意味や微分の基礎なども、とてもわかりやすく丁寧に解説されています。私のように学生時代あまり勉強熱心ではなかった方が、ディープラーニングをきっかけに数学を学び直すのにぜひオススメの一冊です。

コメント

タイトルとURLをコピーしました