らんだむな記憶

blogというものを体験してみようか!的なー

ニューラルネットワーク (4) 誤差逆伝播法 (2)

さて、残しておいた
\begin{equation}
\delta_i^{\ell} := \frac{\partial J}{\partial a_i^{\ell}} \varsigma^\prime(z_i^{\ell}),\ 2 \le \ell \le L,\ 1 \le i \le s_{\ell} \hspace{5em} (1)
\end{equation}
は何ですか?ということになる。
なお、$\delta^{\ell} = (\delta_1^{\ell}, \cdots, \delta_{s_{\ell}}^{\ell})^T$であるとする。

ここで、以下を思い出す。
\begin{align}
&\cdot J(\Theta) = J(a^{\ell + 1}, \Theta^{\ell + 1}, \cdots, \Theta^{L - 1}),\quad 1\le \ell \le L - 1 \\
&\cdot a^{\ell + 1} = \varsigma(z^{\ell + 1}) = \varsigma(\Theta^{\ell} a^{\ell}),\quad 1 \le \ell \le L - 1
\end{align}
さて、これを利用すると$\frac{\partial a_0^{\ell + 1}}{\partial a_i^{\ell}} = \frac{\partial 1}{\partial a_i^{\ell}} = 0$に注意して連鎖律より、
\begin{equation}
\frac{\partial J}{\partial a_i^{\ell}} = \sum_{p = 1}^{s_{\ell + 1}} \frac{\partial J}{\partial a_p^{\ell + 1}} \frac{\partial a_p^{\ell + 1}}{\partial a_i^{\ell}}
\end{equation}
となる。$\frac{\partial a_p^{\ell + 1}}{\partial a_i^{\ell}} = \varsigma^\prime(z_p^{\ell + 1}) \theta_{pi}^{\ell}$であるので、これを上式に代入して、
\begin{equation}
\frac{\partial J}{\partial a_i^{\ell}} = \sum_{p = 1}^{s_{\ell + 1}} \theta_{pi}^{\ell} \frac{\partial J}{\partial a_p^{\ell + 1}} \varsigma^\prime(z_p^{\ell + 1}) = \sum_{p = 1}^{s_{\ell} + 1} \theta_{pi}^{\ell} \delta_p^{\ell + 1},\quad 1 \le i \le s_{\ell} \hspace{5em} (2)
\end{equation}
を得る。

\begin{equation}
\Theta^{\ell} =
\begin{pmatrix}
\theta_{10}^{\ell} & \theta_{11}^{\ell} & \cdots & \theta_{1 s_{\ell}}^{\ell} \\
\theta_{20}^{\ell} & \theta_{21}^{\ell} & \cdots & \theta_{2 s_{\ell}}^{\ell} \\
& \vdots & \ddots & \\
\theta_{s_{\ell + 1} 0}^{\ell} & \theta_{s_{\ell + 1} 1}^{\ell} & \cdots & \theta_{s_{\ell + 1} s_{\ell}}^{\ell} \\
\end{pmatrix}
\end{equation}
を考慮すると、
\begin{equation}
\frac{\partial J}{\partial a_i^{\ell}} = \left( (\widetilde{\Theta^{\ell}})^T \delta^{\ell + 1} \right)_i,\quad 1 \le i \le s_{\ell} \hspace{5em} (2')
\end{equation}
であることが分かる。ここで、$\widetilde{\Theta^{\ell}}$は$\Theta^{\ell}$の0列目を除いた、
\begin{equation}
\widetilde{\Theta^{\ell}} =
\begin{pmatrix}
\theta_{11}^{\ell} & \cdots & \theta_{1 s_{\ell}}^{\ell} \\
\theta_{21}^{\ell} & \cdots & \theta_{2 s_{\ell}}^{\ell} \\
\vdots & \ddots & \\
\theta_{s_{\ell + 1} 1}^{\ell} & \cdots & \theta_{s_{\ell + 1} s_{\ell}}^{\ell} \\
\end{pmatrix}
\end{equation}
である。
(2')を(1)に代入することで、
\begin{equation}
\delta_i^{\ell} = \left( (\widetilde{\Theta^{\ell}})^T \delta^{\ell + 1} \right)_i\,\varsigma^\prime(z_i^{\ell}),\ 2 \le \ell \le L - 1,\ 1 \le i \le s_{\ell + 1} \hspace{5em} (3)
\end{equation}
なる漸化式を得る。
よって、MATLAB/Octave風に、項別の積を$.*$で表現すると、
\begin{equation}
\delta^{\ell} = \left( (\widetilde{\Theta^{\ell}})^T \delta^{\ell + 1} \right)\,.*\,\varsigma^\prime(z^{\ell}),\ 2 \le \ell \le L - 1 \hspace{5em} (3')
\end{equation}
となる。
$\delta^L$は何であろうか?第$L - 1$番目の層から第$L$番目の層へのデータの流れを考える。
\begin{equation}
a^L = h_{\Theta}(x) = \varsigma(z^L) = \varsigma(\Theta^{L - 1} a^{L - 1})
\end{equation}
であった。
ところで、$J(\Theta)$を思い出すと、$m = 1$としていたので、
\begin{align}
J(\Theta) &= - \sum_{k = 1}^K \left[ y_k \log(h_\Theta(x)_k) + (1 - y_k)\log(1 - h_\Theta(x)_k) \right] \\
&= - \sum_{k = 1}^K \left[ y_k \log(a_k^L) + (1 - y_k)\log(1 - a_k^L) \right]
\end{align}
であった。よって、
\begin{equation}
\frac{\partial J} {\partial a_i^L} = - \left( y_i \frac{1}{a_i^L} - (1 - y_i)\frac{1}{1 - a_i^L} \right)
\end{equation}
となる。
シグモイド関数導関数については、単純な計算で、
\begin{equation}
\varsigma^\prime(u) = \varsigma(u)(1 - \varsigma(u))
\end{equation}
を得るので、
\begin{equation}
\varsigma^\prime(z_i^L) = \varsigma(z_i^L)(1 - \varsigma(z_i^L)) = a_i^L(1 - a_i^L)
\end{equation}
となる。
以上より、
\begin{align}
\delta_i^L = \frac{\partial J}{\partial a_i^L} \varsigma^\prime(z_i^L) &= - \left( y_i \frac{1}{a_i^L} - (1 - y_i)\frac{1}{1 - a_i^L} \right) a_i^{\ell}(1 - a_i^L) \\
&= y_i (a_i^L - 1) + (1 - y_i)a_i^L
\end{align}
となる。
$y_i \in \{0,\ 1\}$を考慮して場合分けすると、
\begin{align}
\delta_i^L =
\begin{cases}
a_i^L,\ &(y_i = 0) \\
a_i^L - 1,\ &(y_i = 1)
\end{cases}
\end{align}
となる。これをじっくり眺めると、
\begin{equation}
\delta_i^L = a_i^L - y_i,\ 1 \le i \le K
\end{equation}
ということである。

この$\delta^{\ell}$はhttp://www.amazon.co.jp/dp/4061529021/では「デルタ」、http://www.amazon.co.jp/dp/8132209060/では「error」と呼ばれている。