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

来源:互联网 发布:论文流程图画图软件 编辑:程序博客网 时间:2024/05/22 05:08

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,其斜率从gTkdk12gTkdkC,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

原创粉丝点击