無限不可能性ドライブ

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

【数式編】(逆伝播)出力層の重みとバイアスを更新する 3

f:id:celaeno42:20181006001617p:plain

前回までのおさらい

前回までで、ユニットo11ユニットo12 の更新部分の式(勾配)を求めました。

ユニットo11 の重みとバイアスの勾配( \nabla E


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


 \displaystyle \begin{align}
 \frac{\partial E}{\partial w_{12}^4} = \frac{\partial E}{\partial u_1^4} \frac{\partial u_1^4}{\partial w_{12}^4} = (z_1^4 - t_1) \times z_2^3
\end{align}


 \displaystyle \begin{align}
 \frac{\partial E}{\partial w_{13}^4} = \frac{\partial E}{\partial u_1^4} \frac{\partial u_1^4}{\partial w_{13}^4} = (z_1^4 - t_1) \times z_3^3
\end{align}


 \displaystyle \begin{align}
 \frac{\partial E}{\partial w_{14}^4} = \frac{\partial E}{\partial u_1^4} \frac{\partial u_1^4}{\partial w_{14}^4} = (z_1^4 - t_1) \times z_4^3
\end{align}


 \displaystyle \begin{align}
 \frac{\partial E}{\partial b_1^4} = \frac{\partial E}{\partial u_1^4} \frac{\partial u_1^4}{\partial b_1^4} = (z_1^4 - t_1) \times 1
\end{align}


ユニットo12 の重みとバイアスの勾配( \nabla E


 \displaystyle \begin{align}
 \frac{\partial E}{\partial w_{21}^4} = \frac{\partial E}{\partial u_2^4} \frac{\partial u_2^4}{\partial w_{21}^4} = (z_2^4 - t_2) \times z_1^3
\end{align}


 \displaystyle \begin{align}
 \frac{\partial E}{\partial w_{22}^4} = \frac{\partial E}{\partial u_2^4} \frac{\partial u_2^4}{\partial w_{22}^4} = (z_2^4 - t_2) \times z_2^3
\end{align}


 \displaystyle \begin{align}
 \frac{\partial E}{\partial w_{23}^4} = \frac{\partial E}{\partial u_2^4} \frac{\partial u_2^4}{\partial w_{23}^4} = (z_2^4 - t_2) \times z_3^3
\end{align}


 \displaystyle \begin{align}
 \frac{\partial E}{\partial w_{24}^4} = \frac{\partial E}{\partial u_2^4} \frac{\partial u_2^4}{\partial w_{24}^4} = (z_2^4 - t_2) \times z_4^3
\end{align}


 \displaystyle \begin{align}
 \frac{\partial E}{\partial b_2^4} = \frac{\partial E}{\partial u_2^4} \frac{\partial u_2^4}{\partial b_2^4} = (z_2^4 - t_2) \times 1
\end{align}


見比べてみると、(そのユニットの出力 - 該当する教師データ(ラベル))× 各入力値 となっていることがわかります。

ユニットo13 の重みとバイアスの勾配( \nabla E

以上から、ユニットo13 の重みとバイアスの勾配の式は次のようになります。


 \displaystyle \begin{align}
 \frac{\partial E}{\partial w_{31}^4} = \frac{\partial E}{\partial u_3^4} \frac{\partial u_3^4}{\partial w_{31}^4} = (z_3^4 - t_3) \times z_1^3
\end{align}


 \displaystyle \begin{align}
 \frac{\partial E}{\partial w_{32}^4} = \frac{\partial E}{\partial u_3^4} \frac{\partial u_3^4}{\partial w_{32}^4} = (z_3^4 - t_3) \times z_2^3
\end{align}


 \displaystyle \begin{align}
 \frac{\partial E}{\partial w_{33}^4} = \frac{\partial E}{\partial u_3^4} \frac{\partial u_3^4}{\partial w_{33}^4} = (z_3^4 - t_3) \times z_3^3
\end{align}


 \displaystyle \begin{align}
 \frac{\partial E}{\partial w_{34}^4} = \frac{\partial E}{\partial u_3^4} \frac{\partial u_3^4}{\partial w_{34}^4} = (z_3^4 - t_3) \times z_4^3
\end{align}


 \displaystyle \begin{align}
 \frac{\partial E}{\partial b_3^4} = \frac{\partial E}{\partial u_3^4} \frac{\partial u_3^4}{\partial b_3^4} = (z_3^4 - t_3) \times 1
\end{align}

まとめ

これで出力層のパラメータ調整で必要となる勾配の式がわかりました。
実際に重みのパラメータを更新する場合は、


\displaystyle 更新後の重み = 更新前の重み - \left( 学習率 \times \frac{\partial E}{\partial w_{ij}^4} \right)


で更新していきます。(バイアスの場合も同様です。)