Yuta Hayashibe

勾配法 (Gradient method)

  • 最適化問題で関数の勾配に関する情報を解の探索に用いるアルゴリズムの総称
  • 導関数が必要(目的関数の偏微分を計算できなくてはいけない)

最急勾配法

  • 目的関数ffが最も減少する方向に進む場合,最急降下法とよぶ
  • 手順
    1. x\bold{x}の初期値を決める
    2. 更新式xnew=xold+ηxf(xold){\bold x}^{new} = {\bold x}^{old} + \eta \nabla_{{\bold x}} f({\bold x}^{old})を用いてx{\bold x}を更新する.
      目的関数をx\bold{x}で微分したものにxold{\bold x}^{old}を代入した第2項が,傾きが最も急な方向をあらわす. η\etaは学習率.
    3. 目的関数の値の変化が一定値以下になるまで2を繰り返す
  • 特徴
    • 傾き(一階微分)のみしか見ないので手法として簡便で計算も速い
    • 局所解に陥りやすい

ニュートン法

  • コンセプト
    • f(x)=0f(x) = 0になるような値xxを探すとき,(xold,f(xold))(x^{old}, f(x^{old}))におけるffの接線llの切片(y=0y=0となる点)xnew=xoldxoldf(xold)x^{new} = x^{old} - \frac{x^{old}}{f'(x^{old})}は,xoldx^{old}より真の値xxに近くなる.
      これを,値の変化が一定値以下になるまで繰り返すことでxxの近似値を得られる.
    • 接線を一次近似式,接線のx切片を一次近似式の零点と考えることにより,高次元関数の場合に一般化できる.
      • f(x)=0f({\bold x}) = 0となるx\bold{x}を求める更新式はxnew=xold(f(xold))1f(xold){\bold x}^{new} = {\bold x}^{old} - \left( \partial f ({\bold x}^{old}) \right)^{-1} f({\bold x}^{old})
      • f(xold)\partial f ({\bold x}^{old})はヤコビ行列
  • 最適化においてはxf(x)=0\nabla_{{\bold x}} f({\bold x}) = 0を解くことで最適解が求まる(f(x)f({\bold x})の極値を求める)ので,
    更新式xnew=xoldHxold1xf(xold){\bold x}^{new} = {\bold x}^{old} - H_{{ \bold x}^{old}}^{-1} \nabla_{{\bold x}} f({\bold x}^{old})f(x)f({\bold x})を最大化できる
    • HxH_{{\bold x}}はヘッセ行列
    • ヘッセ行列と勾配ベクトル(\nabla)を用いる
  • 特徴
    • 必ず収束するとは限らない(が大抵収束する.反復回数に上限を設けたほうがよい)

準ニュートン法

  • ヘッセ行列を計算せず,勾配ベクトルで近似する
  • いろいろなアルゴリズムがある
    • 大規模(高次元)問題に対応した記憶制限準ニュートン法のアルゴリズムL-BFGS法が最もよく用いられている

参考文献