- 岡谷貴之「深層学習」のBPのメモ
- scalaのMLP実装用
E_n=E({\bf W}^{(1)},{\bf W}^{(2)},{\bf W}^{(3)},\cdots, {\bf W}^{(n)})
- n layer MLP
- $E$はloss function or 目的関数
- $W$はweight matrix
\begin{eqnarray}
{\bf u}^{(l+1}
&=& {\bf W}^{(l+1)} \cdot {\bf z}^{(l)} \\
&=& {\bf W}^{(l+1)} \cdot f({\bf u}^{(l)})
\end{eqnarray}
ここで $f$はactivation function
\begin{eqnarray}
\frac{ \partial{E} }{ \partial {\bf W}^{(l)} }
&=& \frac{ \partial{E} }{ \partial {\bf u}^{(l)} }
\frac{ \partial {\bf u}^{(l)} }{ \partial {\bf W}^{(l)}} \\
&=& \frac{ \partial{E} }{ \partial {\bf u}^{(l)} }
{\bf z}^{(l-1)} \\
\end{eqnarray}
ここで,
\begin{eqnarray}
\frac{ \partial{E} }{ \partial {\bf u}^{(l)} }
&=& \frac{ \partial{E} }{ \partial {\bf u}^{(l+1)} }
\frac{ \partial {\bf u}^{(l+1)} }{ \partial {\bf u}^{(l)} } \\
&=& \frac{ \partial{E} }{ \partial {\bf u}^{(l+1)} }
\left\{ {\bf W}^{(l+1)} \odot f^{'}( {\bf u}^{(l)} ) \right\}
\end{eqnarray}
ここで
{\bf \delta}^{(l)} = \frac{ \partial{E} }{ \partial {\bf u}^{(l)} }
とすると
\begin{eqnarray}
\frac{ \partial{E} }{ \partial {\bf W}^{(l)} }
&=& {\bf \delta}^{(l)} {\bf z}^{(l-1)} \\
{\bf \delta}^{(l)} &=& {\bf \delta}^{(l+1)}
\left\{ {\bf W}^{(l+1)} \odot f^{'}( {\bf u}^{(l)} ) \right\}
\end{eqnarray}
となる.
これが逆伝播法