無限不可能性ドライブ

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

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

f:id:celaeno42:20181026233118p:plain

ユニットh11 の残りの重みとバイアスの更新式

では、残りの  w_{12}^2, w_{13}^2, w_{14}^2, b_1^2 の更新式についてみていきましょう。

・まずは  w_{12}^2 の更新式


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


 \displaystyle \begin{align}
\nabla E = \frac{\partial E}{\partial w_{12}^2} &= \frac{\partial E}{\partial u_1^2} \frac{\partial u_1^2}{\partial w_{12}^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_{12}^2}
\end{align}


前回求めた  w_{11}^2 の更新式と見比べると、 \displaystyle \frac{\partial E}{\partial u_1^2} の部分が共通していることがわかると思います。


(再掲)
 \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 u_1^2}{\partial w_{12}^2} の部分だけ計算すればいいですね。


\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_{12}^2} = \frac{\partial}{\partial w_{12}^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_2


よって


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


 \displaystyle \begin{align}
\nabla E = \frac{\partial E}{\partial w_{12}^2} &= \frac{\partial E}{\partial u_1^2} \frac{\partial u_1^2}{\partial w_{12}^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_{12}^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_2
\end{align}


 w_{13}^2 の更新式

これも  w_{12}^2 とほとんど同じです。


\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_{13}^2} = \frac{\partial}{\partial w_{13}^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_3


よって


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


 \displaystyle \begin{align}
\nabla E = \frac{\partial E}{\partial w_{13}^2} &= \frac{\partial E}{\partial u_1^2} \frac{\partial u_1^2}{\partial w_{13}^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_{13}^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_3
\end{align}


 w_{14}^2 の更新式

同様に、


 \displaystyle \frac{\partial u_1^2}{\partial w_{14}^2} = \frac{\partial}{\partial w_{14}^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_4


よって


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


 \displaystyle \begin{align}
\nabla E = \frac{\partial E}{\partial w_{14}^2} &= \frac{\partial E}{\partial u_1^2} \frac{\partial u_1^2}{\partial w_{14}^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_{14}^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_4
\end{align}


 b_1^2 の更新式


 \displaystyle \frac{\partial u_1^2}{\partial b_1^2} = \frac{\partial}{\partial b_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) = 1


よって


 \displaystyle b_1^2 ← b_1^2 - \eta \nabla E


 \displaystyle \begin{align}
\nabla E = \frac{\partial E}{\partial b_1^2} &= \frac{\partial E}{\partial u_1^2} \frac{\partial u_1^2}{\partial b_1^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 b_1^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 1
\end{align}


総まとめ

それぞれの重みとバイアスの更新部分の式(勾配)をまとめておきます。
前回同様に共通部分を  \displaystyle \delta_1^2 としましょう。


 \displaystyle \begin{align}
\frac{\partial E}{\partial w_{11}^2} &= \frac{\partial E}{\partial u_1^2} \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
= \delta_1^2 \times x_1
\end{align}


 \displaystyle \begin{align}
\frac{\partial E}{\partial w_{12}^2} &= \frac{\partial E}{\partial u_1^2} \frac{\partial u_1^2}{\partial w_{12}^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_2
= \delta_1^2 \times x_2
\end{align}


 \displaystyle \begin{align}
\frac{\partial E}{\partial w_{13}^2} &= \frac{\partial E}{\partial u_1^2} \frac{\partial u_1^2}{\partial w_{13}^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_3
= \delta_1^2 \times x_3
\end{align}


 \displaystyle \begin{align}
\frac{\partial E}{\partial w_{14}^2} &= \frac{\partial E}{\partial u_1^2} \frac{\partial u_1^2}{\partial w_{14}^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_4
= \delta_1^2 \times x_4
\end{align}


 \displaystyle \begin{align}
\frac{\partial E}{\partial b_1^2} &= \frac{\partial E}{\partial u_1^2} \frac{\partial u_1^2}{\partial b_1^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 1
= \delta_1^2 \times 1
\end{align}


これで ユニットh11 の重みとバイアスに関する更新式を求めることができました。

【数式編】(逆伝播)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}


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

【VBA】FizzBuzzをクラスを使って書いてみる【GAS】

最近GAS(Google Apps Script)の勉強を始めたので、
某所のお題であったFizzBuzz問題VBAとGASでクラスを使って(GASというかJavaScriptではクラスという言い方はしないらしい…)書いてみました。
VBAはコンストラクタ(Class_Initialize())で引数をとれないのががが。。
GASは this キーワードがちょっと煩わしい感じ。。
あと、いまひとつ中かっこ後のセミコロンの要不要がわかってません。

VBA

'[クラスモジュール - classFizzBuzz]
Option Explicit

Dim mMin As Long
Dim mMax As Long
Dim mNum As Long

Private Sub Class_Initialize()
    mMin = 1
    mMax = 100
    mNum = 1
End Sub

Public Sub Constructor(ByRef min As Long, ByRef max As Long)
    mMin = min
    mMax = max
    mNum = min
End Sub

Public Function hasNext() As Boolean
    mNum = mNum + 1
    hasNext = (mNum <= mMax)
End Function

Public Function getFizzBuzz() As String
    Dim res As String
    res = ""
    If mNum Mod 3 = 0 Then
        res = "Fizz"
    End If
    If mNum Mod 5 = 0 Then
        res = res & "Buzz"
    End If
    If res = "" Then
        res = CStr(mNum)
    End If
    getFizzBuzz = res
End Function
'[標準モジュール]
Option Explicit

Public Sub myFunction()
    Dim fizzBuzz As classFizzBuzz
    Set fizzBuzz = New classFizzBuzz
    Call fizzBuzz.Constructor(1, 100)
    
    Do
        Debug.Print fizzBuzz.getFizzBuzz
    Loop While fizzBuzz.hasNext
    
    Set fizzBuzz = Nothing
End Sub

【GAS】

var FizzBuzz = function(min, max) {
  this.min = min;
  this.max = max;
  this.num = min;
  
  this.hasNext = function() {
    this.num++;
    return (this.num <= max);
  };
  
  this.getFizzBuzz = function() {
    var res = '';
    if (this.num % 3 == 0) {
      res = 'Fizz';
    }
    if (this.num % 5 == 0) {
      res += 'Buzz';
    }
    if (res == '') {
      res = this.num;
    }
    return res;
  };
};

function myFunction() {
  var fizzBuzz = new FizzBuzz(1, 100);
  do {
    Logger.log(fizzBuzz.getFizzBuzz());
  } while (fizzBuzz.hasNext());
}

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

f:id:celaeno42:20181021230550p:plain

おさらい

前回までで ユニットh21ユニットh22 についての必要な更新式が求まりました。
以下に再掲してみます。

・ユニットh21

 \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}
&=
\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 \\
\\
\\
\frac{\partial E}{\partial w_{12}^3} = \frac{\partial E}{\partial u_1^3} \frac{\partial u_1^3}{\partial w_{12}^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_2^2 \\
\\
\\
\frac{\partial E}{\partial w_{13}^3} = \frac{\partial E}{\partial u_1^3} \frac{\partial u_1^3}{\partial w_{13}^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_3^2 \\
\\
\\
\frac{\partial E}{\partial b_1^3} = \frac{\partial E}{\partial u_1^3} \frac{\partial u_1^3}{\partial b_1^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 1
\end{align}

・ユニットh22

 \displaystyle \begin{align}
\frac{\partial E}{\partial w_{21}^3} = \frac{\partial E}{\partial u_2^3} \frac{\partial u_2^3}{\partial w_{21}^3}
&=
\begin{pmatrix}
 (z_1^4 - t_1) \times w_{12}^4 \times ReLU'(u_2^3) \\
\\+ (z_2^4 - t_2) \times w_{22}^4 \times ReLU'(u_2^3) \\
\\+ (z_3^4 - t_3) \times w_{32}^4 \times ReLU'(u_2^3)
\end{pmatrix}
\times z_1^2 \\
\\
\\
\frac{\partial E}{\partial w_{22}^3} = \frac{\partial E}{\partial u_2^3} \frac{\partial u_2^3}{\partial w_{22}^3}
&=
\begin{pmatrix}
 (z_1^4 - t_1) \times w_{12}^4 \times ReLU'(u_2^3) \\
\\+ (z_2^4 - t_2) \times w_{22}^4 \times ReLU'(u_2^3) \\
\\+ (z_3^4 - t_3) \times w_{32}^4 \times ReLU'(u_2^3)
\end{pmatrix}
\times z_2^2 \\
\\
\\
\frac{\partial E}{\partial w_{23}^3} = \frac{\partial E}{\partial u_2^3} \frac{\partial u_2^3}{\partial w_{23}^3}
&=
\begin{pmatrix}
 (z_1^4 - t_1) \times w_{12}^4 \times ReLU'(u_2^3) \\
\\+ (z_2^4 - t_2) \times w_{22}^4 \times ReLU'(u_2^3) \\
\\+ (z_3^4 - t_3) \times w_{32}^4 \times ReLU'(u_2^3)
\end{pmatrix}
\times z_3^2 \\
\\
\\
\frac{\partial E}{\partial b_2^3} = \frac{\partial E}{\partial u_2^3} \frac{\partial u_2^3}{\partial b_2^3}
&=
\begin{pmatrix}
 (z_1^4 - t_1) \times w_{12}^4 \times ReLU'(u_2^3) \\
\\+ (z_2^4 - t_2) \times w_{22}^4 \times ReLU'(u_2^3) \\
\\+ (z_3^4 - t_3) \times w_{32}^4 \times ReLU'(u_2^3)
\end{pmatrix}
\times 1
\end{align}


見比べてみると以下のことがわかると思います。

  • かっこの部分はユニットごとに共通
  • 最後に掛け合わされている z は対象の重みの位置ごとに共通

以上を踏まえると、残りのユニットの更新式については以下のようになります。

残りのユニットの更新式

・ユニットh23

 \displaystyle \begin{align}
\frac{\partial E}{\partial w_{31}^3} = \frac{\partial E}{\partial u_3^3} \frac{\partial u_3^3}{\partial w_{31}^3}
&=
\begin{pmatrix}
 (z_1^4 - t_1) \times w_{13}^4 \times ReLU'(u_3^3) \\
\\+ (z_2^4 - t_2) \times w_{23}^4 \times ReLU'(u_3^3) \\
\\+ (z_3^4 - t_3) \times w_{33}^4 \times ReLU'(u_3^3)
\end{pmatrix}
\times z_1^2 \\
\\
\\
\frac{\partial E}{\partial w_{32}^3} = \frac{\partial E}{\partial u_3^3} \frac{\partial u_3^3}{\partial w_{32}^3}
&=
\begin{pmatrix}
 (z_1^4 - t_1) \times w_{13}^4 \times ReLU'(u_3^3) \\
\\+ (z_2^4 - t_2) \times w_{23}^4 \times ReLU'(u_3^3) \\
\\+ (z_3^4 - t_3) \times w_{33}^4 \times ReLU'(u_3^3)
\end{pmatrix}
\times z_2^2 \\
\\
\\
\frac{\partial E}{\partial w_{33}^3} = \frac{\partial E}{\partial u_3^3} \frac{\partial u_3^3}{\partial w_{33}^3}
&=
\begin{pmatrix}
 (z_1^4 - t_1) \times w_{13}^4 \times ReLU'(u_3^3) \\
\\+ (z_2^4 - t_2) \times w_{23}^4 \times ReLU'(u_3^3) \\
\\+ (z_3^4 - t_3) \times w_{33}^4 \times ReLU'(u_3^3)
\end{pmatrix}
\times z_3^2 \\
\\
\\
\frac{\partial E}{\partial b_3^3} = \frac{\partial E}{\partial u_3^3} \frac{\partial u_3^3}{\partial b_3^3}
&=
\begin{pmatrix}
 (z_1^4 - t_1) \times w_{13}^4 \times ReLU'(u_3^3) \\
\\+ (z_2^4 - t_2) \times w_{23}^4 \times ReLU'(u_3^3) \\
\\+ (z_3^4 - t_3) \times w_{33}^4 \times ReLU'(u_3^3)
\end{pmatrix}
\times 1
\end{align}

・ユニットh24

 \displaystyle \begin{align}
\frac{\partial E}{\partial w_{41}^3} = \frac{\partial E}{\partial u_4^3} \frac{\partial u_4^3}{\partial w_{41}^3}
&=
\begin{pmatrix}
 (z_1^4 - t_1) \times w_{14}^4 \times ReLU'(u_4^3) \\
\\+ (z_2^4 - t_2) \times w_{24}^4 \times ReLU'(u_4^3) \\
\\+ (z_3^4 - t_3) \times w_{34}^4 \times ReLU'(u_4^3)
\end{pmatrix}
\times z_1^2 \\
\\
\\
\frac{\partial E}{\partial w_{42}^3} = \frac{\partial E}{\partial u_4^3} \frac{\partial u_4^3}{\partial w_{42}^3}
&=
\begin{pmatrix}
 (z_1^4 - t_1) \times w_{14}^4 \times ReLU'(u_4^3) \\
\\+ (z_2^4 - t_2) \times w_{24}^4 \times ReLU'(u_4^3) \\
\\+ (z_3^4 - t_3) \times w_{34}^4 \times ReLU'(u_4^3)
\end{pmatrix}
\times z_2^2 \\
\\
\\
\frac{\partial E}{\partial w_{43}^3} = \frac{\partial E}{\partial u_4^3} \frac{\partial u_4^3}{\partial w_{43}^3}
&=
\begin{pmatrix}
 (z_1^4 - t_1) \times w_{14}^4 \times ReLU'(u_4^3) \\
\\+ (z_2^4 - t_2) \times w_{24}^4 \times ReLU'(u_4^3) \\
\\+ (z_3^4 - t_3) \times w_{34}^4 \times ReLU'(u_4^3)
\end{pmatrix}
\times z_3^2 \\
\\
\\
\frac{\partial E}{\partial b_4^3} = \frac{\partial E}{\partial u_4^3} \frac{\partial u_4^3}{\partial b_4^3}
&=
\begin{pmatrix}
 (z_1^4 - t_1) \times w_{14}^4 \times ReLU'(u_4^3) \\
\\+ (z_2^4 - t_2) \times w_{24}^4 \times ReLU'(u_4^3) \\
\\+ (z_3^4 - t_3) \times w_{34}^4 \times ReLU'(u_4^3)
\end{pmatrix}
\times 1
\end{align}

もう一歩進めて…

さて、これで隠れ層2層めのすべてのユニットのすべての重みとバイアスの更新部分(勾配)の式がわかりました。
ただ、前述したように、かっこの中身はユニットごとに共通です。
なので、ここでもう一歩進めて、共通部分を別の表記(別の文字) \displaystyle \delta(デルタ)で置き換えてみましょう。
そうすることで、実はこの後で求める隠れ層1層めの更新式を(比較的)スッキリ表すことができるようになります。

・ユニットh21

 \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_{12}^3} = \frac{\partial E}{\partial u_1^3} \frac{\partial u_1^3}{\partial w_{12}^3}
&= \delta_1^3 \times z_2^2 \\
\\
\\
\frac{\partial E}{\partial w_{13}^3} = \frac{\partial E}{\partial u_1^3} \frac{\partial u_1^3}{\partial w_{13}^3}
&=  \delta_1^3 \times z_3^2 \\
\\
\\
\frac{\partial E}{\partial b_1^3} = \frac{\partial E}{\partial u_1^3} \frac{\partial u_1^3}{\partial b_1^3}
&=  \delta_1^3 \times 1
\end{align}

・ユニットh22

 \displaystyle \begin{align}
\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_{22}^3} = \frac{\partial E}{\partial u_2^3} \frac{\partial u_2^3}{\partial w_{22}^3}
&= \delta_2^3 \times z_2^2 \\
\\
\\
\frac{\partial E}{\partial w_{23}^3} = \frac{\partial E}{\partial u_2^3} \frac{\partial u_2^3}{\partial w_{23}^3}
&= \delta_2^3 \times z_3^2 \\
\\
\\
\frac{\partial E}{\partial b_2^3} = \frac{\partial E}{\partial u_2^3} \frac{\partial u_2^3}{\partial b_2^3}
&= \delta_2^3 \times 1
\end{align}

・ユニットh23

 \displaystyle \begin{align}
\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_{32}^3} = \frac{\partial E}{\partial u_3^3} \frac{\partial u_3^3}{\partial w_{32}^3}
&= \delta_3^3 \times z_2^2 \\
\\
\\
\frac{\partial E}{\partial w_{33}^3} = \frac{\partial E}{\partial u_3^3} \frac{\partial u_3^3}{\partial w_{33}^3}
&= \delta_3^3 \times z_3^2 \\
\\
\\
\frac{\partial E}{\partial b_3^3} = \frac{\partial E}{\partial u_3^3} \frac{\partial u_3^3}{\partial b_3^3}
&= \delta_3^3 \times 1
\end{align}

・ユニットh24

 \displaystyle \begin{align}
\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 \\
\\
\\
\frac{\partial E}{\partial w_{42}^3} = \frac{\partial E}{\partial u_4^3} \frac{\partial u_4^3}{\partial w_{42}^3}
&= \delta_4^3 \times z_2^2 \\
\\
\\
\frac{\partial E}{\partial w_{43}^3} = \frac{\partial E}{\partial u_4^3} \frac{\partial u_4^3}{\partial w_{43}^3}
&= \delta_4^3 \times z_3^2 \\
\\
\\
\frac{\partial E}{\partial b_4^3} = \frac{\partial E}{\partial u_4^3} \frac{\partial u_4^3}{\partial b_4^3}
&= \delta_4^3 \times 1
\end{align}


 \displaystyle \delta の中身を意識する必要はありますが、
ずいぶんスッキリと表すことができたのではないでしょうか。

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

f:id:celaeno42:20181021220532p:plain

前回のおさらい

前回求めた  w_{21}^3 の更新式は以下の通りです。


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


 \displaystyle \begin{align}
\nabla E = \frac{\partial E}{\partial w_{21}^3} = \frac{\partial E}{\partial u_2^3} \frac{\partial u_2^3}{\partial w_{21}^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_2^3} \frac{\partial z_2^3}{\partial u_2^3} + \frac{\partial E}{\partial z_2^4} \frac{\partial z_2^4}{\partial u_2^4} \frac{\partial u_2^4}{\partial z_2^3} \frac{\partial z_2^3}{\partial u_2^3} + \frac{\partial E}{\partial z_3^4} \frac{\partial z_3^4}{\partial u_3^4} \frac{\partial u_3^4}{\partial z_2^3} \frac{\partial z_2^3}{\partial u_2^3} \right) \times \frac{\partial u_2^3}{\partial w_{21}^3} \\
\\
\\
&=
\begin{pmatrix}
 (z_1^4 - t_1) \times w_{12}^4 \times ReLU'(u_2^3) \\
\\+ (z_2^4 - t_2) \times w_{22}^4 \times ReLU'(u_2^3) \\
\\+ (z_3^4 - t_3) \times w_{32}^4 \times ReLU'(u_2^3)
\end{pmatrix}
\times z_1^2
\end{align}


今回はその他の重み  w_{22}^3, w_{23}^3 とバイアス  b_2^3 の更新部分の式(勾配)を求めていきます。

それぞれの更新式

それぞれの更新式を並べてみます。


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

 \displaystyle \nabla E = \frac{\partial E}{\partial w_{21}^3} = \frac{\partial E}{\partial u_2^3} \frac{\partial u_2^3}{\partial w_{21}^3}



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

 \displaystyle \nabla E = \frac{\partial E}{\partial w_{22}^3} = \frac{\partial E}{\partial u_2^3} \frac{\partial u_2^3}{\partial w_{22}^3} ・・・(1)



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

 \displaystyle \nabla E = \frac{\partial E}{\partial w_{23}^3} = \frac{\partial E}{\partial u_2^3} \frac{\partial u_2^3}{\partial w_{23}^3} ・・・(2)



 \displaystyle b_2^3 ← b_2^3 - \eta \nabla E

 \displaystyle \nabla E = \frac{\partial E}{\partial b_2^3} = \frac{\partial E}{\partial u_2^3} \frac{\partial u_2^3}{\partial b_2^3} ・・・(3)


それぞれで  \displaystyle \frac{\partial E}{\partial u_2^3} の部分は同じことがわかります。
なので、それ以外の部分だけ求めましょう。


(1)の部分

 \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 w_{22}^3} = z_2^2


(2)の部分

同様に、


 \displaystyle \frac{\partial u_2^3}{\partial w_{23}^3} = z_3^2


(3)の部分

 \displaystyle \frac{\partial u_2^3}{\partial b_2^3} = 1



総まとめ

すべて求まったので、それぞれの  \nabla E の部分をまとめておきましょう。


 \displaystyle \begin{align}
\frac{\partial E}{\partial w_{21}^3} = \frac{\partial E}{\partial u_2^3} \frac{\partial u_2^3}{\partial w_{21}^3}
&=
\begin{pmatrix}
 (z_1^4 - t_1) \times w_{12}^4 \times ReLU'(u_2^3) \\
\\+ (z_2^4 - t_2) \times w_{22}^4 \times ReLU'(u_2^3) \\
\\+ (z_3^4 - t_3) \times w_{32}^4 \times ReLU'(u_2^3)
\end{pmatrix}
\times z_1^2 \\
\\
\\
\frac{\partial E}{\partial w_{22}^3} = \frac{\partial E}{\partial u_2^3} \frac{\partial u_2^3}{\partial w_{22}^3}
&=
\begin{pmatrix}
 (z_1^4 - t_1) \times w_{12}^4 \times ReLU'(u_2^3) \\
\\+ (z_2^4 - t_2) \times w_{22}^4 \times ReLU'(u_2^3) \\
\\+ (z_3^4 - t_3) \times w_{32}^4 \times ReLU'(u_2^3)
\end{pmatrix}
\times z_2^2 \\
\\
\\
\frac{\partial E}{\partial w_{23}^3} = \frac{\partial E}{\partial u_2^3} \frac{\partial u_2^3}{\partial w_{23}^3}
&=
\begin{pmatrix}
 (z_1^4 - t_1) \times w_{12}^4 \times ReLU'(u_2^3) \\
\\+ (z_2^4 - t_2) \times w_{22}^4 \times ReLU'(u_2^3) \\
\\+ (z_3^4 - t_3) \times w_{32}^4 \times ReLU'(u_2^3)
\end{pmatrix}
\times z_3^2 \\
\\
\\
\frac{\partial E}{\partial b_2^3} = \frac{\partial E}{\partial u_2^3} \frac{\partial u_2^3}{\partial b_2^3}
&=
\begin{pmatrix}
 (z_1^4 - t_1) \times w_{12}^4 \times ReLU'(u_2^3) \\
\\+ (z_2^4 - t_2) \times w_{22}^4 \times ReLU'(u_2^3) \\
\\+ (z_3^4 - t_3) \times w_{32}^4 \times ReLU'(u_2^3)
\end{pmatrix}
\times 1
\end{align}


一見複雑ですが、よく見比べてみると規則性があることがわかるかと思います。

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

f:id:celaeno42:20181021220728p:plain

重みの更新式

大まかなところは1つめのユニットと変わりません。


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

 \displaystyle \nabla E =  \frac{\partial E}{\partial w_{21}^3} = \frac{\partial E}{\partial u_2^3} \frac{\partial u_2^3}{\partial w_{21}^3}


今回は2つめのユニット(ユニットh22)なので、 u_1^3 u_2^3 になっていることに注意してください。

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

ユニットh21 と同様の考え方で、 \displaystyle \frac{\partial E}{\partial u_2^3} を求める式を立ててみます。


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


(再掲)ユニットh21 \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}


見比べてみると、ユニットh21ユニットh22 で、それぞれのかたまりの第1項め、第2項めが共通していることがわかります。
では、順番にみていきましょう。

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_2^3} \frac{\partial z_2^3}{\partial u_2^3}


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

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

ここは ユニットh21 と同じです。


 \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_2^3} です。


\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_2^3} = w_{12}^4


・第4項めについて

ユニットh21 と同様に、


 \displaystyle \frac{\partial z_2^3}{\partial u_2^3} = ReLU'(u_2^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_2^3} \frac{\partial z_2^3}{\partial u_2^3} = (z_1^4 - t_1) \times w_{12}^4 \times ReLU'(u_2^3)


2つめのかたまり

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_2^3} \frac{\partial z_2^3}{\partial u_2^3}


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

ここも ユニットh21 と同じです。


 \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_2^3} です。


