機械学習には、「行列」という概念が頻繫に出てきます。今回は、行列についての基本を説明します。
行列とは?
行列とは、整数などの要素を、縦横それぞれの方向に並べたものを指します。高校数学では、数年前まで「数学C」という範囲に入っていましたが、今では除外され、大学での「線形代数」の授業で学ぶ内容になっています。
$$ \begin{bmatrix} 1 & 3 \\ 5 & 4 \end{bmatrix} $$
数学の教科書などで、上記のようなものを見たことがある人も多いと思います。これこそが、行列です。
行列の縦方向を行、横方向を列と言います。
行列の形を表現する場合、「行数×列数の行列」と言うことがあります。例えば、上記の行列は2×2の行列です。
行列同士の足し算
数字を足し合わせるように、行列同士を足し算することもできます。
例:2つの行列の足し算
$$ \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} + \begin{bmatrix} 2 & 6 \\ 8 & 4 \end{bmatrix} = \begin{bmatrix} 3 & 8 \\ 11 & 8 \end{bmatrix} $$
例を見ればすぐわかると思いますが、要素同士を足し合わせれば良いです。より分かりやすくするために、記号で表してみます。
$$ \begin{bmatrix} a & b \\ c & d \end{bmatrix} + \begin{bmatrix} e & f \\ g & h \end{bmatrix} = \begin{bmatrix} a+e & b+f \\ c+g & d+h \end{bmatrix} $$
行列同士の引き算
引き算についても、足し算とほとんど同じように計算できます。
例:2つの行列の引き算
$$ \begin{bmatrix} 3 & 4 \\ 5 & 6 \end{bmatrix} + \begin{bmatrix} 1 & 3 \\ 2 & 6 \end{bmatrix} = \begin{bmatrix} 2 & 1 \\ 3 & 0 \end{bmatrix} $$
記号で表すと、次のようになります。
$$ \begin{bmatrix} a & b \\ c & d \end{bmatrix} + \begin{bmatrix} e & f \\ g & h \end{bmatrix} = \begin{bmatrix} a-e & b-f \\ c-g & d-h \end{bmatrix} $$
足し算、引き算をするための条件
足し算や引き算はどの行列同士でも行えるわけではありません。足し算引き算をするには、「列数と行数が一致している」行列同士である必要があります。
行列に整数を掛ける
行列に整数を掛け、「定数倍」する動作も簡単に行うことができます。
$$ 3 \times \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} = \begin{bmatrix} 3 & 6 \\ 9 & 12 \end{bmatrix} $$
記号で表すと、以下のようになります。
$$ t \times \begin{bmatrix} a & b \\ c & d \end{bmatrix} = \begin{bmatrix} at & bt \\ ct & dt \end{bmatrix} $$
行列同士の掛け算
掛け算は少し計算がややこしくなります。まずは、記号を使って書いてみます。
$$ \begin{bmatrix} a & b \\ c & d \end{bmatrix} \times \begin{bmatrix} e & f \\ g & h \end{bmatrix} = \begin{bmatrix} ae+bg & af+bh \\ ce+dg & cf+dh \end{bmatrix} $$
足し算や定数倍と比べると、難しい式になりました。初めから暗記するのは大変なので、計算問題を解きながら自然と覚えていくのが良いでしょう。
整数同士の掛け算と、行列同士の掛け算との違い
例えば、3×5を計算する場合は、3×5と計算しても5×3と計算しても答えは共に15となります。整数同士の掛け算では常識ですが、行列同士ではこれが必ずしも成り立つとは限りません。
例:行列A、Bの掛け算
$$ A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} , B = \begin{bmatrix} 2 & 5 \\ 3 & 0 \end{bmatrix} $$
$$A \times B = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} \times \begin{bmatrix} 2 & 5 \\ 3 & 0 \end{bmatrix} = \begin{bmatrix} 8 & 5 \\ 18 & 15 \end{bmatrix} $$
$$B \times A = \begin{bmatrix} 2 & 5 \\ 3 & 0 \end{bmatrix} \times \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} = \begin{bmatrix} 17 & 24 \\ 3 & 6 \end{bmatrix} $$
全く異なる結果になりました。このように、AB=BAとはならないという点に注意が必要です。
行列同士の掛け算をする際の留意点
先ほどの例では行列A、Bは共に2×2の行列であり、スムーズに計算をすることができましたが、行列同士の掛け算はどんな場合でも成り立つわけではありません。
例:行列同士の掛け算ができない組み合わせ
$$\begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} \times \begin{bmatrix} 2 & 5 & 4\\ 3 & 0 & 2 \ \\ 4 & 1 & 5 \end{bmatrix} = ??? $$
この例では、2×2と3×3の行列同士を掛けようとしていますが、このような計算はできません。行列同士で掛け算をするためには、ある条件を満たす必要があります。
条件:
行列AとBの掛け算をしたい(ABを計算する)場合、
「Aの列数=Bの行数」が成立する必要がある
この例では、左側の行数の列数は2、右側の行数の行数は3なので、条件を満たしていません。したがって、掛け算はできないということになります。