いくつかの中間層を持つ多層ニューラルネットワークを考える。
同じ層の素子間に結合はなく、
どの素子も1つ前の層からのみ入力を受け、
次の層へのみ出力を送るものとする。
このようなネットワークの中間層に対して同様に学習則を導こうとしたとき、
式(4.8)の の値はすぐに求めることはできない。この微分値を出力層より逆向きに順々に計算していく、
言い換えれば出力の誤差を、
前の層へ、
前の層へと伝えていく、
というのがバックプロパゲーションのアイデアである。
すなわち、
ある層の素子 j の
の計算は、
次の層の素子 k の
を用いて
と展開することができる。 式(4.1)より
となる。 これがバックプロパゲーションのアルゴリズムである。
バックプロパゲーションは、
いかなる重みの初期値からでも誤差が極小となる(最小ではない)ことが保証されるわけだが、
一般に誤差曲面は極小値の近くでは非常に緩やかな谷底をもつため、
学習は非常に遅くなる。
しかし、
式(4.4)の を大きくすると、
学習は振動してしまう。
振動させずに学習を早めるため幾つかの方法が提案されているが、
例えば、
誤差曲面の傾きを結合荷重空間の位置でなく速度の変化に用いる、
すなわち
という形の加速法がよく使われる。 ここで t は学習の回数を表わす。
また、 重みが最初、 すべて0であると、 中間層の素子に個性が現れず、 中間層を用いる意味がなくなってしまう。 この対称性を破るためには、 重みに小さなランダム値を与えておけばよい。
図4.1にバックプロパゲーション法のネットワーク図を示す。
バックプロパゲーションの特徴は、
入力信号と正しい出力教師信号のセットを次々と与えるだけで、
個々の問題の特徴を抽出する内部構造が、
中間層の隠れニューロン群のシナプス結合として自己組織される点である。
また、
誤差計算が前方向へ情報の流れとよく類似している点がある。
すなわち、
ある素子の学習に使われている情報は、
後の素子から得られる情報のみであり、
学習の局所性が保たれていることになる。
これは、
人工的な神経回路形計算機をハードウェア化する時に学習則に要求される性質で、
実際の生体の神経回路においては、
といった値が神経軸策を通って逆向きに伝わるはずはなく、
バックプロパゲーションは実際の脳の学習則の生理学的モデルにはなりえないことになる。
実際の脳の多層神経回路においてはどのような学習則が用いられているのかはまだわかっていない[6]。