\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_2^3} = w_{22}^4


・第4項めについて

ここは1つめのかたまりと同じです。


 \displaystyle \frac{\partial z_2^3}{\partial u_2^3} = ReLU'(u_2^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_2^3} \frac{\partial z_2^3}{\partial u_2^3} = (z_2^4 - t_2) \times w_{22}^4 \times ReLU'(u_2^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_2^3} \frac{\partial z_2^3}{\partial u_2^3}


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

ここも ユニットh21 と同じです。


 \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_2^3} = w_{32}^4


・第4項めについて

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


 \displaystyle \frac{\partial z_2^3}{\partial u_2^3} = ReLU'(u_2^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_2^3} \frac{\partial z_2^3}{\partial u_2^3} = (z_3^4 - t_3) \times w_{32}^4 \times ReLU'(u_2^3)


まとめると…

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


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


残りの部分

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


 \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 \begin{align}
\frac{\partial u_2^3}{\partial w_{21}^3} &= \frac{\partial}{\partial w_{21}^3} (w_{21}^3 z_1^2 + w_{22}^3 z_2^2 + w_{23}^3 z_3^2 + b_2^3) \\
\\
&= z_1^2
\end{align}


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

以上から、


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


 \displaystyle \begin{align}
\nabla E = \frac{\partial E}{\partial w_{21}^3} = \frac{\partial E}{\partial u_2^3} \frac{\partial u_2^3}{\partial w_{21}^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_2^3} \frac{\partial z_2^3}{\partial u_2^3} + \frac{\partial E}{\partial z_2^4} \frac{\partial z_2^4}{\partial u_2^4} \frac{\partial u_2^4}{\partial z_2^3} \frac{\partial z_2^3}{\partial u_2^3} + \frac{\partial E}{\partial z_3^4} \frac{\partial z_3^4}{\partial u_3^4} \frac{\partial u_3^4}{\partial z_2^3} \frac{\partial z_2^3}{\partial u_2^3} \right) \times \frac{\partial u_2^3}{\partial w_{21}^3} \\
\\
\\
&=
\begin{pmatrix}
 (z_1^4 - t_1) \times w_{12}^4 \times ReLU'(u_2^3) \\
