#はじめに
本記事は、E資格の受験資格の取得を目的としたラビットチャレンジを
受講した際の勉強記録およびレポート記事である。
##ニューラルネットワークでできること
□回帰
・結果予想_売上予測、株価予想
・ランキング_競馬順位予想、人気順位予想
□分類
・猫写真の判別
・手書き文字認識
・花の種類分類
##Section1)入力層~中間層
■確認テスト
入力層から中間層への情報の伝播を動物の例に合わせて図示せよ。
■確認テスト
下記の数式をPythonで書け。
$ u = w_{1}x_{1} + w_{2}x_{2} + w_{3}x_{3} + w_{4}x_{4} + b = Wx + b $
解答:u1 = np.dot(x, W1) + b1
・実習演習結果
##Section2)活性化関数
□活性化関数
ニューラルネットワークにおいて、次の層への出力の大きさを決める
非線形の関数。
入力値のによって、次の層への信号のON/OFFや強弱を定める働きをもつ。
■確認テスト
線形と非線形の違いを図にかいて簡易に説明せよ。
□ステップ関数
閾値を超えたら発火する関数であり、出力は常に1か0。
パーセプトロン(ニューラルネットワークの前身)で利用された関数。
課題:0~1間を表現できず、線形分離可能なものしか学習できない。
$f(x) = \biggl\{
\begin{array}{ll}
1 & (x \geqq 0) \\
0 & (x \lt 0)
\end{array}$
□シグモイド関数
0~1間を緩やかに変化する関数。
信号の強弱を伝えられるようになり、予想ニューラルネットワーク普及の
きっかけとなった。
課題:大きな値では出力の変化な微小なため、勾配消失問題を引き起こす
ことがあった。
$ \smash{ f(x) = \dfrac{1}{1 + e^{-x}} }$
□ReLU関数
今最も使われている活性化関数。
勾配消失問題の回避とスパース化に貢献することで良い成果をもたらしている。
$f(x) = \biggl\{
\begin{array}{ll}
x & (x \geqq 0) \\
0 & (x \lt 0)
\end{array}$
##Section3)出力層
■確認テスト
平均二乗誤差においてなぜ、引き算でなく二乗するか?
1/2はどういう意味を持つか述べよ。
解答
・2乗する理由
引き算をを行うだけでは、各ラベルでの誤差で正負両方の値が発生し
全体の誤差を正しく表すのに都合が悪い。2乗してそれぞれのラベルでの
誤差を正の値になるようにする。
・1/2する理由
実際にネットワークを学習するときに行う誤差逆伝搬の計算で誤差関数の
微分を用いるが、その際の計算式を簡単にするため。
本質的な意味はない。
解答
①return y.T
②np.exp(x)
③np.sum(np.exp(x),axis=0)
□2乗和誤差
$\smash { E(y) = \dfrac{1}{2}\sum_{j=1}^{J}(y_{j}-d_{j})^{2} = \dfrac{1}{2}||y - d||^{2} }$
解答
①、②:return -np.sum(np.log(y[np.arange(batch_size), d] + 1e-7)) / batch_size
##Section4)勾配降下法
■確認テスト
オンライン学習とは何か。
解答:学習データが入ってくるたびに都度パラメータを更新し、学習を
進めていく方法。
■確認テスト
下記の数式の意味を図に書いて説明せよ。
$w^{t+1} = w^{t} - \varepsilon \times \nabla E_{t}$
##Section5)誤差逆伝搬法
微分の連鎖律を用いて誤差勾配の計算を行う。
$\smash { E(y) = \dfrac{1}{2}\sum_{j=1}^{J}(y_{j}-d_{j})^{2} = \dfrac{1}{2}||y - d||^{2} }$ :誤差関数 = 二乗誤差関数
$y = u^{(L)}$ :出力層の活性化関数 = 恒等写像
$u^{(l)} = w^{(l)}z^{(l-1)} + b^{(l)}$ :総入力の計算
\frac{\partial E)}{\partial w_{ji}^{(2)}}=\frac{\partial E}{\partial y}\frac{\partial y}{\partial u}\frac{\partial u}{\partial w_{ji}^{(2)}}=
(y-d)
\left[
\begin{array}{r}
0 \\
\vdots \\
z_{j} \\
\vdots \\
0 \\
\end{array}
\right]
=(y_{i}-d_{i})z_{i}