next up previous contents
Next: 学習方法2(後ろ向き演算) Up: バックプロパゲーション Previous: 最急降下法   目次


学習方法1(後ろ向き演算)

バックプロパゲーションにおいて結合荷重を修正していく過程、つまり学習の過程を後ろ向き演算と呼ぶ。まずは図 4.1の変数において確認しておく。 $W_{ji}$とは、入力層-中間層の結合荷重、$W_{kj}$は中間層-出力層の結合荷重である。$T_j$は中間層のネット値で、式は


\begin{displaymath}
T_j = \sum_{i=0}^{n}W_{ji}X_i
\end{displaymath} (4.2)

である。

$U_k$は出力層のネット値で、中間層と同じようにして求めることができる。 図には書いていないが、出力層の$i$番目のニューロンの教師信号は$t_i$である。

図 4.1: バックプロパゲーション
\includegraphics[scale=1]{backpropergation.eps}

次に学習方法について説明する。ここで、学習するうえで必要な誤差$E$について定義する。


\begin{displaymath}
E=\frac{1}{2} \sum _{i=1}^{n} (t_i-O_i)^2
\end{displaymath} (4.3)

バックプロパゲーションの学習においては、子の誤差が小さくなるように結合荷重を修正していく。

まずは、中間層-出力層の結合荷重の学習を見ていく。結合荷重$W_{kj}$に対する誤差の変化を見ればいいので、$E$$W_{kj}$で偏微分すればよい。これを式にすると、


\begin{displaymath}
\triangle W_{kj} = -\eta \frac{\partial E}{\partial W_{kj}}...
...artial O_k}{\partial U_k} \frac{\partial U_k}{\partial W_{kj}}
\end{displaymath} (4.4)

となる。

$\eta$は学習係数と呼び、一度にどの程度結合荷重を変化させるかを示す。大きすぎると学習が大雑把になり、小さすぎると学習に膨大な回数がかかるようになるため調整が難しい。

まずはそれぞれの微分の計算をする。

\begin{eqnarray*}
\frac{\partial E}{\partial O_k} &=& \frac{\partial}{\partial O_k}{\frac{1}{2}(t_k-O_k)^2}\\
&=& -(t_k-O_k)
\end{eqnarray*}

次に、出力をネット値で偏微分する。

\begin{eqnarray*}
\frac{\partial O_k}{\partial U_k} &=& \frac{\partial}{\partia...
...^{-U_k}}\left( 1-\frac{1}{1+e^{-U_k}}\right) \\
&=& O_k(1-O_k)
\end{eqnarray*}

最後に、ネット値を結合荷重で偏微分する。

\begin{eqnarray*}
\frac{\partial U_k}{\partial W_kj} &=& \frac{\partial}{\parti...
..._kj}\left( H_1W_{k1}+H_2W_{k2}+...+H_jW_{kj}\right) \\
&=& H_j
\end{eqnarray*}

これらの式から、修正量 $\triangle W_{kj}$の式は以下のようになる。

\begin{eqnarray*}
\triangle W_{kj} &=& -\eta \frac{\partial E}{\partial W_kj}\\...
...&=& -\eta \{-(t_k-O_k)O_k(1-O_k)H_j\}\\
&=& \eta \delta _k H_j
\end{eqnarray*}

このようにして、出力層の結合荷重を求める。



Deguchi Lab. 2014年2月25日