無限不可能性ドライブ

『ニューラルネットワーク自作入門』に刺激されてExcelVBAでニューラルネットワークを作ってみたものの、やっぱり数学やらなきゃと思い少しずつやってきたのもあって、自分の知識の整理とかそういった感じです。

【数式編】(逆伝播)2つめの隠れ層の重みとバイアスを更新する 1-(1)

f:id:celaeno42:20181007215631p:plain

隠れ層の重みの更新式

今回から、隠れ層の重みとバイアスの更新式についてみていきます。
今回は、2層目の隠れ層の1つめのユニット ユニットh21 の重み  w_{11}^3 についてみていきましょう。
隠れ層でも重みの更新式は以下のようにあらわすことができます。


 \displaystyle w_{11}^3 ← w_{11}^3 - \eta \nabla E

 \displaystyle \nabla E =  \frac{\partial E}{\partial w_{11}^3} = \frac{\partial E}{\partial u_1^3} \frac{\partial u_1^3}{\partial w_{11}^3}

連鎖率(チェインルール)

 \displaystyle \frac{\partial E}{\partial u_1^3} を求めるにあたっては注意が必要です。

損失関数の計算式を再掲してみましょう。


 \displaystyle E =  -\sum_{k=1}^3 t_k \log z_k^4 = -(t_1 \log z_1^4 + t_2 \log z_2^4 + t_3 \log z_3^4 )


上のニューラルネットワークの図からもわかるように、 z_1^4, z_2^4, z_3^4 を求めるにあたっては、
それぞれで、 u_1^3 の値が計算に利用されています。
損失関数を  u_1^3偏微分するには、それら  u_1^3 が影響を及ぼした値も考慮する必要があります。

よって  \displaystyle \frac{\partial E}{\partial u_1^3} を求める式は、連鎖率によって次のようになります。


 \displaystyle \begin{align}
\frac{\partial E}{\partial u_1^3} &= \frac{\partial E}{\partial z_1^4} \frac{\partial z_1^4}{\partial u_1^4} \frac{\partial u_1^4}{\partial z_1^3} \frac{\partial z_1^3}{\partial u_1^3} \\
\\
&+ \frac{\partial E}{\partial z_2^4} \frac{\partial z_2^4}{\partial u_2^4} \frac{\partial u_2^4}{\partial z_1^3} \frac{\partial z_1^3}{\partial u_1^3} \\
\\
&+ \frac{\partial E}{\partial z_3^4} \frac{\partial z_3^4}{\partial u_3^4} \frac{\partial u_3^4}{\partial z_1^3} \frac{\partial z_1^3}{\partial u_1^3}
\end{align}


かなり複雑な式になりましたが、ひとつひとつみていけばそれほど難しくないことがわかります。

1つめのかたまり

まずは1つめのかたまりについて見ていきましょう。


 \displaystyle \frac{\partial E}{\partial z_1^4} \frac{\partial z_1^4}{\partial u_1^4} \frac{\partial u_1^4}{\partial z_1^3} \frac{\partial z_1^3}{\partial u_1^3}


の部分です。
左から第1項め、第2項め、第3項め、第4項めとします。

・第1項めと第2項めについて

第1項めと第2項めをまとめます。


 \displaystyle \frac{\partial E}{\partial z_1^4} \frac{\partial z_1^4}{\partial u_1^4} = \frac{\partial E}{\partial u_1^4}


実は、 \displaystyle \frac{\partial E}{\partial u_1^4} は出力層の逆伝播で求めていて、


 \displaystyle \frac{\partial E}{\partial z_1^4} \frac{\partial z_1^4}{\partial u_1^4} = \frac{\partial E}{\partial u_1^4} = z_1^4 - t_1


となっています。

・第3項めについて

第3項めは  \displaystyle \frac{\partial u_1^4}{\partial z_1^3} です。
 u_1^4 は出力層の順伝播で求めているように以下の式になります。


\displaystyle u_1^4 = w_{11}^4 z_1^3 + w_{12}^4 z_2^3 + w_{13}^4 z_3^3 + w_{14}^4 z_4^3 + b_1^4


