漫步最优化三十——非精确线搜索

10.24













——

在多维算法中,大部分计算量都用在执行线搜索时函数与梯度的运算上,因此所需要的运算量主要依赖于所用线搜索的效率与精度。如果需要高精度的线搜索,那么计算量就比较大。如果非精确线搜索不影响算法的收敛,那么我们可能减少计算量。

实际发现许多优化算法可以容忍不精确的线搜索,正由于此,对于这些方法我们使用非精确线搜索。

假设

xk+1=xk+αdk

其中 dk 是给定的方向向量且 α 是无关的搜索参数,存在某个正值 α ,使得函数 f(xk+1) 有唯一的极小值,泰勒级数的线形近似为

f(xk+1)=f(xk)+gTkdkα

其中

gTkdk=df(xk+αdk)dα|α=0

上面等式表示图1中的直线 A ,等式

f(xk+1)=f(xk)+ρgTkdkα

表示直线 B ,其中0ρ12,其斜率从0到 12gTkdk ,依赖于 ρ 的值。另外等式

f(xk+1)=f(xk)+(1ρ)gTkdkα

表示直线 C ,其斜率从gTkdk 12gTkdk C,B 之间的夹角 θ

θ=tan1[(12ρ)gTkdk1+ρ(1ρ)(gTkdk)2]

如图2所示。显然当 ρ 从0到 12 时, θ gTkdk 到0,当固定 ρ 为范围内的某个值时,两条直线与曲线 f(xk+1) 相交可以得出两个 α 值, α1,α2 ,如图2所示。


这里写图片描述
图1

α0 是最小化 f(xk+αdk) 得到的 α 估计值,对于 α=α0 ,如果 f(xk+1) 等于或小于直线 B 相应的f(xk+1)值,并且等于或大于直线 C 相应的f(xk+1)值,即
f(xk+1)f(xk)+ρgTkdkα0f(xk+1)f(xk)+(1ρ)gTkdkα0

那么我们可以判定 α0 α 的一个估计值,这时候 α1α0α2 ,如图2所示, α1,α2 组成了包含最小值 α0 的区间,上面的两个不等式称为Goldstein条件,他们是非精确线搜索的基础。该方法基于可利用的信息生成估计值 α0 ,并检查Goldstein条件,如果都满足,那么接受 f(xk+1) 的减少并终止该过程。另一方面,如果任何一个条件不满足,那么 f(xk+1) 的减少是不充分的,我们需要进一步改善 α 的估计值,用 αˇ0 表示。假设第一个不等式不满足,那么 α0>α2 如图3所示,因为 αL<α<α0 ,所以新的 αˇ0 可以用内插来确定。另一方面,如果第二个不等式不满足,那么 α0<α1 如图4所示,因为 α0 αL<α0<α 之间,所以 α0ˇ 可以用外插来确定。

如果 f(xk+αdk) α=αL,α=α0 处的函数值以及导数值均已知的话,那么对于 α0>α2 α0ˇ 的一个好估计用内插公式

αˇ0=αL+(α0αL)2fL2[fLf0+(α0αL)fL]

得出,对于 α0>α2 用外插公式

α0ˇ=α0+(α0αL)f0(fLf0)

确定,其中

fLf0=f(xk+αLdk),fL=f(xk+αLdk)=g(xk+αLdk)Tdk=f(xk+α0dk),f0=f(xk+α0dk)=g(xk+α0dk)Tdk


这里写图片描述
图2

重复上面的过程直到产生的 αˇ0 满足 α1<αˇ0<α2 ,那么终止非精确线搜索。

这里写图片描述
图3


这里写图片描述
图4

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值