らんだむな記憶

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

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

ここまでの結果をまとめると、
\begin{align}
\begin{cases}
\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} \\
\delta_i^L = a_i^L - y_i, &1 \le i \le K
\end{cases}
\end{align}

\begin{equation}
\frac{\partial J(\Theta)}{\partial \theta_{ij}^\ell} = a_j^{\ell}\,\delta_i^{\ell + 1},\quad 1 \le \ell \le L - 1,\ 1 \le i \le s_{\ell + 1},\ 0 \le j \le s_{\ell} \hspace{5em} (1)
\end{equation}
の2つの結果に集約される。
$\delta_i^L$を求めて、漸化式を使って、入力層の方向へ逆向きに各層の$\delta_i^{\ell}$を求めていくことで、$J(\Theta)$の各偏導関数が求まるというのである。

層の流れと逆に「誤差」が伝播していく様子から誤差逆伝播法 (The Back Propagation Algorithm) と呼ばれるようだ。

―――――・・・

ここまで$m = 1$として計算したが、各訓練データに対してこれを行い合算することで、全体としての偏導関数が得られる。

\begin{equation}
J_p(\Theta) := \sum_{k = 1}^K \mathrm{Cost}(h_\Theta(x^p)_k,\ y^p_k),\quad 1 \le p \le m
\end{equation}
と置く。p番目の訓練データにおける$a,\ \delta$を$a^{(p)}, \delta^{(p)}$などと書くことにし、
\begin{equation}
\frac{\partial J_p(\Theta)}{\partial \theta_{ij}^\ell} = a_j^{(p),\ell}\,\delta_i^{(p),\ell + 1},\quad 1 \le \ell \le L - 1,\ 1 \le i \le s_{\ell + 1},\ 0 \le j \le s_{\ell} \hspace{5em} (2)
\end{equation}
を(1)の手順で求める。
すると、正則化項を忘れると$\sum_{p = 1}^m \frac{\partial J_p(\Theta)}{\partial \theta_{ij}^\ell}$が損失関数の導関数になるが、これに正則化項を付け足してあげる必要がある。

正則化項の導関数
\begin{align}
\begin{cases}
\frac{\partial R(\Theta)}{\partial \theta_{ij}^\ell} = \frac{\partial}{\partial \theta_{ij}^\ell} \frac{\lambda}{2 m} \sum_{\ell = 1}^{L - 1} \sum_{j = 1}^{s_{\ell}} \sum_{i = 1}^{s_{\ell+1}} (\theta_{ij}^{\ell})^2 = \frac{\lambda}{m} \theta_{ij}^\ell, &1 \le \ell \le L - 1,\ 1 \le i \le s_{\ell+1},\ 1 \le j \le s_{\ell} \\
\frac{\partial R(\Theta)}{\partial \theta_{i0}^\ell} = 0, &1 \le \ell \le L - 1,\ 1 \le i \le s_{\ell+1}
\end{cases}
\end{align}
であった。よって、$1 \le \ell \le L - 1,\ 1 \le i \le s_{\ell+1},\ 0 \le j \le s_{\ell}$に対して、
\begin{align}
\frac{\partial J(\Theta)}{\partial \theta_{ij}^\ell} =
\begin{cases}
\frac{1}{m} \sum_{p = 1}^m \frac{\partial J_p(\Theta)}{\partial \theta_{ij}^\ell} + \frac{\lambda}{m} \theta_{ij}^\ell, &j \neq 0\\
\frac{1}{m} \sum_{p = 1}^m \frac{\partial J_p(\Theta)}{\partial \theta_{ij}^\ell}, &j = 0
\end{cases}
\end{align}
が求める偏導関数となる。