よって


 \displaystyle \frac{\partial u_1^4}{\partial z_1^3} = w_{11}^4


・第4項めについて

第4項めは  \displaystyle \frac{\partial z_1^3}{\partial u_1^3} ですが、 z_1^3 は次のように求めています。


 \displaystyle z_1^3 = ReLU(u_1^3)


 ReLU の計算は  max(x, 0) で行われるので、次のように表されます。


\displaystyle
ReLU(x) =
\left \{ \begin{array}{ll}
 x & (x \geq 0) \\
 0 & (x \lt 0)
 \end{array} \right.


 ReLU は数学的には微分不可能ですが、微分については次のように定義されています。


\displaystyle
ReLU'(x) =
\left \{ \begin{array}{ll}
 1 & (x \geq 0) \\
 0 & (x \lt 0)
 \end{array} \right.


 ReLU のグラフを見るとわかりますが、負の値~0 までは傾き 0、それ以上で傾き 1 の直線となっているので、上記の定義となっていると思われます。

f:id:celaeno42:20180923235613p:plain:w400

以上を念頭に


 \displaystyle \frac{\partial z_1^3}{\partial u_1^3} = ReLU'(u_1^3)


としておきます。

・まとめ1

ひととおり必要な部品が揃ったのでつなげてみましょう。


 \displaystyle \frac{\partial E}{\partial z_1^4} \frac{\partial z_1^4}{\partial u_1^4} \frac{\partial u_1^4}{\partial z_1^3} \frac{\partial z_1^3}{\partial u_1^3} = (z_1^4 - t_1) \times w_{11}^4 \times ReLU'(u_1^3)

2つめのかたまり

今回はこの部分です。
1つめのかたまり同様に進めていきましょう。


 \displaystyle \frac{\partial E}{\partial z_2^4} \frac{\partial z_2^4}{\partial u_2^4} \frac{\partial u_2^4}{\partial z_1^3} \frac{\partial z_1^3}{\partial u_1^3}


・第1項めと第2項めについて

第1項めと第2項めをまとめます。
これもすでに出力層の逆伝播で求めています。


 \displaystyle \frac{\partial E}{\partial z_2^4} \frac{\partial z_2^4}{\partial u_2^4} = \frac{\partial E}{\partial u_2^4} = z_2^4 - t_2


・第3項めについて

第3項めは  \displaystyle \frac{\partial u_2^4}{\partial z_1^3} です。
 u_1^4 は出力層の順伝播で求めているように以下の式になります。


\displaystyle u_2^4 = w_{21}^4 z_1^3 + w_{22}^4 z_2^3 + w_{23}^4 z_3^3 + w_{24}^4 z_4^3 + b_2^4


よって


 \displaystyle \frac{\partial u_2^4}{\partial z_1^3} = w_{21}^4


・第4項めについて

第4項めはまったく同じです。


 \displaystyle \frac{\partial z_1^3}{\partial u_1^3} = ReLU'(u_1^3)


・まとめ2

ひととおり必要な部品が揃ったのでつなげてみましょう。


 \displaystyle \frac{\partial E}{\partial z_2^4} \frac{\partial z_2^4}{\partial u_2^4} \frac{\partial u_2^4}{\partial z_1^3} \frac{\partial z_1^3}{\partial u_1^3} = (z_2^4 - t_2) \times w_{21}^4 \times ReLU'(u_1^3)


3つめのかたまり

最後のかたまりです。


 \displaystyle \frac{\partial E}{\partial z_3^4} \frac{\partial z_3^4}{\partial u_3^4} \frac{\partial u_3^4}{\partial z_1^3} \frac{\partial z_1^3}{\partial u_1^3}


・第1項めと第2項めについて


 \displaystyle \frac{\partial E}{\partial z_3^4} \frac{\partial z_3^4}{\partial u_3^4} = \frac{\partial E}{\partial u_3^4} = z_3^4 - t_3


・第3項めについて


\displaystyle u_3^4 = w_{31}^4 z_1^3 + w_{32}^4 z_2^3 + w_{33}^4 z_3^3 + w_{34}^4 z_4^3 + b_3^4


なので


 \displaystyle \frac{\partial u_3^4}{\partial z_1^3} = w_{31}^4


・第4項めについて

第4項めはまったく同じです。


 \displaystyle \frac{\partial z_1^3}{\partial u_1^3} = ReLU'(u_1^3)


・まとめ3

ひととおり必要な部品が揃ったのでつなげてみましょう。


 \displaystyle \frac{\partial E}{\partial z_3^4} \frac{\partial z_3^4}{\partial u_3^4} \frac{\partial u_3^4}{\partial z_1^3} \frac{\partial z_1^3}{\partial u_1^3} = (z_3^4 - t_3) \times w_{31}^4 \times ReLU'(u_1^3)


まとめると…

すべてのネタが揃ったのでまとめてみましょう。


 \displaystyle \begin{align}
\frac{\partial E}{\partial u_1^3} &= \frac{\partial E}{\partial z_1^4} \frac{\partial z_1^4}{\partial u_1^4} \frac{\partial u_1^4}{\partial z_1^3} \frac{\partial z_1^3}{\partial u_1^3} \\
\\
&+ \frac{\partial E}{\partial z_2^4} \frac{\partial z_2^4}{\partial u_2^4} \frac{\partial u_2^4}{\partial z_1^3} \frac{\partial z_1^3}{\partial u_1^3} \\
\\
&+ \frac{\partial E}{\partial z_3^4} \frac{\partial z_3^4}{\partial u_3^4} \frac{\partial u_3^4}{\partial z_1^3} \frac{\partial z_1^3}{\partial u_1^3} \\
\\
&= (z_1^4 - t_1) \times w_{11}^4 \times ReLU'(u_1^3) \\
\\
&+ (z_2^4 - t_2) \times w_{21}^4 \times ReLU'(u_1^3) \\
\\
&+ (z_3^4 - t_3) \times w_{31}^4 \times ReLU'(u_1^3)
\end{align}


残りの部分

あとは  \displaystyle \frac{\partial u_1^3}{\partial w_{11}^3} だけです。
これは簡単ですね。 u_1^3 は隠れ層2層めの順伝播で求めています。


 \displaystyle u_1^3 = w_{11}^3 z_1^2 + w_{12}^3 z_2^2 + w_{13}^3 z_3^2 + b_1^3


よって


 \displaystyle \begin{align}
\frac{\partial u_1^3}{\partial w_{11}^3} &= \frac{\partial}{\partial w_{11}^3} (w_{11}^3 z_1^2 + w_{12}^3 z_2^2 + w_{13}^3 z_3^2 + b_1^3) \\
\\
&= z_1^2
\end{align}


まとめ: w_{11}^3 の更新式

以上から、


 \displaystyle w_{11}^3 ← w_{11}^3 - \eta \nabla E


 \displaystyle \begin{align}
\nabla E =  \frac{\partial E}{\partial w_{11}^3} &= \frac{\partial E}{\partial u_1^3} \frac{\partial u_1^3}{\partial w_{11}^3} \\
\\
\\
&= \left( \frac{\partial E}{\partial z_1^4} \frac{\partial z_1^4}{\partial u_1^4} \frac{\partial u_1^4}{\partial z_1^3} \frac{\partial z_1^3}{\partial u_1^3} + \frac{\partial E}{\partial z_2^4} \frac{\partial z_2^4}{\partial u_2^4} \frac{\partial u_2^4}{\partial z_1^3} \frac{\partial z_1^3}{\partial u_1^3} + \frac{\partial E}{\partial z_3^4} \frac{\partial z_3^4}{\partial u_3^4} \frac{\partial u_3^4}{\partial z_1^3} \frac{\partial z_1^3}{\partial u_1^3} \right) \times \frac{\partial u_1^3}{\partial w_{11}^3} \\
\\
\\
&=
\begin{pmatrix}
 (z_1^4 - t_1) \times w_{11}^4 \times ReLU'(u_1^3) \\
\\+ (z_2^4 - t_2) \times w_{21}^4 \times ReLU'(u_1^3) \\
\\+ (z_3^4 - t_3) \times w_{31}^4 \times ReLU'(u_1^3)
\end{pmatrix}
\times z_1^2
\end{align}


と求めることができました。