Armijo-Goldstein准则及Wolfe-Powell准则

一维搜索在最优化算法中扮演重要角色,包括Armijo-Goldstein和Wolfe-Powell准则。Armijo-Goldstein准则确保目标函数值下降且步长适中,而Wolfe-Powell准则进一步考虑梯度,确保切线斜率条件,更有效地收敛于极小值。这两个准则用于防止算法在寻找最小值时错过最优解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Armijo-Goldstein准则及Wolfe-Powell准则

line search(一维搜索,或线搜索)是最优化(Optimization)算法中的一个基础步骤/算法。它可以分为精确的一维搜索以及不精确的一维搜索两大类。

本文主要介绍一下,不精确的一维搜索的两大准则:Armijo-Goldstein准则 & Wolfe-Powell准则。

1 为什么要遵循这些准则

由于采用了不精确的一维搜索,所以,为了能让算法收敛(即:求得极小值),人们逐渐发现、证明了一些规律,当你遵循这些规律的时候,算法就很有可能收敛。因此,为了达到让算法收敛的目的,我们就要遵循这些准则。

2 Armijo-Goldstein准则

此准则是在196X年的时候由Armijo和Goldstein提出的。

Armijo-Goldstein准则的核心思想有两个:①目标函数值应该有足够的下降;②一维搜索的步长 α α α不应该太小。

这两个思想的意图非常明显。由于最优化问题的目的就是寻找极小值,因此,让目标函数函数值“下降”是我们努力的方向,所以①正是想要保证这一点。同理,②也类似:如果一维搜索的步长 α α α太小了,那么我们的搜索类似于在原地打转,可能也是在浪费时间和精力。

有了这两个指导思想,我们来看看Armijo-Goldstein准则的数学表达式:
f ( x k + a k d k ) ≤ f ( x k ) + a k ρ g k T d k ⋯ ( 1 ) f(x_k+a_kd_k) \leq f(x_k)+a_k \rho g_k^{T} d_k \cdots(1) f(xk+akdk)f(xk)+akρgkTdk(1) f ( x k + a k d k ) ≥ f ( x k ) + a k ( 1 − ρ ) g k T d k ⋯ ( 2 ) f(x_k+a_kd_k) \geq f(x_k)+a_k (1-\rho) g_k^{T} d_k \cdots(2) f(xk+akdk)f(xk)+ak(1ρ)gkTdk(2)
其中, 0 < ρ < 1 / 2 0<\rho<1/2 0<ρ<1/2。袁亚湘写的《最优化理论与方法》一书证明,如果没有这个条件的话,将影响算法的超线性收敛性。
在这里插入图片描述
Armijo-Goldstein准则可能会把极小值点(可接受的区间)判断在区间bc内。显而易见,区间bc是有可能把极小值排除在外的(极小值在区间ed内)。所以,为了解决这个问题,Wolfe-Powell准则应运而生。

3 Wolfe-Powell准则

Wolfe-Powell准则也有两个数学表达式,其中,第一个表达式与Armijo-Goldstein准则的(1)式相同,第二个表达式为:
▽ f ( x k + a k d k ) T d k ≥ σ g k T d k , σ ∈ ( ρ , 1 ) ⋯ ( 3 ) \bigtriangledown f(x_k+a_kd_k)^{T}d_k \geq \sigma g_k^{T} d_k, \sigma\in\mathbb (\rho,1) \cdots(3) f(xk+akdk)TdkσgkTdkσ(ρ,1)(3)
这个式子已经不是关于函数值的了,而是关于梯度的。此式的几何解释为:可接受点处的切线斜率 ≥ \geq 初始斜率的 σ \sigma σ

上面的图已经标出了 σ g k T d k \sigma g_k^{T} d_k σgkTdk那条线(即 e e e点处的切线),而初始点( α = 0 \alpha=0 α=0的点)处的切线是比 e点处的切线要“斜”的,由于 σ ∈ ( ρ , 1 ) \sigma\in\mathbb (\rho,1) σ(ρ,1),使得 e e e点处的切线变得“不那么斜”了。这样做的结果就是,我们将极小值包含在了可接受的区间内( e e e点右边的区间)。

Wolfe-Powell准则到这里还没有结束!在某些书中,你会看到用另一个所谓的**“更强的条件”**来代替(3)式,即:
∣ ▽ f ( x k + a k d k ) T d k ∣ ≤ − σ g k T d k , σ ∈ ( ρ , 1 ) ⋯ ( 4 ) \vert \bigtriangledown f(x_k+a_kd_k)^{T}d_k \vert \leq -\sigma g_k^{T} d_k, \sigma\in\mathbb (\rho,1) \cdots(4) f(xk+akdk)TdkσgkTdkσ(ρ,1)(4)
这个式子和(3)式相比,就是左边加了一个绝对值符号,右边换了一下正负号(因为 g k T d k < 0 g_k^{T} d_k<0 gkTdk<0 − σ g k T d k > 0 -\sigma g_k^{T} d_k>0 σgkTdk>0),这样做的结果就是:可接受的区间被限制在了 [ b , d ] [b,d] [b,d]内,即红线部分,如图:
在这里插入图片描述
参考: codelast.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值