ウルフ条件

非制限最適化問題において、ウルフ条件（ウルフじょうけん、英: Wolfe conditions）とは、非厳密直線探索を行ううえで用いられる一連の不等式をいう。特に準ニュートン法を行う際によく用いられる。1969年にフィリップ・ウルフ（英語版）が初めて発表した。 ある滑らかな関数 f : R n → R {\displaystyle f\colon \mathbb {R} ^{n}\to \mathbb {R} } について非制限最適化問題 min x f ( x ) {\displaystyle \min _{x}f({\boldsymbol {x}})} を解く際、近似的な部分問題 min α f ( x k + α p k ) {\displaystyle \min _{\alpha }f({\boldsymbol {x}}_{k}+\alpha {\boldsymbol {p}}_{k})} を解くことがしばしばある。ここでxkは現状の最適推定解、 p k ∈ R n {\displaystyle {\boldsymbol {p}}_{k}\in \mathbb {R} ^{n}} は探索方向、 α ∈ R {\displaystyle \alpha \in \mathbb {R} } はステップ長である。 非厳密直線探索は、損失関数を厳密に最小化するのではなく、「十分に」小さくするステップ長 α ∈ R + {\displaystyle \alpha \in \mathbb {R} ^{+}} を得る効率的な方法を提供する。これを行う際、ウルフ条件は新たな探索方向pkを探索する前にあるαの推定値が満たすべき条件として用いることができる。 あるステップ長αkがウルフ条件を満たすとは、探索方向pkが与えられたものとして以下の2つの不等式がなりたつことをいう。 f ( x k + α k p k ) ≤ f ( x k ) + c 1 α k p k ⊤ ∇ f ( x k ) {\displaystyle f({\boldsymbol {x}}_{k}+\alpha _{k}{\boldsymbol {p}}_{k})\leq f({\boldsymbol {x}}_{k})+c_{1}\alpha _{k}{\boldsymbol {p}}_{k}^{\top }\nabla f({\boldsymbol {x}}_{k})} − p k ⊤ ∇ f ( x k + α k p k ) ≤ − c 2 p k ⊤ ∇ f ( x k ) {\displaystyle -{\boldsymbol {p}}_{k}^{\top }\nabla f({\boldsymbol {x}}_{k}+\alpha _{k}{\boldsymbol {p}}_{k})\leq -c_{2}{\boldsymbol {p}}_{k}^{\top }\nabla f({\boldsymbol {x}}_{k})} ここで、0 < c1 < c2 < 1である(不等式iiを評価する際、たとえば最急降下法の場合は p k = − ∇ f ( x k ) {\displaystyle {\boldsymbol {p}}_{k}=-\nabla f({\boldsymbol {x}}_{k})} 、ニュートン法の場合は p k = − H − 1 ∇ f ( x k ) {\displaystyle {\boldsymbol {p}}_{k}=-{\boldsymbol {H}}^{-1}\nabla f({\boldsymbol {x}}_{k})} でHが正定値行列であるため p k ⊤ ∇ f ( x k ) < 0 {\displaystyle {\boldsymbol {p}}_{k}^{\top }\nabla f({\boldsymbol {x}}_{k})<0} が成り立つことに留意が必要である)。 c1はとても小さく、c2はそれよりもかなり大きくとることが多い。ノセダル（英語版）とライトはニュートン法および準ニュートン法についてはc1 = 10−4, c2 = 0.9、非線形共役勾配法についてはc2 = 0.1を例として与えている。不等式iはアルミホ条件（英: Armijo condition）と呼ばれ、不等式iiは曲率条件と呼ばれる。不等式iはステップ長αkがfを「十分に」減少させることを、iiは勾配が十分に減少したことを保証する。条件iおよびiiはステップ長の上限と下限をそれぞれあたえるものと解釈できる。 方向pkに制限した一変数関数φ(α) = f(xk+αkpk)を考える。ウルフ条件はφの最適点からは遠いステップ長を与える場合がある。曲率条件を次のように変更したとする。 | p k ⊤ ∇ f ( x k + α k p k ) | ≤ c 2 | p k ⊤ ∇ f ( x k ) | {\displaystyle \left|{\boldsymbol {p}}_{k}^{\top }\nabla f({\boldsymbol {x}}_{k}+\alpha _{k}{\boldsymbol {p}}_{k})\right|\leq c_{2}\left|{\boldsymbol {p}}_{k}^{\top }\nabla f({\boldsymbol {x}}_{k})\right|} iおよびiiiは強いウルフ条件と呼ばれ、αkをφの臨界点付近に制限する。 最適化アルゴリズムにウルフ条件を課す主な理由は、勾配がゼロに収束することを保証するためである。特に、pkと勾配との方向余弦（英語版） cos ⁡ θ k = ∇ f ( x k ) T p k ‖ ∇ f ( x k ) ‖ ‖ p k ‖ {\displaystyle \cos \theta _{k}={\frac {\nabla f(\mathbf {x} _{k})^{\mathrm {T} }\mathbf {p} _{k}}{\|\nabla f(\mathbf {x} _{k})\|\|\mathbf {p} _{k}\|}}} がゼロから遠くかつ条件iおよびiiが満たされる場合、 ∇ f ( x k ) → 0 {\displaystyle \nabla f(\mathbf {x} _{k})\rightarrow 0} が成り立つ。 もうひとつの動機は、 p k = − B k − 1 ∇ f ( x k ) {\displaystyle {\boldsymbol {p}}_{k}=-B_{k}^{-1}\nabla f({\boldsymbol {x}}_{k})} のように方向を求める準ニュートン法の場合、行列BkをBFGS法やDFP法で更新する、Bkが正定値かつiおよびiiが成り立つならばBk+1も正定値となる。 ウルフ条件はアルミホ条件よりも複雑であり、ウルフ条件にもとづく勾配降下法よりもアルミホ条件にもとづくもののほうがより良い理論的保証がある(Backtracking line searchの"Upper bound for learning rates"節および"Theoretical guarantee"節を参照)。 バックトラッキング直線探索（英語版） ^ Wolfe, P. (1969). “Convergence Conditions for Ascent Methods”. SIAM Review 11 (2): 226–235. doi:10.1137/1011036. JSTOR 2028111.  ^ Wolfe, P. (1971). “Convergence Conditions for Ascent Methods. II: Some Corrections”. SIAM Review 13 (2): 185–188. doi:10.1137/1013035. JSTOR 2028821.  ^ Nocedal, Jorge; Wright, Stephen (1999). Numerical Optimization. p. 38. https://books.google.com/books?id=epc5fX0lqRIC&pg=PA38  ^ Armijo, Larry (1966). “Minimization of functions having Lipschitz continuous first partial derivatives”. Pacific J. Math. 16 (1): 1–3. doi:10.2140/pjm.1966.16.1. http://projecteuclid.org/euclid.pjm/1102995080.  “Line Search Methods”. Numerical Optimization. Springer Series in Operations Research and Financial Engineering. (2006). pp. 30–32. doi:10.1007/978-0-387-40065-5_3. ISBN 978-0-387-30303-1  “Quasi-Newton Methods”. Numerical Optimization. Springer Series in Operations Research and Financial Engineering. (2006). pp. 135–163. doi:10.1007/978-0-387-40065-5_6. ISBN 978-0-387-30303-1