直線探索

提供: testwiki
2024年10月14日 (月) 23:27時点におけるimported>官翁による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

テンプレート:出典の明記 直線探索(ちょくせんたんさく、テンプレート:Lang-en-short)は、連続最適化問題において、目的関数 f:n極小値 𝐱* を求めるための2つの基本的な反復的アプローチのうちの一つである。もう一つの基本的な反復的アプローチの方法は信頼領域である。

直線探索のアプローチでは、最初に目的関数 f の値が小さくなる降下方向を求め、次に、その方向に 𝐱 をどのくらい動かすかを表すステップサイズを計算する。そのステップサイズを用いて、解を求める方法として、最急降下法ニュートン法準ニュートン法など、数多く存在する。ステップサイズは厳密に求める方法と近似的に求める方法がある。

直線探索の主な使用例

次の勾配法の例は、第4ステップで直線探索を用いている。

  1. 反復カウンターを k=0 とする。最小値の初期推定値を 𝐱0 とする。
  2. 以下を反復する:
  3.     降下方向 𝐩k を計算する。
  4.     h(α)=f(𝐱k+α𝐩k)α+ 上で最小化するような αk を決定する。
  5.     𝐱k+1=𝐱k+αk𝐩kk=k+1 と更新する。
  6. f(𝐱k) が十分小さくなるまで続ける。

第4ステップにおいては、h(αk)=0 を解いて h の厳密な最小値を求める方法と、十分な減少が得られればよいとして大まかに最小化する方法がある。前者の例としては共役勾配法がある。後者は数多くの方法があるが、例えばバックトラック法Wolfe条件を用いた方法がある。

他の最適化法と同様に、直線探索は局所最小値を脱出するために焼きなまし法と組み合わせることができる。

アルゴリズム

直接探索法

この方法では、最初に最小値を囲むような2点x1x2を決めなければならない。次に、この区間を内点 x3x4 で分割し、それぞれの点で f(x) を計算する。そして、x1x2のうち、x3x4で目的関数が大きい方に隣接しているものを除去する。これ以降のステップでは、各ステップで1つの内点のみを加えていけばよい。区間を分割する方法は数多くある[1]が、黄金分割探索は特にシンプルで効果的である。黄金分割探索では、区間の比率はどのステップでも一定である。

1φ(x2x1)=x4x1=x2x3=φ(x2x4)=φ(x3x1)=φ2(x4x3) where φ=12(1+5)1.618

脚注

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