\\+ (z_2^4 - t_2) \times w_{22}^4 \times ReLU'(u_2^3) \\
\\+ (z_3^4 - t_3) \times w_{32}^4 \times ReLU'(u_2^3)
\end{pmatrix}
\times z_1^2
\end{align}


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

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

f:id:celaeno42:20181014232659p:plain

前回のおさらい

前回求めた  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}


今回はその他の重み  w_{12}^3, w_{13}^3 とバイアス  b_1^3 の更新部分の式(勾配)を求めていきます。

まずは2つめの重み  w_{12}^3 について

 w_{12}^3 については以下の式を求めます。


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


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


ただ、 w_{11}^3 の式と見比べると、 \displaystyle \frac{\partial E}{\partial u_1^3} の部分は同じことがわかります。

そこで、 \displaystyle \frac{\partial u_1^3}{\partial w_{12}^3} についてのみ考えると、


 \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 w_{12}^3} = z_2^2


となります。
以上から、


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


 \displaystyle \begin{align}
\nabla E =  \frac{\partial E}{\partial w_{12}^3} &= \frac{\partial E}{\partial u_1^3} \frac{\partial u_1^3}{\partial w_{12}^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_2^2
\end{align}


と導けました。

3つめの重み

パターンがわかったので同じようにして、 \displaystyle \frac{\partial u_1^3}{\partial w_{13}^3} についてのみ考えると、


 \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 w_{13}^3} = z_3^2


