誤差逆伝播法は「でんぱん」ではなくて「でんぱ」だとDeep Learning勉強会のUstで気づきました。
- 作者: 石井健一郎,前田英作,上田修功,村瀬洋
- 出版社/メーカー: オーム社
- 発売日: 1998/08
- メディア: 単行本
- 購入: 19人 クリック: 110回
- この商品を含むブログ (38件) を見る
わかりやすいパターン認識を参考に誤差逆伝播法と最急降下法について数式を追いかけて理解したいと思います。
誤差逆伝播法
誤差逆伝播法(Backpropagation:BP)は、多層ニューラルネットワークで使われる教師あり学習アルゴリズムです。
正解との誤差を出力層に近い層から入力層へと遡って伝播させていくことで、ネットワーク全体の重みを学習することが出来ます。
1. ネットワーク
最初に、想定するNNと記号を対応付けしておきます。ここでは、隣接する3つの層を考え、入力に近い層からi, j, kで表します。3層のNNであれば、iが入力層、jが隠れ層、kが出力層となるような構成です。また、iからjへの結合の重みを、jからkへの結合の重みをとして表すこととします。
このとき、番目のパターンを入力とした時、ユニットからの出力を、ユニットへの入力をとすると、
さらに、ユニットからの出力を非線形関数を用いて、
と表すこととします。
2. 誤差関数
誤差関数ですが、ここでは二乗誤差を使っています。
は教師データとなる正解値、は出力値です。 ここで、は出力層のユニットを表すインデックスです。
3. 誤差の逆伝播と最急降下法
この誤差を小さくするように各層の重みを更新していくことが、すなわち学習フェーズで行っていることになります。このとき、誤差が最小となる重みを求める方法が最急降下法です。
2.1 最急降下法で重みの計算
最急降下法を用いた重みの更新は
と求められます(は学習率を表す)。
また、勾配はチェインルールを用いて、次のように計算できます。
右辺の第一項をで表すことにすると、
第二項は(3.46)を代入して、さらに偏微分で残るのはの時だけなので、
として求められます。 ということで、(3.54)に代入すると、
を得ることが出来ます。
2.2 個々のユニットに対するの計算
同じようにチェインルールを使って計算をしていくことが出来ます。
第一項の計算ですが、ユニットjが出力層かもしくは隠れ層かによって異なって、出力層にある場合は、
一方で中間層にある場合は、
さらに、第一項と第二項は
結局、中間層の時の計算は以下のように得ることが出来ます。
2.3 非線形関数の計算
最後に、非線形関数を求めます。ここでは、非線形関数としてシグモイド関数を考えます。
ということで、をシグモイド関数とすると、
2.4 最終的な重みの更新式
最急降下法による重みの更新は、
jが出力層の時は、
jが隠れ層の時は、
となります。
終わりに
Pythonで実装して確認しようと思いましたが、式を追いかけるので疲れてしまった...
次回試してみようと思います。