trsing’s diary

勉強、読んだ本、仕事で調べたこととかのメモ。

PRML 5.3~5.3.1

5.3 誤差逆伝播

本節での目標:フィードフォワードニューラルネットワークについて誤差関数E(w)の勾配を効率よく評価するテクニック(誤差逆伝播)を見つけること。

ほとんどの訓練アルゴリズムでは誤差関数を最小化するための反復手続きがある。次の2つの手続きを繰り返す

  1. 誤差関数の重みに関する微分を評価
  2. 微分を用いて重みの調整量を計算

逆伝播テクニック:微分の評価において計算論的に効率な方法を提供。多層パーセプトロンだけでなく、ほかの種類のネットワーク、二乗和誤差以外の誤差関数にも応用可能。ヤコビ行列やヘッセ行列のようなほかの微分の評価にも用いることができる。

微分を用いて重みを調整する最も単純なテクニックは勾配降下法が関係している。単純な勾配降下法よりも強力な最適化のスキームが存在し、使用することができる。

5.3.1 誤差関数微分の評価

次の条件のネットワークについての逆伝播アルゴリズムを導出する。

逆伝播アルゴリズム:p.246上部の誤差逆伝播のとこ

導出

誤差関数を訓練集合の各データに対応する誤差関数の項の和(5.44)として表すことができるものが対象。また、出力ユニットは正準連結関数を活性化関数に用いているとする。

一般のフィードフォワードネットワークについて考える。あるユニットjへの入力側と繋がっているユニットをi。すると、a_{j}は(5.48)となる。また、出力側と繋がっているユニットをkとする。図5.7を参照。

E_{n}(w)の重みw_{ji}に関する微分の評価を考える。w_{ji}からネットワークへの出力へはa_{j}を通してのみなので偏微分の連鎖法則により(5.50)となる。また、(5.48)より(5.52)なのでE_{n}(w)w_{ji}に関する微分は(5.53)とかける。

\delta_{j}を求める。
ユニットjが出力ユニットの場合:正準連結関数を活性化関数に用いているので(5.54)となる。

隠れユニットの場合:a_{j}からネットワークへの出力は出力側の接続a_{k}を通してなので(5.55)となる。
ここで、 $$ \frac{\partial E_{n}}{\partial a_{k}}=\delta_{k}\\ \frac{\partial a_{k}}{\partial a_{j}}=\frac{\partial \sum_{i}w_{ki}z_{i}}{\partial z_{j}}\frac{\partial z_{j}}{\partial a_{j}}=w_{kj}\frac{\partial h(a_{j})}{\partial a_{j}}=w_{kj}h'(a_{j}) $$ より(5.56)。

出力側の\deltaがわかれば\delta_{j}を求めることができる。(5.54)より出力ユニットの\deltaを求めることが出きるため、出力ユニットから入力側に向かって計算していく(逆伝播)。