系列文章
【数值最优化】1. 线搜索方法
【数值最优化】2. 拟牛顿
线搜索是一种寻找函数 f ( x ) f(x) f(x)最值(此处默认为最小值)的迭代方法. 总体上, 线搜索方法迭代公式为
x k + 1 = x k + α k p k , x_{k+1}=x_{k}+\alpha_k p_k, xk+1=xk+αkpk,
其中 α k \alpha_k αk是步长(step length), p k p_k pk是下降方向(descent direction), p k T ∇ f k < 0 p_k^{\mathsf{T}}\nabla f_{k}<0 pkT∇fk<0, p k = − B k − 1 ∇ f k p_k=-B_{k}^{-1}\nabla f_{k} pk=−Bk−1∇fk.
一、步长选取
(1) Wolfe conditions
下降方向已经确定, 选取合适的步长. 令 ϕ ( α ) = f ( x k + α p k ) \phi(\alpha)=f(x_{k}+\alpha p_k) ϕ(α)=f(xk+αpk). 只要求 ϕ ( α ) < ϕ ( 0 ) \phi(\alpha)<\phi(0) ϕ(α)<ϕ(0)是不够的, 它可能还没到最小值, 但函数值已经收敛了. 所以提出了Armijo condition f ( x k + α p k ) ≤ c 1 α ∇ f k T p k , f(x_{k}+\alpha p_k)\le c_1\alpha \nabla f_k^{\mathsf{T}}p_k, f(xk+αpk)≤c1α∇fkTpk,其中 0 < c 1 < 1 0<c_1<1 0<c1<1, 一般取 1 0 − 4 10^{-4} 10−4. 这个条件要求函数值下降的足够多(在一条下降的直线的下方), 且总是能找到一个 α \alpha α能满足这个条件, 因为 c 1 ∈ ( 0 , 1 ) c_1\in (0,1) c1∈(0,1).
只有Armijo condition可能会使得 α \alpha α太小了, 收敛太慢, 为了让步长稍微大一点, 提出了curvature condition ∇ f ( x k + α k p k ) T p k ≥ c 2 ∇ f k T p k , \nabla f(x_{k}+\alpha_k p_k)^{\mathsf{T}}p_{k}\ge c_2 \nabla f_{k}^{\mathsf{T}} p_k, ∇f(xk+αkpk)Tpk≥c2∇fkTpk,其中 c 2 ∈ ( c 1 , 1 ) c_2\in(c_1,1) c2∈(c1,1). 采用Newton method或者quasi-Newton method时, c 2 c_2 c2常取 0.9 0.9 0.9, nonlinear conjugate gradient method, 0.1 0.1 0.1.
两个条件合在一起成为Wolfe conditions: f ( x k + α k p k ) ≤ f ( x k ) + c 1 α k ∇ f k T p k , ∇ f ( x k + α k p k ) T p k ≥ c 2 ∇ f k T p k , \begin{aligned} f(x_k+\alpha_k p_k)\le & f(x_{k})+c_1\alpha_k\nabla f_k^{\mathsf{T}} p_k,\\ \nabla f(x_{k}+\alpha_k p_k)^{\mathsf{T}}p_k\ge & c_2\nabla f_{k}^{\mathsf{T}}p_k, \end{aligned} f(xk+αkpk)≤∇f(xk+αkpk)Tpk≥f(xk)+c1αk∇fkTpk,c2∇fkTpk, 0 < c 1 < c 2 < 1 0<c_1<c_2<1 0<c1<c2<1.
Strong Wolfe conditions:
f ( x k + α k p k ) ≤ f ( x k ) + c 1 α k ∇ f k T p k , ∣ ∇ f ( x k + α k p k ) T p k ∣ ≥ c 2 ∣ ∇ f k T p k ∣ , \begin{aligned} f(x_k+\alpha_k p_k)\le & f(x_{k})+c_1\alpha_k\nabla f_k^{\mathsf{T}} p_k,\\ \left|\nabla f(x_{k}+\alpha_k p_k)^{\mathsf{T}}p_k\right|\ge & c_2\left|\nabla f_{k}^{\mathsf{T}}p_k\right|, \end{aligned} f(xk+α