逆伝播の仕組み
やりたいことは簡単のニューラルネットワークの逆伝播の仕組みを計算することです。自分の中の整理のためでもあります。
もっともシンプルの例で、猫なのか、猫じゃないなのかを判断するただ一層のニューラルネットワークで、一枚の画像で訓練するとします。下の図で仕組みを表しています。
上の図では
: 入力画像
: 求めたい重み
: 求めたいバイアス
: 順伝播(Forward Propagation)の線形部分
: に対して活性化関数を適した後
: 損失関数(Lost function)
砕けた言い方にするとニューラルネットワークの目的は損失関数を小さくして、その時に重み()とバイアス () を求めるだけです。
猫であるかどうかを判断する2分類の問題は損失関数として、クロスエントロピー関数(Cross entropy)を使うことができます。下の形になっています。
: 毎回訓練の結果を表しています。0.2, 0.6, 0.9などを値になります。
: 実際ある画像は猫であるかどうかを示す値で、例えば0か1かになります。
に活性関数(Activation Function)を適応する結果はで、活性関数はシグモイド関数の場合、 です。
このネットワークの目的は (重みの微分)と (バイアスの微分)を求めることで、これらを求めたら下の式で少しずつ重みとを更新して、損失関数の値を小さくします。は学習率(Learning rate)
目標がわかったので、これでを求めてみます。
微分法の中で連鎖律があって、は下の形に書き換えることができます。
タスクをブレイクダウンして、求めると