無限不可能性ドライブ

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

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

f:id:celaeno42:20181023231940p:plain

隠れ層1層めの重みの更新式

さて、いよいよ隠れ層1層めの重みとバイアスの更新式についてみていきましょう。
今回は、隠れ層1層めの1つめのユニット ユニットh11 の重み  w_{11}^2 についてみていきます。
隠れ層1層めともなると、その出力が影響を及ぼした値はかなりの数になります。
具体的には1層めと2層めの関連する部分と2層め以降のすべての値となり、かなり複雑になります。
ただし、安心してください。
前回までの2層めの更新式で、 u_1^3, u_2^3, u_3^3, u_4^3 にかかる更新式はすでに求めています。
なので、実質的には、1層めと2層めの関連する部分の更新式を求めればよいことになります。

では、実際の更新式を見ていきましょう。

 w_{11}^2 の更新式

 w_{11}^2 の更新式は以下のようにあらわすことができます。


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


 \displaystyle \begin{align}
\nabla E = \frac{\partial E}{\partial w_{11}^2} &= \frac{\partial E}{\partial u_1^2} \frac{\partial u_1^2}{\partial w_{11}^2} \\
\\
&= \left( \frac{\partial E}{\partial u_1^3} \frac{\partial u_1^3}{\partial z_1^2} \frac{\partial z_1^2}{\partial u_1^2} + \frac{\partial E}{\partial u_2^3} \frac{\partial u_2^3}{\partial z_1^2} \frac{\partial z_1^2}{\partial u_1^2} + \frac{\partial E}{\partial u_3^3} \frac{\partial u_3^3}{\partial z_1^2} \frac{\partial z_1^2}{\partial u_1^2} + \frac{\partial E}{\partial u_4^3} \frac{\partial u_4^3}{\partial z_1^2} \frac{\partial z_1^2}{\partial u_1^2} \right) 
\times \frac{\partial u_1^2}{\partial w_{11}^2}
\end{align}


さて、上記の式の中で、 \displaystyle \frac{\partial E}{\partial u_1^3}, \frac{\partial E}{\partial u_2^3}, \frac{\partial E}{\partial u_3^3}, \frac{\partial E}{\partial u_4^3} は前回までですでに求めています。

(再掲)

 \displaystyle \begin{align}
\frac{\partial E}{\partial w_{11}^3} &= \frac{\partial E}{\partial u_1^3} \frac{\partial u_1^3}{\partial w_{11}^3} = \delta_1^3 \times z_1^2 \\
\\
\frac{\partial E}{\partial w_{21}^3} &= \frac{\partial E}{\partial u_2^3} \frac{\partial u_2^3}{\partial w_{21}^3} = \delta_2^3 \times z_1^2 \\
\\
\frac{\partial E}{\partial w_{31}^3} &= \frac{\partial E}{\partial u_3^3} \frac{\partial u_3^3}{\partial w_{31}^3} = \delta_3^3 \times z_1^2 \\
\\
\frac{\partial E}{\partial w_{41}^3} &= \frac{\partial E}{\partial u_4^3} \frac{\partial u_4^3}{\partial w_{41}^3} = \delta_4^3 \times z_1^2 \\
\end{align}


ただし

 \displaystyle
\delta_k^3 = 
\begin{pmatrix}
 (z_1^4 - t_1) \times w_{1k}^4 \times ReLU'(u_k^3) \\
\\+ (z_2^4 - t_2) \times w_{2k}^4 \times ReLU'(u_k^3) \\
\\+ (z_3^4 - t_3) \times w_{3k}^4 \times ReLU'(u_k^3)
\end{pmatrix}


なので、残りの部分を求めていきましょう。

まずはそれぞれのかたまりの真ん中の項

手始めに  \displaystyle \frac{\partial u_1^3}{\partial z_1^2} を見ていきます。

 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 \frac{\partial u_1^3}{\partial z_1^2} = \frac{\partial}{\partial z_1^2} (w_{11}^3 z_1^2 + w_{12} ^3 z_2^2 + w_{13}^3 z_3^2 + b_1^3) = w_{11}^3


