最急降下法

提供:testwiki
ナビゲーションに移動 検索に移動

テンプレート:About テンプレート:Redirect 最急降下法(さいきゅうこうかほう、テンプレート:Lang-en-short[1]は、関数(ポテンシャル面)の傾き(一階微分)のみから、関数の最小値を探索する連続最適化問題勾配法アルゴリズムの一つ。勾配法としては最も単純であり、直接・間接にこのアルゴリズムを使用している場合は多い。最急降下法をオンライン学習に改良した物を確率的勾配降下法と呼ぶ。

尚、最急降下法の“最急”とは、最も急な方向に降下することを意味している。すなわち、収束の速さに関して言及しているわけではない(より速いアルゴリズムがあり得る)。

手法

テンプレート:Mvar 次のベクトル テンプレート:Math引数とする関数テンプレート:Math としてこの関数の極小値を求めることを考える。

勾配法では反復法を用いて テンプレート:Mvar を解に近づけていく。テンプレート:Mvar 回目の反復で解が テンプレート:Math の位置にあるとき、最急降下法では次のようにして値を更新する[1]

テンプレート:NumBlk

ここで テンプレート:Mvar は 1 回に更新する数値の重みを決めるパラメータであり、通常は小さな正の定数である。パラメータ テンプレート:Mvar の適正な範囲は多くの場合、取り扱う問題の性質によって決まる。例えば力学問題を計算する際、計算結果が発散するような設定を与えることは、何らかの意味で非物理的な仮定をしている(あるいは元々のモデルの適用範囲を超えている)ことを示している。

例えば、テンプレート:Math の最小値の探索において、テンプレート:Math の場合、反復ごとに悪い解へと向かう。解の探索能力、収束速度は テンプレート:Mvar に強く依存しており、テンプレート:Mvar が大きすぎると発散の恐れがあり、小さすぎると収束が遅くなる(テンプレート:仮リンクも参照)。そのため、探索の初期では大きめにし、ある程度収束したら小さくする方法もとられる。小さくするやり方は反復回数の逆数指数関数的減衰などがあり、焼きなまし法が参考になる。

勾配ベクトル テンプレート:Math は関数 テンプレート:Mvar の変化率が最も大きい方向を向く。したがって テンプレート:Mvar が適切な値を持つなら、テンプレート:Math は必ず テンプレート:Math より小さくなる。

最急降下法のスキームは以下のようになる[1]

  1. テンプレート:Mvar初期値 テンプレート:Math を決める(必要であれば、反復回数を記憶する変数を テンプレート:Math と初期化しておく。実際には テンプレート:Mvar を記憶する領域は 1 つで充分なので、単純に最急降下法のみを行う場合には必要ない)。
  2. テンプレート:Math であるなら終了する(実際は正確に 0 になることはないので、十分小さな値になれば終了する)。
  3. 上記の記述に従って テンプレート:Math を更新する。
  4. 2 に戻る(必要なら テンプレート:Mvar の値を 1 つ進める)。

特徴

  • 傾き(一階微分)のみしか見ないので手法として簡便で計算も速い。
  • 勾配法のため、局所的な最小値に捉まり易く、大域的な最小値を求めるのは困難であることが欠点である。それを回避するために、複数の初期値から探索を行うなどの対策が必要である。対策としては確率的勾配降下法も参照。
  • 関数 テンプレート:Mvar の偏微分が計算できなくてはならない。

出典

テンプレート:Reflist

関連項目

テンプレート:最適化アルゴリズム テンプレート:数学