线搜索方法
本文主要介绍线搜索方法(包含梯度下降,牛顿法,拟牛顿法的分析)。
线搜索方法是一种迭代算法,迭代的过程由下列公式给出。
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为步长, p k p_k pk为方向。我们需要确定这两个参数,来帮助我们迭代。
步长
在理想情况下我们需要选择步长来最小化 ϕ ( α ) = f ( x k + α p k ) , α > 0 \phi(\alpha)=f(x_k+\alpha p_k),\alpha>0 ϕ(α)=f(xk+αpk),α>0。但是寻找到满足最小化的情况很难。经典的线搜索算法尝试 α \alpha α的一系列候选值,当满足某些条件时,停下来时接收这些值中的一个。
WOLFE 条件
首先我们定义一下
ϕ ( α ) = f ( x k + α p k ) , α > 0 \phi(\alpha)=f(x_k+\alpha p_k),\alpha>0 ϕ(α)=f(xk+αpk),α>0
wolfe条件包含了两个条件,第一个是充分下降(sufficient decrease),第二个是曲率条件(curvature conditions)。
充分下降
f ( x k + α p k ) ≤ f ( x k ) + c 1 α ∇ f k T p k f(x_k+\alpha p_k) \leq f(x_k)+c_1\alpha \nabla f^T_k p_k f(xk+αpk)≤f(xk)+c1α∇fkTpk
其中 c 1 ∈ ( 0 , 1 ) c_1\in (0,1) c1∈(0,1),这个说明函数的下降需要和步长和方向导数成正比,在这里叫作Armijo condition。等式的右边是一个关于 α \alpha α的线性函数,斜率是负的。
曲率条件
当 α \alpha α很小的时候充分下降退化为 f ( x k + α p k ) ≤ f ( x k ) f(x_k+\alpha p_k) \leq f(x_k) f(xk+αpk)≤f(xk),无法保证算法的收敛性,所以还需要增加第二个条件来保证步长不会太小。
∇ f ( x k + α k p k ) T p k ≥ c 2 ∇ f k T p k \nabla f(x_k+\alpha_k p_k)^T p_k \geq c_2 \nabla f^T_k p_k ∇f(xk+αkpk)Tpk≥c2∇fkTpk
等式的左边是 ϕ ( α k ) \phi(\alpha_k) ϕ(αk)的导数。曲率条件的意思是 ϕ \phi ϕ在 α k \alpha_k αk的斜率大于 c 2 × ϕ ′ ( 0 ) c_2 \times \phi^{\prime}(0) c2×ϕ′(0)。从直观上来看如果等式左边接近0时,曲率接近水平,这样就接近最优解。
上述两个条件共同构成了Wolfe条件。强Wolfe条件和wolfe第一个不等式一样,只是在第二个不等式换成
∣ ∇ f ( x k + α k p k ) T p k ∣ ≤ c 2 ∣ ∇ f k T p k ∣ |\nabla f(x_k+\alpha_k p_k)^T p_k| \leq c_2 |\nabla f^T_k p_k| ∣∇f(xk+αkpk)Tpk∣≤c2∣∇fkTpk∣
换成这样是为了不让 ϕ ′ ( α k ) \phi^{\prime}(\alpha_k) ϕ′(αk)过大。
THE GOLDSTEIN CONDITIONS
与Wolfe条件一样,Goldstein条件也能保证充分下降并且步长α不会太短。Goldstein条件也可以表述为一对不等式,如下所示:
f ( x k ) + ( 1 − c ) α k ∇ f k T p k ≤ f ( x k + α k p k ) ≤ f ( x k ) + c α k ∇ f k T p k f(x_k)+(1-c)\alpha_k \nabla f^T_k p_k \leq f(x_k+\alpha_k p_k) \leq f(x_k) + c\alpha_k \nabla f^T_k p_k f(xk)+(1−c)αk∇fkTpk≤f(xk+αkpk)≤f(xk)+cαk∇fkTpk
第二个不等式就是充分下降条件,而第一个不等式对步长的限制参照上图可以比较直观的看出来。
Backtracking Line Search
即首先定一个值 α ˉ \bar{\alpha} αˉ,然后反复乘以 ρ \rho ρ,直到最后满足条件。
线搜索方法收敛性分析
首先我们定义
c o s θ k = − ∇ f k T p k ∥ ∇ f k ∥ ∥ p k ∥ cos\theta_k=\frac{-\nabla f^T_k p_k}{ \left\| \nabla f_k\right\| \left\| p_k\right\|} cosθk=∥∇fk∥∥pk∥−∇fkTpk
我们有定理
如果
∥ ∇ f ( x ) − ∇ f ( x ~ ) ∥ ≤ L ∥ x − x ~ ∥ \left\| \nabla f(x)- \nabla f(\tilde{x}) \right\| \leq L\left\| x-\tilde{x} \right\| ∥∇f(x)−∇f(x~)∥≤L∥x−x~∥
那么
∑ k = 0 c o s 2 θ k ∥ ∇ f k ∥ 2 < ∞ \sum_{k=0}cos^2\theta_k \left\| \nabla f_k \right\|^2 < \infty k=0∑cos2θk∥∇fk∥2<∞
这个定理还有一些条件需要满足,具体参照书本,这里就不细写了😬。定理的证明书中也有详细介绍。
收敛速度
最速下降法的收敛速度
为简单起见,在最速下降法中,假设目标函数为二次函数
f ( x ) = 1 2 x T Q x − b T x f(x)=\frac{1}{2}x^TQx-b^Tx f(x)=21xTQx−bTx
我们可以很容易的算出步长为
α k = ∇ f k T ∇ f k ∇ f k T Q ∇ f k \alpha_{k}=\frac{\nabla f_{k}^{T} \nabla f_{k}}{\nabla f_{k}^{T} Q \nabla f_{k}} αk=∇fkTQ∇fk∇fkT∇fk
则算法的迭代公式为
x k + 1 = x k − ( ∇ f k T ∇ f k ∇ f k T Q ∇ f k ) ∇ f k x_{k+1}=x_{k}-\left(\frac{\nabla f_{k}^{T} \nabla f_{k}}{\nabla f_{k}^{T} Q \nabla f_{k}}\right) \nabla f_{k} xk+1=xk−(∇fkTQ∇fk∇fkT∇fk)∇fk
我们定义
∥ x ∥ Q 2 = x T Q x \left\| x \right\|^2_Q = x^TQx ∥x∥Q2=xTQx
由于梯度为0的时候 Q x ∗ = b Qx^*=b Qx∗=b,我们可以得到
1 2 ∥ x − x ∗ ∥ Q 2 = f ( x ) − f ( x ∗ ) \frac{1}{2} \left\| x-x^* \right\|^2_Q = f(x)-f(x^*) 21∥x−x∗∥Q2=f(x)−f(x∗)
接着再得到
∥ x k + 1 − x ∗ ∥ Q 2 = { 1 − ( ∇ f k T ∇ f k ) 2 ( ∇ f k T Q ∇ f k ) ( ∇ f k T Q − 1 ∇ f k ) } ∥ x k − x ∗ ∥ Q 2 \left\|x_{k+1}-x^{*}\right\|_{Q}^{2}=\left\{1-\frac{\left(\nabla f_{k}^{T} \nabla f_{k}\right)^{2}}{\left(\nabla f_{k}^{T} Q \nabla f_{k}\right)\left(\nabla f_{k}^{T} Q^{-1} \nabla f_{k}\right)}\right\}\left\|x_{k}-x^{*}\right\|_{Q}^{2} ∥xk+1−x∗∥Q2={1−(∇fkTQ∇fk)(∇fkTQ−1∇fk)(∇fkT∇fk)2}∥xk−x∗∥Q2
但是这样的表达式很难看,所以有数学家又将这些改写成了
∥ x k + 1 − x ∗ ∥ Q 2 ≤ ( λ n − λ 1 λ n + λ 1 ) 2 ∥ x k − x ∗ ∥ Q 2 \left\|x_{k+1}-x^{*}\right\|_{Q}^{2} \leq\left(\frac{\lambda_{n}-\lambda_{1}}{\lambda_{n}+\lambda_{1}}\right)^{2}\left\|x_{k}-x^{*}\right\|_{Q}^{2} ∥xk+1−x∗∥Q2≤(λn+λ1λn−λ1)2∥xk−x∗∥Q2
其中 λ 1 ≤ λ 2 ≤ . . . ≤ λ n \lambda_1\leq\lambda_2\leq...\leq \lambda_n λ1≤λ2≤...≤λn是Q的特征值。这证明了最速下降法的收敛速度是线性收敛。
牛顿法收敛速度
在牛顿法中方法的表达如下所示
P k N = − ∇ 2 f k − 1 ∇ f k P^N_k=-\nabla^2f^{-1}_{k}\nabla f_k PkN=−∇2fk−1∇fk
我们能够得到定理,具体证明参照书本
拟牛顿法收敛速度
P k = − B k − 1 ∇ f k P_k=-B^{-1}_{k}\nabla f_k Pk=−Bk−1∇fk
拟牛顿法的收敛速度为超线性收敛
海森矩阵修正的牛顿法
由于海森矩阵有时候并不能保证它是正定的,这个时候算法的收敛性无法得到保证,所以有时我们需要对海森矩阵进行修改。
我们可以使用Levenberg-Marquardt修正,这个修正的思路是比较简单。由于原本的海森矩阵中有负的特征值,所以我们另外构造出一个对角阵 μ I \mu I μI,将这个对角阵加到原本的海森矩阵上,从而保证得到的矩阵为正定的矩阵。使用得到的矩阵代替原本的矩阵,这样就能保证算法的收敛性。
参考资料
① Numerical Optimization