4. 直線探索法

2020/1/6公開

直線探索法

直線探索法(line search method)は、現在の点x(k)Rnx _ {(k)} \in \mathbb{R} ^ nからm(k)Rnm _ {(k)} \in \mathbb{R} ^ nにより方向が定められたtRt \in \mathbb{R}を媒介変数とする直線x(k)+tm(k)x _ {(k)} + t m _ {(k)}を探索直線として、目的関数f ⁣:RnRf \colon \mathbb{R} ^ n \to \mathbb{R}の探索直線上における極値への更新を繰り返すことで最適解へ近づいていく手法の総称である。探索方向m(k)m _ {(k)}に目的関数の勾配gradf(x(k))\operatorname{grad} f(x _ {(k)})の情報を用いる場合は勾配法(gradient descent)ともいう。

すなわち、アルゴリズムとしてはまず現在の点x(k)x _ {(k)}から更新方向m(k)m _ {(k)}を定め、次に

ddtf(x(k)+tm(k))=0(4.1)\frac{d}{dt} f (x _ {(k)} + t m _ {(k)}) = 0 \tag{4.1}

を満たすttを見つけてt(k)t _ {(k)}とおき、

x(k+1)=x(k)+t(k)m(k)x _ {(k+1)} = x _ {(k)} + t _ {(k)} m _ {(k)}

と更新することを繰り返すことになる。このt(k)t _ {(k)}を更新のステップサイズ(step size)という。

現実問題として (4.1) 式を満たすttを見つけること自体もttに関する最適化問題になっているので、(4.1) 式を満たすttを見つけるのは難しい場合がある。たとえば目的関数ffを評価するのに時間がかかるような問題では厳密にttを求めるのは困難である。

ステップサイズttを厳密に求める直線探索法を厳密直線探索法という。厳密直線探索法には

  • 黄金分割探索法

  • セカント法(割線法)

などがある。

しかし、適当なt0t \neq 0 を選んで点x=x(k)+tm(k)x ^ \prime = x _ {(k)} + t m _ {(k)}を考えたとき、点xx ^ \primeにおける探索方向mm ^ \primeは一般にm(k)m _ {(k)}とは一致しない。たとえば最急降下法では

m(k)=gradf(x(k))m _ {(k)} = - \operatorname{grad} f(x _ {(k)})

によって探索方向を定義するが、一般に

gradf(x)gradf(x(k))- \operatorname{grad} f (x ^ \prime) \neq - \operatorname{grad} f (x _ {(k)})

である。つまり (4.1) 式を満たすttを探す間にも探索すべき方向は刻一刻と変化するから、実用上はステップサイズt(k)t _ {(k)}を厳密に求めてもあまり意味がない。

実際、理論的にもステップサイズはあとで解説する Armijo 条件や Wolfe 条件を満たしていれば収束が保証される場合が多い。Armijo 条件を満たす点を探すには

  • バックトラック法(backtracking)

がある。

探索方向に勾配を利用すると、勾配は最適解の付近ではそのノルムが 0 に近づくという性質があるから、実用上は

  • ステップサイズを小さい定数にする

  • ステップサイズを単調減少させる

といった方法でも十分であり、これらの手法もよく用いられる。

しかしその一方で、ステップサイズを

  • 小さすぎる定数にする\Rightarrow収束するまでに非常に時間がかかる

  • 大きすぎる定数にする\Rightarrowアルゴリズムが発散/振動する

  • 単調減少のスケジュールがうまくない\Rightarrow収束までに時間がかかったり発散/振動したりする

といった問題が常につきまとうのも事実であり、ステップサイズのチューニングに時間がかかることもある。

ステップサイズの決定は最適化アルゴリズムの実行時間や収束にクリティカルに影響する重要なパラメータだが、大抵の場合は人間が調整するハイパーパラメータとして扱われ、勘、経験、試行錯誤に頼って決められる。ステップサイズを決定するための方法論は現代においても未熟である。

参考文献

Last updated