概要
機械学習の内容理解には線形代数の知識が必要そうなことが分かりました。
行列の計算くらいは出来ますが、そもそも行列がどういう役割を果たすものなのかさっぱりンコなので
この機会に勉強することにしました。
入門書としてオススメされていた「プログラミングのための線形代数」を取り組みんでいきます。
忘備録として重要そうなところをまとめていきます。
基底について
原点のみが与えられる空間を線形空間と呼ぶ。
イメージとしては白紙の上に原点Oがあるだけの世界。この空間では目盛りも方向もなく、長さや角度は定義されていない。
この真っ白な世界に番地を振るのが基底の役割。
基底の条件
①どんなベクトル $\vec{v}$でも
$$\vec{v} = x_1\vec{e_1}+…+x_n\vec{e_n}$$
という形で表せる($x_1,...,x_n$は任意の数)
②しかも、その表し方は1通りだけ
それぞれ解説すると、①はどの土地にも番地がついている、②は1つの土地には番地が1つだけ、という意味。
平面空間で1本のベクトルでは足りず、3本では多すぎる。
同じ方向のベクトルを用意しても意味ないよ、ということ。
行列と写像
ベクトルという「対象」間の関係を示す便利な表記方法。
例えば、
肉を $x_1$ グラム($a_1$円、$b_1$カロリー)、 豆を $x_2$ グラム($a_2$円、$b_2$カロリー)、 米を $x_3$ グラム($a_3$円、、$b_3$カロリー)買いました。合計でいくらでしょう?また、合計で何カロリーになるでしょう?
という問題は、
y_1(金額) = a_1x_1+a_2x_2+a_3x_3 \\
y_2(カロリー) = b_1x_1+b_2x_2+b_3x_3
となり、行列で表すと
\begin{pmatrix}
y_1 \\
y_2
\end{pmatrix} =
\begin{pmatrix}
a_1&a_2&a_3 \\
b_1&b_2&b_3
\end{pmatrix}
\begin{pmatrix}
x_1 \\
x_2\\
x_3
\end{pmatrix}
と表すことができる。
これが「行列とベクトルの積」である。
この時、行列の列数が「入力」の次元数、行数が「出力」の次元数となる。
$n$次元ベクトル$x$に$m \times n$行列を掛けると、$m$次元ベクトル$y=Ax$が得られる。
つまり、行列$A$はベクトルを別のベクトルに移す写像が定まるということ。
行列を見たら数の集まりではなく写像として認識しよう。
逆行列
$A$が逆行列を持つ(正則行列)とき、
$x=A^{-1}y$
により行列により変換される前のベクトルが求まる。
たちが悪い行列の場合、変換前後の次元が異なったり(①)、変換前のベクトルがユニークに定まらなかったり(②)する場合がある。(ベクトルがぺしゃんこになる)
①\begin{pmatrix}
*\\
*\\
*
\end{pmatrix} =
\begin{pmatrix}
*&*&*\\
*&*&*
\end{pmatrix} \times
\begin{pmatrix}
*\\
*\\
*
\end{pmatrix}
\\
\\
②A=\begin{pmatrix}
0.8&-0.6\\
0.4&-0.3
\end{pmatrix}
ポイントは、
1. 同じ結果$y$が出るような原因$x$は唯一か(単射)
2. どんな結果$y$にも、それが出るような原因$x$が存在するか(全射)
である。
写像$A$でぺしゃんこになる次元数を$KerA$、写像にて変換された$y$の集合を$ImA$と呼ぶ。
$KerA$が原点のみの場合、写像は単射であり、$ImA$が「行き先の全空間」に一致する場合、写像は全射である。
変換後のベクトルがぺしゃんこになってしまうということは、元は別々のベクトルなのに変換後は同じになってしまう場合がある。
つまり、$Ax=Ax'$が成り立つ。
\begin{pmatrix}
a_1,...a_n\\
\end{pmatrix} \times
\begin{pmatrix}
x_1\\
.\\
.\\
.\\
x_n
\end{pmatrix} =
\begin{pmatrix}
a_1,...a_n\\
\end{pmatrix} \times
\begin{pmatrix}
x'_1\\
.\\
.\\
.\\
x'_n
\end{pmatrix}
このような$a_1...a_n$を線形従属であるといい、$Ax≠Ax'$の場合は線形独立であるという。
終わりに
多次元の計算がいっぺんに出来る行列の便利さが何となく分かりました。
ただ、概念的な部分が多いためまとめるのが難しい…