说明:今天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之间的夹角θ为

θ=tan−1[−(1−2ρ)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)2f′L2[fL−f0+(α0−αL)f′L]

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

α0ˇ=α0+(α0−αL)f′0(f′L−f′0)

确定,其中

fLf0=f(xk+αLdk),f′L=f′(xk+αLdk)=g(xk+αLdk)Tdk=f(xk+α0dk),f′0=f′(xk+α0dk)=g(xk+α0dk)Tdk


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

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

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


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

相关文章:

  • 2022-12-23
  • 2021-11-10
  • 2021-04-30
  • 2021-05-26
  • 2021-11-08
  • 2021-05-18
  • 2022-01-05
  • 2021-11-25
猜你喜欢
  • 2022-12-23
  • 2021-06-15
  • 2021-12-07
  • 2021-07-09
  • 2021-08-31
  • 2021-12-15
  • 2021-04-20
相关资源
相似解决方案