最急降下法

最近流行りの機械学習でも使用される「最急降下法」について、最も簡単なモデルに対して実験してみた結果を記述していおく。なお、英語は 「Gradient descent」,「 steepest descent」。「勾配法」とも呼ばれる。

モデル

  • 最も単純な1段のニューラルネットワーク
  • 入力は X1, X2 の2つのみ
  • それぞれの入力係数は W1, W2
  • バイアス様に W0 も用意し、X0 は常に1とする
  • y = ΣW*X とし、活性化関数は使用しない

学習

  • 教師あり学習とし、教師値は t = A + B*X1 + C*X2 とする
    • A, B, C は定数
  • ロス関数は E = 1/2 * (y – t)^2 とする
    • いわゆる最小自乗誤差
    • 1/2 を乗じているのは微分したときに (y-t) となりすっきりするから
  • 入力から出力値を計算し、誤差を求め、それを元に係数 W0, W1, W2 を最急降下法により修正する
  • Wi について、∂E/∂Wi を計算し、それに定数 α をかけたものを Wi から減ずる(これを「最急降下法」と呼ぶ)
    • Wi -= α * ∂E/∂Wi
    • α は 0.01 などの小さい値。大きければ収束が速いが、発散する場合がある
  • ∂E/∂Wi は y を用いた 微分 の連鎖律により計算する
    • ∂E/∂Wi = ∂E/∂y * ∂y/∂Wi
    • ∂E/∂y = y – t, ∂y/∂Wi = Xi なので
    • ∂E/∂Wi = (y – t) * Xi