【深層学習入門】誤差逆伝播法
1. 記事の目的
以下の記事でニューラルネットワークの学習方法に関して概略的な解説を行なった。本記事ではニューラルネットワークの学習方法に関し、より具体的に誤差逆伝播法と呼ばれる方法に関して解説を行う。
2. 概要
ニューラルネットワークの学習方法は、上記の記事で述べた通りだが、微分(勾配値)をプログラムの上でどのように計算するか、を説明できるのが誤差逆伝播法である。つまりニューラルネットワークの学習方法に関して、どのように実装されているかということである。各層の重みに関する勾配値を出力値から、順番に後ろの層から伝播されているように見えることから、このような名称がついている。
3. ニューラルネットワークの設定
図1のような3層からなるニューラルネットワークを考える(3層以上でも考え方は同じ)。
損失関数を2乗和誤差とする。すなわち
とする。また、各層の活性化関数をシグモイド関数とする。すなわち
とする(グラフを図2に示す)。 ここで、シグモイド関数の微分は次のようになる(微分の形が分かりやすいという点で選択している)。
以上の設定のもとで隠れ層と出力層を繋ぐ重み、入力層と隠れ層を繋ぐ重みに関する損失関数の勾配値を求める。
4. 誤差逆伝播法による勾配の計算
中間層の出力は次のように計算される。
また、出力層の出力は次のように計算される。
損失関数のに関する偏微分を求める。偏微分のチェインルールより、
となる。ただし、
より、は以下のようになる。
したがって、は次のようになる。
上式の左辺を見ると、隠れ層と出力層の間の重みに関する損失関数の勾配を、出力値から求めることができる(さらに微分値を四則演算のみで求められているので、プログラムで実装も可能である)。
続いて、損失関数のに関する偏微分を求める。偏微分のチェインルールより、
となる。ここで、
である。より、は次のようになる。
従って、は、
となる。上式を見ると前の層の重みや出力値から勾配値を求めることができることがわかる。
5. 参考文献
[1] Wikipedia シグモイド関数
https://ja.wikipedia.org/wiki/シグモイド関数
[2] ディジタル画像処理