关于Armijo准则和Wolfe准则

博客详细解析了凸优化中的Armijo准则和线搜索方法,特别是它们在函数优化中的应用。Armijo准则通常用于确定下降步长,但其有效性依赖于函数的凸性和定义域。博主指出,虽然精确搜索最优步长可能更准确,但在高维或梯度信息不准确的情况下,Armijo准则因简洁和效率而更常用。文中通过实例展示了在二维函数中精确步长搜索的局限性,说明了在高维问题中为何Armijo准则更受欢迎。
摘要由CSDN通过智能技术生成

以前一直看不懂Armijo准则和Wolfe准则,直到前段时间看完了Boyd的《凸优化》(王书宁 译),Bilibili上有以这本书为教材的视频教程,是中科大 凌青 老师讲的。
看完后才知道以前对Armijo准则有误解,认为它能在任何函数上使用。其实应用Armijo准则是有前提条件的,要求函数是凸函数且函数定义域是凸集。(就是函数形状像一个“锅”。)

Armijo准则用于优化算法中的线搜索子问题。首先任何优化问题都是某个区间(约束)内搜索一个函数的最低点。
《凸优化》里的标准算法是分成三步:
1)先在当前点找一个下降方向dk(梯度下降法用的是负梯度方向,牛顿法用的是牛顿方向)
2)方向确定后再需要确定的是步长alpha_k,这时候由于方向已经确定了,所以相当于用刀在“锅”上沿着dk方向切了一刀,得到一个一维函数。所以这一步就是在这个一维函数上找一个“合适”的步长。这也是线搜索名字的由来。目前线搜索有 精确搜索最优步长方法 和 Armijo准则找次优步长方法。
3)根据方向和步长,更新当前点x(k+1)= x(k) + dk*alpha_k。

Armijo准则和精确搜索最优步长具体哪个更好取决于不同问题。《凸优化》第9章里面有比较,两者迭代次数相差并不大。之所以相差不大,是因为当点x离最优点较远时,x点附近的梯度信息dk其实并不指向最优点“锅底”。dk不准导致alpha_k求得再准也没用。(所以一般情况下用Armijo准则比较多,毕竟它比精确搜索省事)。

ps1:精确步长搜索不准确举例
下图为的f(x1, x2) = x1 * x1 + 4 * x2 * x2的图像:
在这里插入图片描述
在这里插入图片描述
上图中黑色小点处(坐标(0.5,0.3))的负梯度为(-1.0, -2.4)。如下图所示:
在这里插入图片描述
图中最优步长点并不在x轴上。(若在x轴上,再只需要一步精确步长搜索即可找到最优点。不在x轴上的话,则每步的最优点会反复在x轴两侧震动。这还只是2维的情况,如果维度更高的话,震动情况只会更严重。这也是高维情况精确步长搜索用的少的原因)

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值