Lesson 9
線形代数
Lesson 9
Chapter 1
ベクトル
ベクトルとスカラー
ニューラルネットワークにおける計算を理解するには、ベクトルおよび行列の理解が不可欠です。 Lesson 9 ではそれらについての最低限必要な知識を紹介していきます。
ベクトルの説明に入る前に、スカラーの説明をします。 これは単なる1つの値(実数)のことで、$2$や$1.5$などが当てはまります。
続いてベクトルですが、機械学習において登場するベクトルは、ほとんどの場合、値(実数)をいくつか並べたものとして解釈できます (数学的な定義は全く異なりますが、機械学習を学ぶ上ではしばらくはこのような理解で問題ありません)。 並べた値の数をベクトルの次元と言います。また、ベクトルの持つ各値のことをそのベクトルの要素あるいは成分といいます。 例えば2次元のベクトル$\mathbf a$で、1つ目の要素が3、2つ目の要素が1であるようなものは$\mathbf a=(3, 1)$あるいは$\mathbf a=[3, 1]$などと書きます。 このように、ベクトルは太字の小文字アルファベットを用いて表されることが多いです。
ベクトルは、ある点からある点に向かう矢印のように表現されることが多いです。 例えば、2次元ベクトル$\mathbf a=(3, 1)$は、$x$方向に3、$y$方向に1進む斜めの矢印のように解釈されます。 ただしベクトルでは、その矢印の始点がどこであるかについては考えません。
2次元ベクトル$\mathbf a=(3, 1)$の図示
よくスカラーとベクトルは対比されて説明されますが、区別をしっかり理解しておきましょう。
ベクトルの演算
スカラーに足し算や引き算などが定義されているように、ベクトルに関する演算もいくつか定義されているので、それらを説明していきます。
まずはベクトルの足し算です。ベクトルどうしの足し算では、要素ごとの足し算を行います。 2次元のベクトル$\mathbf a=(3, 1)$と$\mathbf b=(-4, 2)$の足し算は次のようになります。 \begin{align*} \mathbf a + \mathbf b &= (3,1) + (-4,2) \\ &= (3+(-4), 1+2) \\ &= (-1, 3) \end{align*} 3次元などについても同様です。 ベクトルの足し算によって得られるベクトルは、2つのベクトルを合成して得られる平行四辺形の対角線上にできるものを表します。
ベクトル$\mathbf{a}$と$\mathbf{b}$の足し算
なおベクトルどうしの足し算は次元が同じベクトルに対してしか行うことはできません。 一般に、2つのベクトルについての演算を行うにはそれらの次元が一致している必要があるので、覚えておきましょう。
続いてベクトルの引き算です。これも要素ごとに引き算を行えばよいです。 先ほどの$\mathbf a$および$\mathbf b$を用いて計算例を示します。 \begin{align*} \mathbf a - \mathbf b &= (3,1) - (-4,2) \\ &= (3-(-4), 1-2) \\ &= (7, -1) \end{align*} ベクトルの引き算によって得られる新しいベクトルは、第1項のベクトルの終点から第2項のベクトルの終点(これらの始点は揃えて考えます)に向かう矢印に対応するベクトルになります。
ベクトル$\mathbf{a}$と$\mathbf{b}$の引き算
3つ目はスカラー倍(実数倍)です。 これはベクトルにあるスカラーを掛ける演算のことで、そのスカラーをベクトルの各要素に掛けます。 先ほどの$\mathbf a$に2を掛けるスカラー倍の計算を見てみましょう。 \begin{align*} 2\mathbf a &= 2(3, 1) \\ &= (2\cdot 3, 2\cdot 1) \\ &= (6, 2) \end{align*} このように、ベクトル$\mathbf a$にスカラー$k$を掛けるときは$k\mathbf a$のように書きます。 ベクトルのスカラー倍したものは、元の矢印の長さを$|k|$倍して、$k\gt 0$なら向きは元のままの、$k \lt 0$なら向きを逆にしたものに対応するベクトルを表します。
$\mathbf{a}$と2$\mathbf{a}$と$-\mathbf{a}$
ベクトルの長さ
ベクトルの長さとは矢印の長さのことですが、これはベクトルの全要素の2乗和の(正の)平方根によって求まるスカラーです。 例えば2次元のベクトル$\mathbf a=(3,1)$の長さは次のように求められます。 \begin{align*} |\mathbf a| &= \sqrt{3^2+1^2} \\ &= \sqrt{9+1} \\ &= \sqrt{10} \\ \end{align*}
ベクトルの内積
ベクトルどうしの演算には、内積と呼ばれるものもあります。 これはベクトルどうしの掛け算のようなもの(の一種)で、次のように定義されます。 \[ \mathbf a \cdot \mathbf b = |\mathbf a| |\mathbf b| \cos \theta \] ただし$\theta$ は$\mathbf a$と$\mathbf b$のなす角です。 上記のように、$\mathbf a$と$ \mathbf b$との内積は$\mathbf a \cdot \mathbf b$と書きます。 スカラー同士の掛け算では間の$\cdot$は省略してはいけないので注意しましょう。 注意すべき点として、これまでに紹介した他のベクトルどうしの演算とは異なり、内積をとった結果はスカラーになります。 また内積は、それぞれのベクトルの対応する要素どうしで掛け算を行い、それらの和をとることでも計算できます。 つまり、$\mathbf a= (a_1, a_2)$、$\mathbf b= (b_1, b_2)$の内積は次のようにしても求められます。 \begin{align*} \mathbf a \cdot \mathbf b &= (a_1, a_2) \cdot (b_1, b_2) \\ &= a_1b_1 + a_2b_2 \end{align*}
$\mathbf a=(3, 1)$と$\mathbf b=(-4, 2)$の内積を2つの方法で計算し、それらが一致することを確かめてみましょう。 これらのベクトルのなす角は$135^{\circ}$なので、最初に示した式では次のようになります。 \begin{align*} \mathbf a \cdot \mathbf b &= |\mathbf a| |\mathbf b| \cos 135^{\circ} \\ &= \sqrt{10}\cdot \sqrt{20} \cdot \left(-\dfrac{1}{\sqrt{2} }\right) \\ &= -10 \end{align*} 一方、2つ目に示した式では次のようになります。 \begin{align*} \mathbf a \cdot \mathbf b &= 3\cdot (-4) + 1 \cdot 2 \\ &= -12 + 2 \\ &= -10 \end{align*} 確かに一致することがわかりました。
内積はベクトルどうしの掛け算のようなものと述べましたが、スカラーどうしの掛け算において成り立ついくつかのことが内積でも成り立つので、それらを紹介します。
- $\mathbf a \cdot \mathbf b = \mathbf b \cdot \mathbf a$
- $\mathbf a \cdot (\mathbf b + \mathbf c) = \mathbf a \cdot \mathbf b + \mathbf a \cdot \mathbf c$
- $(k\mathbf a) \cdot \mathbf b = k (\mathbf a \cdot \mathbf b)$($k$は定数)
また他の内積の性質もいくつか紹介しておきます。
- $\mathbf a$と$\mathbf b$が平行 $\iff |\mathbf a \cdot \mathbf b| = |\mathbf a||\mathbf b| $
- $\mathbf a$と$\mathbf b$が垂直 $\iff \mathbf a \cdot \mathbf b = 0$
- $\mathbf a \cdot \mathbf a = |\mathbf a|^2$
- $-|\mathbf a| |\mathbf b| \leq \mathbf a \cdot \mathbf b \leq |\mathbf a| |\mathbf b|$
ベクトルの内積は、Chapter2で説明する行列積の計算にも登場するので、その定義をよく理解しておきましょう。
ベクトルの記法
これまではベクトルの要素を横に並べていましたが、このような記法でのベクトルを行ベクトルといいます。 一方、次のようにベクトルの要素を縦に並べる記法でのベクトルを列ベクトルといいます。 \[ \mathbf a = \begin{pmatrix} 3 \\ 1 \end{pmatrix} \] どちらの記法を使うかによる違いは特にないこともありますが、行列との演算を考える際には違いが生じてくるので注意しましょう。

