【ラビットチャレンジ(E資格)】深層学習Day1


はじめに

本記事は、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}