说明:今天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