Lesson 9
Chapter 2
行列
行列の定義
行列とは、スカラーを縦横に長方形上にして並べたもののことです。例えば以下のようなものがあります。
\begin{align*} A &= \begin{pmatrix} 1 & 3 & 4 & -1 \\ 2 & 0 & 10 & 3 \\ 1 & 1 & 4 & 2 \\ \end{pmatrix} \\ \\ B &= \begin{pmatrix} 5 & -3 \\ 1 & 3 \\ \end{pmatrix} \\ \\ C &= \begin{bmatrix} -1 & 2 \\ -2 & 5 \\ 0 & 4 \\ \end{bmatrix} \end{align*}上記のように、行列の括弧には$()$や$[]$が用いられます。また行列は大文字のアルファベットで表すことが多いです。
行列において、スカラーの横の並びを行、縦の並びを列といいます。行列は行がいくつか並んだものあるいは列がいくつか並んだものとして見ることができます。 行の数が$m$、列の数が$n$のとき、その行列を$m$行$n$列の行列あるいは$m$x$n$の行列などといい、またその行列の形状やサイズが$m$x$n$であるなどといいます。 上記の例では、$A$は3x4の行列、$B$は2x2の行列、$C$は2x3の行列ということになります。 $m=n$のときはその行列を正方行列と呼び、形状を述べるときは$m$次正方行列などといいます。上記の例では$B$のみが正方行列で、これは2次正方行列です。
行列内の各スカラーのことを行列の要素あるいは成分といい、行列$A$の$i$行$j$列成分を$A_{ij}$や行列$A$の$(i,j)$成分と書くことがあります。 上の例では$A_{12}=3$、$B_{22}=3$、$C_{31}=0$などとなります。
行列の知識は、現代の機械学習、特にニューラルネットワークを理解する上では非常に重要なので、しっかり身に着けていきましょう。
行列の演算
行列にもいくつかの演算が定義されていますので、それらを説明していきます。
まずは行列の足し算です。これはベクトルの足し算と同様、要素ごとの足し算を行います。 次はその例です。
\begin{align*} \begin{pmatrix} 2 & -1 \\ 4 & 5 \\ 1 & 5 \end{pmatrix} + \begin{pmatrix} 1 & 3 \\ -3 & -1 \\ 0 & 2 \end{pmatrix} &= \begin{pmatrix} 2+1 & (-1)+3 \\ 4+(-3) & 5+(-1) \\ 1+0 & 5+2 \end{pmatrix} \\ &= \begin{pmatrix} 3 & 2 \\ -2 & 4 \\ 1 & 7 \end{pmatrix} \end{align*}行列どうしの足し算では、2つの行列の形状が一致(つまり行の数も列の数も等しい)していなければなりません。
続いて行列の引き算です。これも要素ごとに引き算を行い、また行列の形状が一致している必要があります。 以下は計算例です。
\begin{align*} \begin{pmatrix} 2 & -1 \\ 4 & 5 \\ 1 & 5 \end{pmatrix} - \begin{pmatrix} 1 & 3 \\ -3 & -1 \\ 0 & 2 \end{pmatrix} &= \begin{pmatrix} 2-1 & (-1)-3 \\ 4-(-3) & 5-(-1) \\ 1-0 & 5-2 \end{pmatrix} \\ &= \begin{pmatrix} 1 & 2 \\ 7 & 6 \\ 1 & 3 \end{pmatrix} \end{align*}3つ目はスカラー倍です。ベクトルのスカラー倍と同様、すべての要素にスカラーを掛けます。 例えば次のようになります。
\begin{align*} 3\begin{pmatrix} 2 & -1 \\ 4 & 5 \\ 1 & 5 \end{pmatrix} &= \begin{pmatrix} 3\cdot 2 & 3\cdot (-1) \\ 3\cdot 4 & 3\cdot 5 \\ 3\cdot 1 & 3\cdot 5 \end{pmatrix} \\ &= \begin{pmatrix} 6 & -3 \\ 12 & 15 \\ 3 & 15 \end{pmatrix} \end{align*}さて、ここまで足し算、引き算、スカラー倍を紹介してきましたが、行列には掛け算もあります。 しかし、他に比べるとやや複雑な計算になるので、順を追って丁寧に説明していきます。
まず、Chapter1で説明したベクトルは、行の数または列の数が1つであるような行列とみなせることを述べておきます。 例えば3次元の行ベクトル$\mathbf a=(3,2,1)$は、1x3の行列とみなせます。 また、次のような2次元の列ベクトル$\mathbf b$は4x1の行列とみなせます。 \[ \mathbf b = \begin{pmatrix} 4 \\ 3 \\ 2 \\ 1 \end{pmatrix} \] さらに、行列とは行ベクトルを行の数だけ並べたもの、あるいは列ベクトルを列の数だけ並べたものとみなせます。
では、行列の掛け算の基本として、まずは行列と列ベクトルの掛け算を考えてみます。 このとき、形状に関する条件として、行列の列の数と列ベクトルの次元の数が一致していなければなりません。 例えば次のような2x3の行列$A$と3次元ベクトル$\mathbf b$の掛け算を考えてみましょう。 \[ A = \begin{pmatrix} 2 & -1 & 4 \\ 5 & 1 & 5 \end{pmatrix} \] \[ \mathbf b = \begin{pmatrix} -3 \\ 2 \\ 1 \end{pmatrix} \] 掛け算$\mathbf c=A\mathbf b$の結果$\mathbf c$は2x1の行列(あるいは2次元の列ベクトル)になります。2というのは行列$A$の行の数に対応しています。 では$\mathbf c$の各要素の値はどのように決まるのかというと、まず$A$を2つの行ベクトル$\mathbf a_1=(2, -1, 4)$、$\mathbf a_2=(5, 1, 5)$ が並んだものとみなし、3つの内積$\mathbf a_1 \cdot \mathbf b$、$\mathbf a_2 \cdot \mathbf b$、$\mathbf a_3 \cdot \mathbf b$を計算すると、それらが$\mathbf c$の各要素の値となります。 実際に計算を見てみましょう。
\begin{align*} \mathbf c &= A\mathbf b \\ &= \begin{pmatrix} \mathbf a_1 \\ \mathbf a_2\end{pmatrix} \mathbf b \\ &= \begin{pmatrix} \mathbf a_1 \cdot \mathbf b \\ \mathbf a_1 \cdot \mathbf b \end{pmatrix} \\ &= \begin{pmatrix} 2 \cdot (-3) + (-1) \cdot 2 + 4 \cdot 1 \\ 5 \cdot (-3) + 1 \cdot 2 + 5 \cdot 1 \end{pmatrix} \\ &= \begin{pmatrix} -4 \\ -8 \end{pmatrix} \end{align*}こうして行列$A$と列ベクトル$\mathbf b$の掛け算が計算できました。 慣れていくために他の計算例も示しておきます。以下は3x2の行列と2次元の列ベクトルとの掛け算です。
\begin{align*} \begin{pmatrix} 2 & -1 \\ 4 & 5 \\ 1 & 5 \end{pmatrix} \begin{pmatrix} -2 \\ 3 \end{pmatrix} &= \begin{pmatrix} 2\cdot(-2) + (-1)\cdot 3 \\ 4\cdot(-2) + 5\cdot 3 \\ 1\cdot(-2) + 5\cdot 3 \end{pmatrix} \\ &= \begin{pmatrix} -7 \\ 7 \\ 13 \end{pmatrix} \\ \end{align*}ではいよいよ行列の掛け算について説明します。 形状については、1つ目の行列の列の数と、2つ目の行列の行の数が一致している必要があります。 そこで$m$x$n$の行列$A$と$n$x$l$の行列$B$の掛け算$C=AB$を考えましょう。 まず、行列$B$をn次元の列ベクトル$\mathbf b_1$、$\mathbf b_2$、...、$\mathbf b_l$が横に並んだものとみなします。 そして、$A\mathbf b_1$、$A\mathbf b_2$、$A\mathbf b_l$を計算し、その結果である$l$個のm次元列ベクトルを横に並べたものが、$C$になります。 このとき掛け算の結果$C$は$m$x$l$の行列になります。
具体的な計算例を見てみましょう。ある3x2の行列とある2x2の行列の掛け算を計算してみます。
\begin{align*} \begin{pmatrix} 2 & -1 \\ 4 & 5 \\ 1 & 5 \end{pmatrix} \begin{pmatrix} 3 & 1 \\ -1 & -2 \end{pmatrix} &= \begin{pmatrix} 2\cdot 3 + (-1)\cdot (-1) & 4\cdot 3 + 5\cdot (-1) & 1\cdot 3 + 5\cdot (-1) \\ 2\cdot 1 + (-1)\cdot (-2) & 4\cdot 1 + 5\cdot (-2) & 1\cdot 1 + 5\cdot (-2) \end{pmatrix} \\ &= \begin{pmatrix} 7 & 7 & -2 \\ 4 & -6 & -9 \end{pmatrix} \\ \end{align*}行列の掛け算はやや複雑に感じられるかもしれませんが、実際にはベクトルの内積をとってそれらを並べているだけです。 慣れてくるとだんだん素早く計算できるようになるので、練習を積んでおくことが大切です。
行列の掛け算は非可換
注意すべきこととして、スカラーの掛け算とは異なり、行列の掛け算ではどちら側から掛けるかで結果が異なります。つまり、交換法則が成り立ちません。 $AB$という掛け算ができても$BA$という掛け算はできるとは限らない(形状に関する制約から)上、もしできたとしてもその結果は行列の形状や要素の値が一般には異なります。 このことから、行列$A$に対して行列$B$を掛けるとき、$AB$のようにすることを行列$B$を右から掛ける、$BA$のようにすることを行列$B$を左から掛けるといって区別するのが普通です。
行列の演算としては以上の他に転置をとることがあります。 行列$A$の転置(行列)とは、行列$A$の$(i,j)$成分が$(j,i)$成分になっているような行列のことで、$A^T$などと書きます。 そして、転置行列を得ることをよく転置をとるといいます。 例えば次の行列$A$の転置行列$A^T$はその下のようになります。転置をとると形状が$m$x$n$から$n$x$m$に変わることになります。 \[ A = \begin{pmatrix} 2 & 3 & -2 \\ -3 & 2 & 5 \end{pmatrix} \] \[ A^T = \begin{pmatrix} 2 & -3 \\ 3 & 2 \\ -2 & 5 \end{pmatrix} \] 転置は頻繁に出てくるので、この操作には慣れておきましょう。
では、ここまでに紹介した演算について成り立つ性質を以下に並べておきます。 なお以下の式ではいずれも可能な計算について述べている(つまり形状の制約を満たしている)ものとします。
- $(A+B)+C=A+(B+C)$
- $A+B=B+A$
- $A(BC)=(AB)C$
- $A^{TT}=A$
- $(A + B)^T = A^T + B^T$
- $(kA)^T=kA^T$($k$は定数)
- $(AB)^T=B^TA^T$
行列の演算においてどのようなことが成り立つのか、しっかり覚えておくとニューラルネットワークの理論を学習するのにも役立ちます。
行列式
行列式とは、正方行列に対して定義されるスカラーです。 行列$A$の行列式は$|A|$や$\det A$などと表されます。
まず2次正方行列の行列式を見てみます。以下のような行列$A$に対し、$|A|$はその下のように計算されます。
\[ A = \begin{pmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{pmatrix} \] \[ |A| = a_{11}a_{22} - a_{12}a_{21} \]以下は計算例です。
\begin{align*} \begin{vmatrix} 1 & 3 \\ -2 & 4 \end{vmatrix} &= 1\cdot 4 - 3 \cdot (-2) \\ &= 10 \end{align*}続いて3次正方行列の行列式についてです。以下のようになります。
\[ A = \begin{pmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{pmatrix} \] \[ |A| = a_{11}a_{22}a_{33} + a_{12}a_{23}a_{31} + a_{13}a_{21}a_{32} - a_{13}a_{22}a_{31} - a_{12}a_{21}a_{33} - a_{11}a_{23}a_{32} \]2次の場合に比べ複雑な式になっています。 4次以上になるとさらに複雑になってしまうので、具体的にどのようになるのかは述べませんが、 実は一般に、$n$次の正方行列$A$に対し行列式$|A|$は次のように定義されます。 \[ A = \begin{pmatrix} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{n1} & \cdots & a_{nn} \\ \end{pmatrix} \] \[ |A| = \sum_{\sigma\in S_n} \mathrm{sgn}(\sigma)a_{1_\sigma (1)}a_{2_\sigma (2)}\cdots a_{n_\sigma (n)} \] $S_n$というのは、1から$n$までの自然数のいずれかを受け取って1から$n$までの自然数のいずれかを返すような関数のうち全単射なもの(これは$n!$個ある)の集合を指し、 これを置換と呼びます。また$\mathrm{sgn}(\sigma)$で置換$\sigma$の符号を表します。 置換の例やその符号の定義についてはここでは触れないので、興味のある人は調べてみて、この定義が先ほど述べた2次や3次の場合の式と一致することを確かめてみてください。
行列式は後ほど述べる逆行列を求めるのに用いられたり、多重積分のヤコビアン(Lessom 8 参照)に登場したりします。
行列式の計算法
行列式は、もちろん先ほど述べた定義によって求めることができます。 しかしこれをそのまま用いると計算が大変なので、2次や3次の場合は先に紹介した公式を用いることが多いです。 また4次以上の行列に対しては、余因子展開というものを用いることができます。 これは、大きな正方行列の行列式の計算をより小さな正方行列の行列式の計算に帰着させるやり方です。 実際に手計算によって行列式を求めることは、少なくとも機械学習を学習する上ではあまりないと考えられますが、 これらの用語を知っておくだけでもいずれ役立つことはあります。頭にとどめておきましょう。
逆行列
行列式に続いて、逆行列も通常は正方行列に対して定義されます。 ただし、後に述べるように正方行列に対し逆行列が存在するとは限りません。
逆行列とは何かを説明する前に、単位行列について説明します。 単位行列とは、$(i,i)$成分がすべて1、それ以外の成分が0であるような正方行列のことです。 以下は、3次の単位行列です。 \[ I_3 = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix} \] 上のように、$n$次の単位行列をよく$I_n$と書きます。何次を気にしないときは$I$や$E$などと書くこともあります。 単位行列には、行列に左から掛けても右から掛けても元のままという性質があります。式で書くと次のようになります。 \[ A = IA = AI \] つまり、スカラーの掛け算における$1$と同じ性質があることがわかります(1をどんな数に掛けても変わらない)。
さて、スカラーにおいては逆数という概念がありました。 これは掛けたら1になるような数のことで、例えば$3$の逆数は$\dfrac{1}{3}$、$0.5$の逆数は$2$です。 それと同様に、逆行列とは掛けたら単位行列になるような行列のことを指します。 つまり、行列$A$の逆行列を$A^{-1}$とすると(このように書くことが多いです)、以下のことが成り立つことになります。 \[ I = AA^{-1} = A^{-1}A \] 上のように、行列$A$の逆行列をよく$A^{-1}$と書きます。
例を見てみましょう。次の2次の正方行列$A$を考えます。 \[ A = \begin{pmatrix} 1 & 2 \\ 5 & -1 \end{pmatrix} \] 行列$A$の逆行列$A^{-1}$は、次のようになります。 \[ A^{-1} = \begin{pmatrix} \dfrac{1}{11} & \dfrac{2}{11} \\ \dfrac{5}{11} & -\dfrac{1}{11} \end{pmatrix} \] 実際、次のようになります。 \begin{align*} \begin{pmatrix} 1 & 2 \\ 5 & -1 \end{pmatrix} \begin{pmatrix} \frac{1}{11} & \frac{2}{11} \\ \frac{5}{11} & -\frac{1}{11} \end{pmatrix} &= \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} = I_2 \\ \begin{pmatrix} \frac{1}{11} & \frac{2}{11} \\ \frac{5}{11} & -\frac{1}{11} \end{pmatrix} \begin{pmatrix} 1 & 2 \\ 5 & -1 \end{pmatrix} &= \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} = I_2 \end{align*}
逆行列は存在するとは限りません(例えばすべての成分が0であるような正方行列には逆行列は存在しません)。 正方行列に逆行列が存在するとき、その正方行列は正則であるといいます。 実は、以下のことが成り立ちます。 \[ det A \neq 0 \iff Aは正則 \] つまり、行列式が0でないとき逆行列は存在し、またそのときに限ります。
さて、正則な行列に対して、逆行列をどのように求めるのでしょうか。 代表的な手法は掃き出し法です。 これはまず$n$次の正方行列$A$に対し、単位行列$I_n$を右側に「つなげて」できる$n$x$2n$の行列を考えます。 この行列に対して、行基本変形(後述)を施し、左側の$n$x$n$の部分(もともと$A$だった部分)が単位行列$I_n$になるようにします。 このときの残りの部分(もともと$I_n$だった部分)が、$A$の逆行列$A^{-1}$になっています。 なお、左側の部分を行基本変形で単位行列化できない場合は$A$は正則でないということになります。
行基本変形とは、次の3つの操作を総称したものです。
- 1つの行のすべての要素を$k$倍する($k$は$0$でない定数)
- 2つの行を入れ替える
- ある行の$k$倍を他の行に加える($k$は定数)
行基本変形はある行列を掛けることで表現できたり、またその行列の逆行列が簡単に求まるなどの性質があります。
ちなみに、2次の正方行列$A$の逆行列は次の式で求めることができます。 \[ A = \begin{pmatrix} a & b \\ c & d \end{pmatrix} \] \[ A^{-1} = \dfrac{1}{\det A} \begin{pmatrix} d & -b \\ -c & a \end{pmatrix} \] $\dfrac{1}{\det A}$を掛けるのを忘れないようにしましょう。 正則な行列は行列式が0でないという事実と関連させて覚えておくとよいでしょう(もし行列式が$0$なら$\dfrac{1}{\det A}$は定義されない)。
行列式と同様、逆行列を手計算で求めることは機械学習を学ぶ上ではあまりありませんが、興味のある方は実際に掃き出し法をやってみたり、その結果得られた逆行列が逆行列としての条件を満たしているかを確認してみると良いでしょう。
固有値と固有ベクトル
最後に、固有値および固有ベクトルについて解説しておきます。 列ベクトルに正方行列を左から掛けたものは再び列ベクトルになりますが、このベクトルに対応する矢印の方向と元のベクトルに対応する矢印の方向は、一般には同じとは限りません。 しかし、列ベクトルの中には行列を掛けても矢印の方向が変わらないものもあります。このことは、$A$を正方行列、$\mathbf x$をベクトルとして、次のように表せます。 \[ A\mathbf x = \lambda \mathbf x \] $\lambda$はスカラーです。このようなとき、$\lambda$を正方行列$A$の固有値といい、$\mathbf x$を固有ベクトルといいます。 ただし固有ベクトルとしては零ベクトル(すべての要素が0であるベクトル)は考えません。
固有値および固有ベクトルは以下のような手順で求められます。
- $\lambda$についての方程式$\det(A-\lambda I)=0$(固有方程式)を解く。その解が固有値となる
- 求めた固有値それぞれについて、$(A-\lambda I)\mathbf x = 0$ となるようなベクトル$\mathbf x(\neq \mathbf 0)$を求める。 これが固有ベクトルとなる
固有値および固有ベクトルは多くの分野で利用されており、例えば Lesson 3 で紹介した主成分分析で用いられています。