同様に、


 \displaystyle u_2^3 = w_{21}^3 z_1^2 + w_{22}^3 z_2^2 + w_{23}^3 z_3^2 + b_2^3 なので、


 \displaystyle \frac{\partial u_2^3}{\partial z_1^2} = \frac{\partial}{\partial z_1^2} (w_{21}^3 z_1^2 + w_{22}^3 z_2^2 + w_{23}^3 z_3^2 + b_2^3) = w_{21}^3


 \displaystyle u_3^3 = w_{31}^3 z_1^2 + w_{32}^3 z_2^2 + w_{33}^3 z_3^2 + b_3^3 なので、


 \displaystyle \frac{\partial u_3^3}{\partial z_1^2} = \frac{\partial}{\partial z_1^2} (w_{31}^3 z_1^2 + w_{32}^3 z_2^2 + w_{33}^3 z_3^2 + b_3^3) = w_{31}^3


 \displaystyle u_4^3 = w_{41}^3 z_1^2 + w_{42}^3 z_2^2 + w_{43}^3 z_3^2 + b_4^3 なので、


 \displaystyle \frac{\partial u_4^3}{\partial z_1^2} = \frac{\partial}{\partial z_1^2} (w_{41}^3 z_1^2 + w_{42}^3 z_2^2 + w_{43}^3 z_3^2 + b_4^3) = w_{41}^3


それぞれのかたまりの3つめの項

ここは全部共通で  \displaystyle \frac{\partial z_1^2}{\partial u_1^2} となっています。


 \displaystyle z_1^2 = ReLU(u_1^2) なので、


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


最後に残ったところ

あと残りは  \displaystyle \frac{\partial u_1^2}{\partial w_{11}^2} だけですね。


 u_1^2 は「【数式編】(順伝播)隠れ層1層めのユニットの出力を求める」で求めています。


\displaystyle u_1^2 = w_{11}^2 x_1 + w_{12}^2 x_2 + w_{13}^2 x_3 + w_{14}^2 x_4 + b_1^2


なので、


 \displaystyle \frac{\partial u_1^2}{\partial w_{11}^2} = \frac{\partial}{\partial w_{11}^2} (w_{11}^2 x_1 + w_{12}^2 x_2 + w_{13}^2 x_3 + w_{14}^2 x_4 + b_1^2) = x_1


となります。

まとめ

これで必要なパーツが揃ったのでまとめてみましょう。


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


 \displaystyle \begin{align}
\nabla E = \frac{\partial E}{\partial w_{11}^2} &= \frac{\partial E}{\partial u_1^2} \frac{\partial u_1^2}{\partial w_{11}^2} \\
\\
&= \left( \frac{\partial E}{\partial u_1^3} \frac{\partial u_1^3}{\partial z_1^2} \frac{\partial z_1^2}{\partial u_1^2} + \frac{\partial E}{\partial u_2^3} \frac{\partial u_2^3}{\partial z_1^2} \frac{\partial z_1^2}{\partial u_1^2} + \frac{\partial E}{\partial u_3^3} \frac{\partial u_3^3}{\partial z_1^2} \frac{\partial z_1^2}{\partial u_1^2} + \frac{\partial E}{\partial u_4^3} \frac{\partial u_4^3}{\partial z_1^2} \frac{\partial z_1^2}{\partial u_1^2} \right) 
\times \frac{\partial u_1^2}{\partial w_{11}^2} \\
\\
\\
&= 
\begin{pmatrix}
 \delta_1^3 \times w_{11}^3 \times ReLU'(u_1^2) \\
\\ + \delta_2^3 \times w_{21}^3 \times ReLU'(u_1^2) \\
\\ + \delta_3^3 \times w_{31}^3 \times ReLU'(u_1^2) \\
\\ + \delta_4^3 \times w_{41}^3 \times ReLU'(u_1^2)
\end{pmatrix}
\times x_1
\end{align}


一見複雑ですが、ここに至るまでにほとんどの部分が求められていますので、それほど計算量は多くなかったのではないでしょうか。