よって


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


 \displaystyle \begin{align}
\nabla E =  \frac{\partial E}{\partial w_{13}^3} &= \frac{\partial E}{\partial u_1^3} \frac{\partial u_1^3}{\partial w_{13}^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_3^2
\end{align}

バイアス

バイアスも同様に  \displaystyle \frac{\partial u_1^3}{\partial b_1^3} についてのみ考えましょう。


 \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 b_1^3} = 1


よって


 \displaystyle b_1^3 ← b_1^3 - \eta \nabla E


 \displaystyle \begin{align}
\nabla E =  \frac{\partial E}{\partial b_1^3} &= \frac{\partial E}{\partial u_1^3} \frac{\partial u_1^3}{\partial b_1^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 1
\end{align}

(再掲)

すべて求まったので、それぞれの  \nabla E の部分を再掲しておきましょう。


 \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}
&=
\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 \\
\\
\\
\frac{\partial E}{\partial w_{12}^3} = \frac{\partial E}{\partial u_1^3} \frac{\partial u_1^3}{\partial w_{12}^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_2^2 \\
\\
\\
\frac{\partial E}{\partial w_{13}^3} = \frac{\partial E}{\partial u_1^3} \frac{\partial u_1^3}{\partial w_{13}^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_3^2 \\
\\
\\
\frac{\partial E}{\partial b_1^3} = \frac{\partial E}{\partial u_1^3} \frac{\partial u_1^3}{\partial b_1^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 1
\end{align}


一見複雑ですが、よく見るとほぼほぼ共通していることがわかります。
(かっこの中身が一緒です)