2019年8月31日の日本ディープラーニング協会(JDLA)のE資格合格を目指して、「JDLA認定プログラム」のひとつを受講開始しましたので、学習のまとめを書いていきます。
私の受講している講座は、ラビットチャレンジといってオンラインだけで受講するもので、質問が出来ない代わりに格安になっています。27歳以下なら特待生プログラム¥0というものあります。最新情報は以下のリンクからご確認ください。
日本ディープラーニング協会 E資格 JDLA認定プログラム受講記録(その2)
日本ディープラーニング協会 E資格 JDLA認定プログラム受講記録(その3)
日本ディープラーニング協会 E資格 JDLA認定プログラム受講記録(その4)
日本ディープラーニング協会 E資格 JDLA認定プログラム受講記録(その5)
日本ディープラーニング協会 E資格 JDLA認定プログラム受講記録(その6)
学習科目は以下のようになっています。
- 事前資料・予習教材
- 応用数学
- 機械学習
- 深層学習
#1.事前資料・予習教材
必須ではないですが、私は予備知識がないのでここから勉強してます。
内容は大きく3つ。
- AIとは、Python/パソコン入門
- ニューラルネットワークの順伝播、逆伝播、連鎖律の説明とPython+Numpyによる実装
ここがメイン - より高度な実装例
- Numpy編
- Chainer編
- TensorFlow編
- Keras編
- 為替データ編
最初のは全くの初心者向けで不要だった。最後は、説明されていないものの実装が突然出て来てわからなかったので、後まわしにしました。なのでここでは真ん中だけ書いておきます。
ニューラルネットワークの順伝播、逆伝播、連鎖律の説明とPython+Numpyによる実装
基本的なニューラルネットワークのPythonとNumpyによる実装が理解出来た。キーワードは以下の通り。
- 入力層
- 出力層
- 中間層
- パラメータ(ウエイト)
- 行列計算の基礎
- 活性化関数(sigmoid関数)
- 結果の評価方法
- 誤差関数(平均二乗誤差 Mean Squared Error)
- Pythonでの実装方法
- バイアス
- 逆伝播
- 微分、連鎖律
- 2層目の更新
- 1層目の更新
- 更新の公式
式を書くと以下のようになる。
$X^{(l)}$ : 入力
$W^{(l)}$: パラメーター(ウェイト)
$B^{(l)}$: バイアス
$Sig()$: シグモイド関数 $Sig(a) = \frac{1}{1+\exp(-a)}$
$Y$: 出力
$T$: 正解
とする。上付き括弧数字は層を表す。また$X$、$B$、$Y$、$T$はデータの個数分の要素からなるベクトル。
$W$は(出力先のデータ数)×(入力データ数)の行列。
$W$を掛けて$B$を足し、シグモイド関数に掛けると次の層に行く。教材では中間層ひとつだったので、以下のようにして2回で出力。
入力層~中間層($X^{(1)}\rightarrow X^{(2)}$)
\begin{align}
A^{(1)} &= W^{(1)}X^{(1)} + B^{(1)} \\
X^{(2)} &= Sig(A^{(1)}) \\
\end{align}
中間層~出力層($X^{(2)}\rightarrow Y$)
\begin{align}
A^{(2)} &= W^{(2)}X^{(2)} + B^{(2)} \\
Y &= Sig(A^{(2)}) \\
\end{align}
このように入力データ$X^{(1)}$が$X^{(2)}$となって中間層の入力となり、最後に出力$Y$となる。ここまでが順伝播。
出力結果は正しいデータ$T$と比較して誤差を評価するのだが、誤差関数というものを用いる。誤差関数にもいくつか種類があるようだが、ここでは、以下の式を使っている。
E = \frac{1}{2}\sum_k (Y - T)^2
次は逆伝播。結果を決めているのはウエイト$W$とバイアス$B$なので、誤差関数の値が小さくなるように$W$と$B$を更新する。$W$の更新は$E$を$W$で偏微分したものを$W$から引く。$B$の更新は$E$を$B$で偏微分したものを$B$から引く。
w_{kj}^{(l)} = w_{kj}^{(l)} - \frac{∂E}{∂w_{kj}^{(l)}} \\\
\\
b_{j}^{(l)} = b_{j}^{(l)} - \frac{∂E}{∂b_{j}^{(l)}}
ここではベクトルや行列ではなく、教材に合わせて要素で書いた。
$k$は対象層(第$l$層)の入力データを、$j$は出力データを示す。$w_{kj}^{(l)}$は、$l$層の$k$番目のデータを、次の層の$j$番目のデータに伝えるときに使われるウエイト。
3層、データ2個ずつの場合についての計算は以下のようになる。
$\frac{∂E}{∂w_{11}^{(2)}}$の場合
\begin{align}
E &= \frac{1}{2}\sum_{k}(y_{k}-t_{k})^2 \\
&= \frac{1}{2} \bigl\{ (y_{1}-t_{1})^2 + (y_{2}-t_{2})^2) \bigr\}
\end{align}
$w_{11}^{(2)}$は$y_{1}$のみ関係してくるから、$y_{1}$で偏微分すると、
\begin{align}
\frac{∂E}{∂y_{1}} &= \frac{1}{2}2(y_{1}-t_{1}) = y_{1}-t_{1} \\
\\
y_{1} &= Sig(a_{1}^{(2)}) = \frac{1}{1 + e^{-a_{1}^{(2)}}} \\
\\
\frac{∂y_{1}}{∂a_{1}^{(2)}} &= (1 - Sig(a_{1}^{(2)}))Sig(a_{1}^{(2)}) \\
\\
a_{1}^{(2)} &= x_{1}^{(2)}w_{11}^{(2)} + b_{2}^{(2)} \\
\\
\frac{∂a_{1}^{(2)}}{w_{11}^{(2)}} &= x_1^{(2)}
\end{align}
なので
\begin{align}
\frac{∂E}{w_{11}^{(2)}} &= \frac{∂E}{∂y_{1}}\frac{∂y_{1}}{∂a_{1}^{(2)}}\frac{∂a_{1}^{(2)}}{w_{11}^{(2)}} \\
&= (y_{1}-t_{1})(1 - Sig(a_{1}^{(2)}))Sig(a_{1}^{(2)})x_1^{(2)}
\end{align}
となる。
$\frac{∂E}{w_{11}^{(1)}}$の場合は、データが二つに分かれてやってくるので$y_{1}$と$y_{2}$の両方とも$w_{11}^{(1)}$の関数なのでもう少し面倒(割愛)。教材では、層の数、データ数に関係なく一般化された公式が与えられていて、
\begin{align}
\frac{∂E}{w_{kj}^{(l)}} &= g_{j}^{(l)}x_{k}^{(l)} \\
\frac{∂E}{b_{j}^{(l)}} &= g_{j}^{(l)} \\
\end{align}
$g_{j}^{(l)}$は共通の関数で、
更新対象が最終層の場合
\begin{align}
g_{j}^{(l)} &= (y_{j} - t_{j})f'(a_{j}^{(l)})
\end{align}
更新対象が最終層ではない場合
\begin{align}
g_{j}^{(l)} &= \sum_{i=1}^m(g_{i}^{(l+1)}w_{ji}^{(l+1)})f'(a_{j}(l))
\end{align}
偏微分が分かったので、$w$、$b$の更新
w_{kj}^{(l)} = w_{kj}^{(l)} - \frac{∂E}{∂w_{kj}^{(l)}} \\\
\\
b_{j}^{(l)} = b_{j}^{(l)} - \frac{∂E}{∂b_{j}^{(l)}}
が出来ることになる。これで材料が揃ったのでプログラミング出来るようになり、教材では、データ数が2-2-2の場合と、784-10-2の場合のサンプルプログラムと解説がついていた。どちらも数字の1か7を判別するという話になっていて、後者は実際の画像データということで、ひとつの画像が784個のデータからなるものが、13007組与えられていた。
前者は1組(2個)のデータとパラメータをプログラム内で適当に与えて、更新を100回繰り返して結果を表示するものだった。後者はモデルの学習と学習結果を使った分類とにプログラムが分かれていて、学習の方では、それぞれの組で1回の更新を行い、それを組数繰り返すというもの。Numpyでの実装では時間が掛かりすぎるということで、100個のデータのみを使った(101個使っているように見えるんだが。。。)計算になっており、Kerasで書き換えたサンプルプログラムもあって、記述も簡単でパフォーマンスも良くなるということである。
サンプルプログラムを学習していて、前者のプログラムで添え字の間違いが2か所あった(ソース無くてすみません)。
(誤)$A[l-1]\rightarrow$ (正)$A[l]$ ひとつずれている
(誤)$W[l][j, i]\rightarrow$ (正)$W[l][i, j]$ 添え字が逆
たまたま値は変わらないので動いてしまうが、データ数を変えたりするとエラーで落ちる。私は添え字や行列の縦横で良く混乱するので、これを調べたおかげで理解出来た。
プログラムについては中身の説明がなく申し訳ないですが、先に進みたいので許してください。とりあえずどんな勉強をしたのか雰囲気だけでも伝われば幸いです。いつか気が向いたら追記します。
2.応用数学
構成は以下の通り。
第一章 線形代数
第二章 確率統計
第三章 情報理論
第一章 線形代数
(1)スカラー、ベクトル、行列の基本と和、積
(2)固有値分解
(3)特異値分解
上記の構成になるが、特異値分解に他の要素が含まれているので、特異値分解さえできればよい。JDLAのシラバスでも線形代数は特異値分解しか書いていない。
(2) 固有値分解
(1)はスキップして(2)から説明します。
行列Aの固有値と固有ベクトルとは、
$$ A\vec{x} = \lambda\vec{x} $$
を満たす$ \vec{0} $以外の定数$\lambda$とベクトル$\vec{x}$。つまりベクトルに行列を掛けても、回転せずに同じ向きで大きさだけが変わる、そんな定数とベクトルのこと。
単位行列を$I$として変形すると、
$$ (A-\lambda I )\vec{x} = \vec{o} $$
$ (A-\lambda I ) $が逆行列を持ってしまうと、逆行列を左から掛けて$\vec{x}=\vec{o}$ になってしまうが、それは自明で意味がない。そうでない$\lambda$と$\vec{x}$があるとするなら、逆行列を持たない、つまり、行列式がゼロでなくてはならない。
\begin{vmatrix}
(A-\lambda I )
\end{vmatrix}
=0
これを解くと固有値$\lambda$が求まり、最初の式に代入して固有ベクトル$\vec{x}$が求まる。固有値と固有ベクトルがわかると、固有値分解できる。
行列$A$の固有値を、$\lambda_1, \lambda_2, \cdots$、固有ベクトルを、$\vec{v}_1, \vec{v}_2, \cdots$としたとき、
\Lambda =
\begin{pmatrix}
\lambda_1 \\
&\lambda_2 \\
&&\ddots
\end{pmatrix}
V =
\begin{pmatrix}
\vec{v}_1 & \vec{v}_2 &\cdots
\end{pmatrix}
とすると、
$$ AV = V\Lambda $$
と表せ
$$ A = V\Lambda V^{-1}$$
となる。この形が$A$の固有値分解。
(3) 特異値分解
固有値分解は正方行列しか出来ないが、そうでなくても似たようなことが出来る。それが特異値分解。
行列$M$に対して、
\begin{align}
M \vec{v} &= \sigma \vec{u} \\
M^T\vec{u} &= \sigma \vec{v}
\end{align}
となる単位行列$\vec{u}$、$\vec{v}$があれば特異値分解が出来る。
※単位行列である点が固有値分解と異なる。
$\vec{v_1},\vec{v_2},\cdots,\vec{u_1},\vec{u_2},\cdots,\sigma_1,\sigma_2,\cdots$から行列$V、U、S$を作ると
\begin{align}
MV &= US \\
M^TU &= VS^T
\end{align}
と書け、それぞれ
\begin{align}
M &= USV^{-1} \\
M^T &= VS^TU^{-1}
\end{align}
となる。最初の式が$M$の特異値分解。$MM^T、M^TM$は、それぞれ
\begin{align}
MM^T = USV^{-1}VS^TU^{-1} = USS^TU^{-1} \\
M^TM = VS^TU^{-1}USV^{-1} = VS^TSU^{-1}
\end{align}
と書ける($S$は一般には$\sum$と書くことが多いが、この講義では、総和の$\sum$と誤解しないように$S$を使っているとのこと)。そして、$MM^T、M^TM$は正方行列なので、固有値分解が出来て、上の式がそれらになる。つまり$M^TM$の固有値分解から$U$と$SS^T$が、$M^TM$の固有値分解から$V$と$S^TS$が求まるので、$V$、$S$も求まって、
$$M = USV^{-1}$$
の右辺が決まる。つまり$M$の特異値分解が出来る。
注意事項:
固有ベクトルは単位ベクトル(長さ=1)にすること($U、V$は単位行列)。
単位行列の逆行列は転置で良いので、$V^{-1}$は簡単に求められる。
特異値($S$の各値)は$MM^T、M^TM$の固有値($SS^T、S^TS$の各値)のルート
この説明の過程で、単位行列、逆行列、行列式の説明があった。
行列式の計算は、
\begin{vmatrix}
a_{11} & a_{12} & a_{13} \\
a_{21} & a_{22} & a_{23} \\
a_{31} & a_{32} & a_{33}
\end{vmatrix}
= a_{11}
\begin{vmatrix}
a_{22} & a_{23} \\
a_{32} & a_{33}
\end{vmatrix}
- a_{12}
\begin{vmatrix}
a_{21} & a_{23} \\
a_{31} & a_{33}
\end{vmatrix}
+ a_{13}
\begin{vmatrix}
a_{21} & a_{22} \\
a_{31} & a_{32}
\end{vmatrix} \\
だけ説明があったが、行数、列数が増えるとこれだけでは大変なので、以下の行列式の性質を覚えておくとよい。
- 行(列)を入れかえると符号が変わる
- 行(列)の要素をすべて定数C倍すると行列式の値もC倍される
- 二つの行(列)が等しいければ行列式はゼロになる
- ある行(列)を定数倍して他の行(列)に加えても行列式の値は変わらない。
※行に成り立つことは列にもそのまま成り立つ。
特異値分解の具体例
M =
\begin{pmatrix}
1 & 2 & 3 \\
3 & 2 & 1
\end{pmatrix}
の特異値分解を求める問題。
MM^T =
\begin{pmatrix}
1 & 2 & 3 \\
3 & 2 & 1
\end{pmatrix}
\begin{pmatrix}
1 & 3 \\
2 & 2 \\
3 & 1
\end{pmatrix}
=
\begin{pmatrix}
14 & 10 \\
10 & 14
\end{pmatrix}
$MM^T$の固有値、固有ベクトルを求めるのだが、
A = \frac{1}{2}MM^T =
\begin{pmatrix}7 & 5 \\ 5 & 7\end{pmatrix}
\\
として$A$の固有値$\lambda_{A}$、固有ベクトル$\vec{v_A}$を求めてからあとで固有値を2倍にする(大して楽にはならないが数値によっては役に立つので一応やっておく)。
\begin{align}
\begin{vmatrix}A\end{vmatrix} =
\begin{vmatrix}
7 - \lambda_{A} & 5 \\
5 & 7 - \lambda_{A}
\end{vmatrix}
&= 0 \\\
\\
(7 - \lambda_{A})^2 - 5 ^ 2 &= 0 \\
\lambda_{A} &= 12, 2
\end{align}
となって、求めたい$MM^T$の固有値は、$\lambda=24,4$となる。
固有ベクトルは、$\lambda_A=12$のとき、
\begin{pmatrix}7 & 5 \\ 5 & 7\end{pmatrix}
\begin{pmatrix}x \\ y\end{pmatrix} = 12\begin{pmatrix}x \\ y\end{pmatrix}
より、$x = y$となり、固有ベクトルは、
\vec{v_{A1}} = t_1\begin{pmatrix}1 \\ 1\end{pmatrix}
と書ける。$\lambda_{A} = 2$の時も同様に計算して、
\vec{v_{A2}} = t_2\begin{pmatrix}-1 \\ 1\end{pmatrix} \\
となる。$t_{1}、t_{2}$を$(\vec{v_{A1}}\quad\vec{v_{A2}})$が単位行列となるように定めると、$MM^T$の固有値分解は、
MM^T =
\begin{pmatrix}
\frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}
\end{pmatrix}
\begin{pmatrix}
24 & 0 \\ 0 & 4
\end{pmatrix}
\begin{pmatrix}
\frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}
\end{pmatrix}^{-1} \\
となる。すなわち、
U =
\begin{pmatrix}
\frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}
\end{pmatrix}
\\\
\\
SS^T =
\begin{pmatrix}
24 & 0 & 0\\ 0 & 4 & 0
\end{pmatrix}
$U$は左特異ベクトルとよぶ。$SS^T$は各値が特異値の2乗になっている。
次に$V^{-1}$を求めるために、$M^TM$を固有値分解する。
S^TS =
\begin{pmatrix}
24 & 0 & 0\\
0 & 4 & 0\\
0 & 0 & 0
\end{pmatrix}
となるはずだが、固有値も念のため計算してみた。
M^TM =
\begin{pmatrix}
1 & 3 \\
2 & 2 \\
3 & 1
\end{pmatrix}
\begin{pmatrix}
1 & 2 & 3 \\
3 & 2 & 1
\end{pmatrix}
=
\begin{pmatrix}
10 & 8 & 6 \\
8 & 8 & 8 \\
6 & 8 & 10
\end{pmatrix}
先ほどど同様に、
B = \frac{1}{2}
\begin{pmatrix}
5 & 4 & 3 \\
4 & 4 & 4 \\
3 & 4 & 5
\end{pmatrix}
として $B$ の固有値 $\lambda_{B}$ 、固有ベクトル $\vec{v_B}$ を求めて、あとで$\lambda_{B}$を2倍する。
\begin{vmatrix}B\end{vmatrix} =
\begin{vmatrix}
5 - \lambda_{B} & 4 & 3 \\
4 & 4 - \lambda_{B} & 4 \\
3 & 4 & 5 - \lambda_{B}
\end{vmatrix}
= 0 \\
こちらは行列式の各性質を使った方が簡単。
まず、1行目から3行目を引く
\begin{vmatrix}
2 - \lambda_{B} & 0 & \lambda_{B} - 2\\
4 & 4 - \lambda_{B} & 4 \\
3 & 4 & 5 - \lambda_{B}
\end{vmatrix}
= 0 \\
1行目を$2-\lambda_{B}$で割って外に出す。
(2-\lambda_{B})
\begin{vmatrix}
1 & 0 & -1\\
4 & 4 - \lambda_{B} & 4 \\
3 & 4 & 5 - \lambda_{B}
\end{vmatrix}
= 0 \\
3列目に1列目を加える。
(2-\lambda_{B})
\begin{vmatrix}
1 & 0 & 0\\
4 & 4 - \lambda_{B} & 8 \\
3 & 4 & 8 - \lambda_{B}
\end{vmatrix}
= 0 \\
これで$2\times2$の行列式に出来た。
(2-\lambda_{B})
\begin{vmatrix}
4 - \lambda_{B} & 8 \\
4 & 8 - \lambda_{B}
\end{vmatrix}
= 0 \\\
\\
(2 - \lambda_{B})\{(4 - \lambda_{B})(8 - \lambda_{B}) - 4\times 8\} = 0 \\\
\\
\lambda_{B}(2 - \lambda_{B})(\lambda_{B} - 12) = 0 \\\
\\
\lambda_{B} = 12, 2, 0
となって、求めたい固有値はその2倍なので、$\lambda=24, 4, 0$となった。
次に$B$の固有ベクトル$\vec{v_B}$を求める。
$\lambda_{B} = 12$の場合
\begin{pmatrix}
5 & 4 & 3 \\
4& 4 & 4 \\
3 & 4 & 5
\end{pmatrix}
\begin{pmatrix}
x \\ y \\ z
\end{pmatrix}
= 12
\begin{pmatrix}
x \\ y \\ z
\end{pmatrix} \\\
\\
7x - 4y - 3z = 0 \\
4x - 8y - 4z = 0 \\
3x + 4y - 7z = 0 \\\
\\
x = y = z
となるので、
\vec{v_{B1}} = t_1\begin{pmatrix}1 \\ 1 \\ 1\end{pmatrix} \\
\\
$\lambda_{B} = 2$の場合
\begin{pmatrix}
5 & 4 & 3 \\
4& 4 & 4 \\
3 & 4 & 5
\end{pmatrix}
\begin{pmatrix}
x \\ y \\ z
\end{pmatrix}
= 2
\begin{pmatrix}
x \\ y \\ z
\end{pmatrix} \\\
\\
\begin{align}
3x + 4y + 3z &= 0 \\
4x + 2y + 4z &= 0 \\
3x + 4y + 3z &= 0 \\\
\end{align}
\\
より、$y = 0, z = -x$となり、固有ベクトルは、
\vec{v}_{B2} = t_{2}\begin{pmatrix}1 \\ 0 \\ -1\end{pmatrix}
$\lambda_{B} = 0$の場合
\begin{pmatrix}
5 & 4 & 3 \\
4& 4 & 4 \\
3 & 4 & 5
\end{pmatrix}
\begin{pmatrix}
x \\ y \\ z
\end{pmatrix}
= 0\times
\begin{pmatrix}
x \\ y \\ z
\end{pmatrix}
=
\begin{pmatrix}
0 \\ 0 \\ 0
\end{pmatrix}
\\\
\\
\begin{align}
5x + 4y + 3z &= 0 \\
4x + 4y + 4z &= 0 \\
3x + 4y + 5z &= 0 \\\
\end{align}
\\
より、$x = z, y = -2x$となり、固有ベクトルは、
\vec{v}_{B3} = t_{3}\begin{pmatrix}1 \\ -2 \\ 1\end{pmatrix}
となる。$t_{1}、t_{2}、t_{3}$を$(\vec{v_{B1}}\quad\vec{v_{B2}}\quad\vec{v_{B3}})$が単位行列となるように定めると、$M^TM$の固有値分解は、
\begin{align}
M^TM &=
\begin{pmatrix}
\frac{1}{\sqrt{3}} & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{6}} \\
\frac{1}{\sqrt{3}} & 0 & -\frac{2}{\sqrt{6}}\\
\frac{1}{\sqrt{3}} & -\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{6}}
\end{pmatrix}
\begin{pmatrix}
24 & 0 & 0 \\ 0 & 4 & 0 \\ 0 & 0 & 0
\end{pmatrix}
\begin{pmatrix}
\frac{1}{\sqrt{3}} & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{6}} \\
\frac{1}{\sqrt{3}} & 0 & -\frac{2}{\sqrt{6}}\\
\frac{1}{\sqrt{3}} & -\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{6}}
\end{pmatrix}
^{-1} \\
\\
&=
\begin{pmatrix}
\frac{1}{\sqrt{3}} & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{6}} \\
\frac{1}{\sqrt{3}} & 0 & -\frac{2}{\sqrt{6}}\\
\frac{1}{\sqrt{3}} & -\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{6}}
\end{pmatrix}
\begin{pmatrix}
24 & 0 & 0 \\ 0 & 4 & 0 \\ 0 & 0 & 0
\end{pmatrix}
\begin{pmatrix}
\frac{1}{\sqrt{3}} & \frac{1}{\sqrt{3}} & \frac{1}{\sqrt{3}} \\
\frac{1}{\sqrt{2}} & 0 & -\frac{1}{\sqrt{2}} \\
\frac{1}{\sqrt{6}} & -\frac{2}{\sqrt{6}} & \frac{1}{\sqrt{6}}
\end{pmatrix}
\end{align}
となる。すなわち、
\begin{align}
V^{-1} &=
\begin{pmatrix}
\frac{1}{\sqrt{3}} & \frac{1}{\sqrt{3}} & \frac{1}{\sqrt{3}} \\
\frac{1}{\sqrt{2}} & 0 & -\frac{1}{\sqrt{2}} \\
\frac{1}{\sqrt{6}} & -\frac{2}{\sqrt{6}} & \frac{1}{\sqrt{6}}
\end{pmatrix}
\\\
\\
S^TS &=
\begin{pmatrix}
24 & 0 & 0 \\ 0 & 4 & 0 \\ 0 & 0 & 0
\end{pmatrix}
\end{align}
※$V$は単位行列なので、$V^{-1} = V^T$
よって$M$の特異値分解は、
\begin{align}
M &= USV^{-1} \\
&= \begin{pmatrix}
\frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}
\end{pmatrix}
\begin{pmatrix}
2\sqrt{6} & 0 & 0 \\ 0 & 2 & 0
\end{pmatrix}
\begin{pmatrix}
\frac{1}{\sqrt{3}} & \frac{1}{\sqrt{3}} & \frac{1}{\sqrt{3}} \\
-\frac{1}{\sqrt{2}} & 0 & -\frac{1}{\sqrt{2}} \\
\frac{1}{\sqrt{6}} & -\frac{2}{\sqrt{6}} & \frac{1}{\sqrt{6}}
\end{pmatrix}
\end{align}
特異値分解は、小さな特異値を切り捨てることにより、データの特徴を出来るだけ損なわずに次元圧縮するような場合に用いられるそうです。
第二章 確率・統計
1. 頻度確率(客観確率)とベイズ確率(主観確率)
**頻度確率(客観確率)**とは、10本のうち1本あたり、100人のうち30人が・・・のように、複数回の試行あるいは母集団のうちどれくらいに起こるかということで確率をあらわすもの。
**ベイズ確率(主観確率)**ある事象が起こることを確率で表現する。例)「あなたは40%の確率でインフルエンザです」この場合、複数回試行出来たりする必要はない。信念の度合い。
2. 条件付確率
事象$X$$=$x$という条件下で$Y=y$が起きる確率。
P(Y=y|X=x) = \frac{P(Y=y, X=x)}{P(X=x)}
3. 独立な事象が同時に起こる確率
お互いに発生には因果関係のない事象$X$$=$$x$と$Y=y$が同時に発生する確率
P(X=x, Y=y) = P(X=x)P(Y=y) = P(Y=y, X=x) \\
$X=x, Y=y$を入れ替えても変わらないということが意外と重要。
独立なら条件付確率も条件のない確率も同じ、と考えると、条件付確率の式から、
P(Y=y|X=x) = \frac{P(Y=y, X=x)}{P(X=x)} = P(Y=y) \\
4. ベイズ則
P(X=x|Y=y)P(Y=y) = P(Y=y|X=x)P(X=x) \\
となり、これは上の条件付確率の式と同じこと。
事象$X$と事象$Y$の確率、およびひとつの条件付確率がわかっていれば、条件を入れ替えたもう一方の条件付確率もわかる。
5. 確率変数と確率分布
確率変数とは事象または事象をさす数値(賞金など)。
確率分布事象の発生する確率の分布。離散的であれば表に示せる。
6. 期待値
平均値 or ありそうな値
離散値
E(f) = \sum_{k=1}^n P(X=x_k)f(X=x_k) \\
連続値
E(f) = \int P(X=x)f(X=x)dx \\
7. 分散と共分散
分散 データの散らばり具合
\begin{align}
Var(f) &= E\bigl((f_{(X=x)}-E(f))^2) \\
\\
&= E(f^2 - 2fE(f) + (f(E))^2) \\
\\
&= E(f^2) - E(2fE(f)) + E((f(E))^2 \\
\\
&= E(f^2)-(E(f))^2 \\
\end{align}
\\\
分散ゼロは全てが平均値
2乗しているのは絶対値より計算上扱いやすいため
共分散 2つのデータ系列の傾向の違い
\begin{align}
Cov(f,g) &= E\bigl((f_{(X=x)} - E(f))(g_{Y=y}-E(g))) \\
\\
&= E(fg - fE(g) - E(f)g -E(f)E(g)) \\
\\
&= E(fg) - E(fE(g)) - E(E(f)g) -E(E(f)E(g)) \\
\\
&= E(fg) - E(f)E(g) - E(f)E(g) -E(f)E(g) \\
\\
&= E(fg) - E(f)E(g)
\end{align}
- 正の値なら似た傾向
- 負の値なら逆の傾向
- ゼロなら関係性に乏しい
※絶対ではない。関係があってもゼロになることもある。
8. 様々な確率分布
(1) ベルヌーイ分布
値を2つしかとらない。
P(x|\mu) = \mu(1-\mu)^{1-x} \\
事象を2つに分ければなんでもベルヌーイ分布で表せる。
\begin{cases}
P(X=0) = 1-\mu \\
\\
P(X=1) = \mu
\end{cases}
と同じ
(2) マルチヌーイ(カテゴリカル)分布
ベルヌーイ分布の事象の種類が増えたもの
\begin{cases}
\begin{align}
P(X=1) &= \lambda_{1} \\
P(X=2) &= \lambda_{2} \\
P(X=3) &= \lambda_{3} \\
&\vdots
\end{align}
\end{cases}
(3) 二項分布
ベルヌーイ分布の多試行版
P(x|\lambda,n) = \frac{n!}{x!(n-x)!}\lambda^x(1-\lambda)^{n-x}
$n$は試行回数
$x$回、確率$\mu$の事象が起き、$(n-x)$回、確率$(1-\mu)$の事象が起きる確率。
組合せの数$\frac{n!}{x!(n-x)!}$だけ掛ける必要がある。
(4) ガウス分布
N(x; \mu,\sigma^2) = \sqrt {\frac{1}{2\pi\sigma^2}}\exp(-\frac{1}{2\sigma^2}(x-\mu)^2)
最初は、山型の関数として、
f = e^{-|x|}
を考えた。扱いやすくするために絶対値の代わりに2乗した。
f = e^{-x^2}
平均を$\mu$、総和を1とするために補正して出来たのが最初の式。
第三章 情報理論
1.自己情報量
確率が低いことが起きた方が情報として価値が高い。したがって、情報量は、確率が低いほど大きくなるように設定する必要がある。また二つの事象が起きる確率は積になるが、情報量は加法性が成り立つようにしたい。そこで、自己情報量$I(x)$は、確率$P(x)$の逆数の対数として定義される。
I(x) = -log(P(x)) = log(W(x)) \\
対数の底が2のとき、単位はビット。ネイピア数のとき単位は$nat$となる。
$\frac{1}{2}$のことが起きたことを知ったら、その情報量は1ビットであり、$\frac{1}{8}$であれば、3ビットとなる。
人は変化の量ではなく割合を認識するので、10のものが11になっても気づきにくいが、1のものが2に増えれば気づきやすい。全体の量を$W$、変化量を$\Delta{W}$情報量の変化量を$\Delta{I}$とすると、
\begin{align}
\Delta{I} &= \frac{\Delta{W}}{W} \\
であるから、これを変形して、 \\
dI &= \frac{dW}{W} \\
\\
積分して、\\
\\
\int dI &= \int \frac{dw}{W} \\
\\
I &= \log (W)
\end{align}
となって、最初と同じ式になる。
2. シャノンエントロピー
平均情報量とも言い、自己情報量の期待値。
\begin{align}
H(x) &= E(I(x)) \\
\\
&= -E(log(P(x)))\\
\\
&=-\sum(P(x)log(P(x))
\end{align}
ある確率分布からどれくらいの情報量が得られそうかを表す。完全に結果がわかっているものは結果を見ても情報は得られない。つまり期待される情報量はゼロになる。例えば、かならず1が出るサイコロでは、
\begin{align}
H(X) &= -(1\times log(1) + 0\times log(0) + \cdots)
&=0
\end{align}
となる。
3. カルバック・ライブラー ダイバージェンス
ふたつの確率分布$P$、$Q$の差を計るもの。
カルバック・ライブラー情報量、カルバック・ライブラー距離とも呼ばれるが距離の公理は満たさない。
\begin{align}
D_{kL}(P||Q) &= E_{(x~P)}\Bigl[log \frac{P(x)}{Q(x)} \Bigr ] \\
\\
&= E_{(x~P)}[log P(x) - log Q(x)]
\end{align}
$Q$の情報量から$P$の情報量を引いたもの$(-log Q(x)) - (-log P(x))$の平均をとっている。
これは事前分布が$Q(x)$のとき、新たなデータが得られて事後分布が$P(x)$とわかったとき、どれだけニュースとしての価値(情報量)が減ったかを示すものなので、平均をとるときの確率としては$P(x)$を使っている。違いがまったくなければゼロになる。
4. 交差エントロピー
- $K$$L$ダイバージェンスの一部分を取り出したもの。($D_{kL}(P||Q) = -E_{(x~P)}(\log Q(x)) - H(p)$なので$-H(P)$の部分をとったもの)
- $Q$についての自己情報量を$P$の分布で平均している(ふたつの分布を交差させたエントロピー)。
\begin{align}
H(P, Q) &= H(P) + D_{KL}(P||Q) \\
H(P, Q) &= -E_{x~P} \quad log Q(x)
\end{align}
おそらく通信量が限られていた時代に、仮定した情報量と実際の情報量の違いを評価するためにできたもの。
$P$、$Q$に差が無ければ、
H(P,Q) = H(P) = H(Q)
となる。