【数式編】(逆伝播)出力層の重みとバイアスを更新する 1-(1)
誤差逆伝播(バックプロパゲーション)
ニューラルネットワークが正しい出力を得るようになるには、重みやバイアスなどのパラメータを調整する必要があります。
誤差逆伝播(バックプロパゲーション)という手法を使うことで、パラメータを調整することができます。
具体的には損失関数を調整したいパラメータで偏微分することで、調整値を求めていきます。
(誤差逆伝播の詳しい説明については他のWebサイトや書籍を参照してください。)
重みの更新式
まずは出力層の1つめのユニット ユニットo11 の重み を調整するための更新式を見ていきましょう。
(※ は学習率)
更新後の重みは、更新前の重みから損失関数の勾配( )に学習率を掛けた値を引くことで求めることができます。
(式の意味をわかりやすくするために ← で表現しています。)
学習率はある種の定数(ハイパーパラメータ)と考えてよいので、 を求めることができれば、重みを更新することができます。
損失関数の偏微分
は損失関数 を で偏微分することで求めることができます。
これは、連鎖率(チェインルール)によって、次の式で求めます。
まずは について見ていきましょう。
損失関数の式を再掲しておきます。
この式を で偏微分します。
左から第1項め、第2項め、第3項めとしてひとつずつ見ていきます。
・第1項めについて
まずは を見ていきます。
なので、
公式 を利用して、
よって、
公式 を利用すると
以上より、
・第2項めについて
次に を見ていきます。
第1項めと同様に、
なので、
よって、
公式 を利用して
は先ほど求めたので、
以上より、
・第3項めについて
最後に を見ていきます。
内容は第2項めとほとんど同じです。
なので、
よって、
公式 を利用して
以上より、
・まとめると…
を求めようとしていて、
とわかったので、
(※ 教師データは one-hot 表現としているため、)
まとめ: の更新式
以上((1)、(2))から、 を調整するための具体的な更新式は以下のようになります。(※ は学習率)
「(そのユニットの出力 - 該当する教師データ) × その重みに関係した入力値」になっていることがわかります。