数值计算之 线搜索法,Armijo,Wolfe,Goldstein条件,回溯法

前言

本篇是基于梯度的优化方法的补充篇

梯度法的步长

梯度下降法、牛顿法、拟牛顿法的主要目的都是求出增量方向。求出增量方向后,如果使用固定步长进行更新,当步长太大导致优化函数与其泰勒展开偏差太大时,可能出现优化函数不降反增的情况,导致迭代不收敛。

因此在获得增量方向后,还需要确定迭代的步长。常用的方法是线搜索法。

线搜索法

线搜索法在求出优化函数 f ( x ) f(\bf x) f(x) x k \bf x_k xk的增量方向后,构建以下问题:
min ⁡ α ϕ ( α ) = f ( x k + α p k ) \min_{\alpha} \quad \phi(\alpha)=f({\bf x_k}+\alpha {\bf p_k}) αminϕ(α)=f(xk+αpk)

构造的函数是一元函数,其极值点处的导数为零:
ϕ ′ ( α ) = ∇ f T ( x k + α p k ) p k = 0 \phi'(\alpha)=\nabla f^T({\bf x_k}+\alpha{\bf p_k}){\bf p_k}=0 ϕ(α)=fT(xk+αpk)pk=0
这样就能获得步长的精确解,也就是所谓的精确线搜索方法。但是实际操作中,如果梯度没有解析式,那么上面这个方程的解的计算是很困难的。

非精确线搜索法

非精确线搜索法不需要找到精确的步长,而是希望找到一个能够使优化函数 f f f稳定收敛并且下降速度较快的步长。此时的步长 α \alpha α通常存在于一个或数个区间内。

Armijo条件

Armijo条件又被称为充分下降条件,是使得 f f f稳定收敛的充分条件,也是最简单的条件。

如下图所示,实线是函数 ϕ ( α ) = f ( x k + α p k ) \phi(\alpha)=f({\bf x_k}+\alpha {\bf p_k}) ϕ(α)=f(xk+αpk)的图像,虚线 l ( α ) l(\alpha) l(α)表达式为:
ϕ ′ ( α ) = ∇ f T ( x k + α p k ) p k l ( α ) = ϕ ( 0 ) + c 1 ϕ ′ ( 0 ) ( x − x k ) , 0 < c 1 < 1 \phi'(\alpha)=\nabla f^T({\bf x_k}+\alpha{\bf p_k}){\bf p_k} \\ \quad \\ l(\alpha)=\phi({0})+c_1\phi'(0)({\bf x-x_k}),0<c_1<1 ϕ(α)=fT(xk+αpk)pkl(α)=ϕ(0)+c1ϕ(0)(xxk),0<c1<1
由图可以看出,当实线在虚线下方时, ϕ ( α ) ≤ ϕ ( 0 ) \phi({\alpha})\le\phi({0}) ϕ(α)ϕ(0),也就是函数必然下降。
在这里插入图片描述
这就是Armijo条件,用表达式来表示就是:
ϕ ( α ) ≤ I ( α ) → f ( x k + α p k ) ≤ f ( x k ) + c 1 α ∇ f T ( x k ) p k \phi(\alpha)\le I(\alpha) \\ \quad \\ \to \quad f({\bf x_k}+\alpha {\bf p_k})\le f({\bf x_k})+c_1\alpha\nabla f^T({\bf x_k}){\bf p_k} ϕ(α)I(α)f(xk+αpk)f(xk)+c1αfT(xk)pk

Wolfe条件

Armijo条件有一个问题:虽然能够保证梯度下降,但是当步长 α \alpha α极小的时候,必然能够满足Armijo条件,但是下降的速度很慢,而且超小的步长可能导致迭代中的除零错误(Nan)。我们需要保证迭代的每一步都有充分的下降。


如下图所示,如果我们限制 ϕ ′ ( α ) ≥ c 1 ϕ ′ ( 0 ) \phi'(\alpha)\ge c_1\phi'(0) ϕ(α)c1ϕ(0),也就是 ϕ ( α ) \phi(\alpha) ϕ(α)的斜率不够陡,达到相对平缓的区域,就形成了Curvature
在这里插入图片描述
将Armijo条件与Curvature条件合并,就是Wolfe条件,其表达式如下:
f ( x k + α p k ) ≤ f ( x k ) + c 1 α ∇ f T ( x k ) p k ∇ f T ( x k + α p k ) p k ≥ c 2 ∇ f T ( x k ) p k 0 < c 1 < c 2 < 1 f({\bf x_k}+\alpha {\bf p_k})\le f({\bf x_k})+c_1\alpha\nabla f^T({\bf x_k}){\bf p_k} \\ \quad \\ \nabla f^T({\bf x_k}+\alpha{\bf p_k}){\bf p_k} \ge c_2\nabla f^T({\bf x_k}){\bf p_k} \\ \quad \\ 0<c_1<c_2<1\\ f(xk+αpk)f(xk)+c1αfT(xk)pkfT(xk+αpk)pkc2fT(xk)pk0<c1<c2<1
Wolfe条件如下图所示:
在这里插入图片描述

Goldstein条件

Wolfe条件需要求优化函数的梯度,比较麻烦。于是出现了只需要求优化函数值的Goldstein条件:
f ( x k ) + ( 1 − c 1 ) α ∇ f T ( x k ) p k ≤ f ( x k + α p k ) ≤ f ( x k ) + c 1 α ∇ f T ( x k ) p k 0 < c 1 < 0.5 f({\bf x_k})+(1-c_1)\alpha\nabla f^T({\bf x_k}){\bf p_k} \le f({\bf x_k}+\alpha {\bf p_k})\le f({\bf x_k})+c_1\alpha\nabla f^T({\bf x_k}){\bf p_k} \\ 0<c_1<0.5 f(xk)+(1c1)αfT(xk)pkf(xk+αpk)f(xk)+c1αfT(xk)pk0<c1<0.5
Goldstein条件的左边使得步长不会太小,右边保证梯度下降,但是可能出现找不到最优步长的情况,如下图所示。
在这里插入图片描述

回溯法

由于Wolfe条件实现复杂,实际使用中,可以采用回溯法实现Armijo条件或者Goldstein条件,具体流程是:

  1. 选择一个初始步长 α 0 \alpha_0 α0,和一个缩小系数 ρ < 1 \rho<1 ρ<1
  2. α 0 \alpha_0 α0代入Armijo条件或者Goldstein条件
  3. 如果满足,则 α = α 0 \alpha=\alpha_0 α=α0,结束线搜索;否则, α 0 = ρ α 0 \alpha_0=\rho \alpha_0 α0=ρα0,回到步骤2

当初始 α 0 \alpha_0 α0比较大时,回溯法搜索到的步长就不会太小。

后记

下篇可能会继续学习共轭梯度法。

  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值