数值优化(Numerical Optimization)学习系列(三)-线搜索

来源:互联网 发布:报表类软件 编辑:程序博客网 时间:2024/06/06 09:24

概述

线搜索方法是一类非常重要的迭代算法。在每一步迭代中都会先确定迭代方向pk,然后通过计算确定本次迭代的步长αk。最后按照xk+1=xk+αkpk确定下一个迭代点。线搜索方向都会要求pk是下降方向,因为这样可以确保函数f可以沿着该方向下降。
线搜索的方向有统一的表述形式:

pk=B1kfk

Bk是对称的非奇异阵。
Bk=I时,是最速下降方向;
Bk=2f(xk)时,时牛顿方向;

步长α应满足的条件

问题形式

我们即希望步长能使函数在本次迭代中下降的快,也希望步长不能太小。当方向确定时,最理想的步长就是如下一元函数的极小值点:

α=argmin ϕ(α)=f(xk+αpk),α>0

非精确算法

我们通常也是用迭代算法确定每一步的步长,即从一系列的候选值中选择一个满足条件的α。所以一个完整的优化算法应该有两个循环,大循环是针对每一个迭代点的选择,内层的循环是选择用于确定下一迭代点的步长。
通常分为两个步骤来确定步长:
step1:根据理想步长应该满足的条件确定可选步长的区间。
step2:利用二分法、插值法等方法,在上一步确定的步长 区间中找出比较好的解。

Wolfe条件

步长α首先应该能使函数f沿着方向pk下降的足够多,看下面这个例子:
这里写图片描述
上图中每一次迭代都仅仅使f下降一点点,这显然是不太理想的。那么有什么条件可以约束α,从而避免这种情况呢?

Armijo条件

Armijo条件就是用来保证每次迭代时,目标函数f都有足够的下降量。可以用不等式来描述该条件:

f(xk+αpk)f(xk)+c1αfTkpk,c1(0,1)

通常用l(α)表示不等式右侧的式子:
l(α)=f(xk)+c1αfTkpk

l(α)是关于α的线性函数,其直线斜率为c1fTkpk,因为我们采用下降方向,所以斜率是负数,在零点α=0,函数ϕ(α)的导数值(切线斜率)为fTkpk(负数),因为c1(0,1),所以c1fTkpkfTkpkl(α)应该位于函数ϕ(α)在原点处的切线的上方。如下图:
这里写图片描述

Curvature条件

同样,太小的α会使迭代十分低效,为了不使步长α太小,引入了Curvature条件,公式如下:

f(xk+αkpk)Tpkc2fTkpk,c2(c1,1)

不等式左侧的式子实际就是ϕ(αk)fTkpk实际就是ϕ(α0),乘以不大于1的数c2后,自身变大。当α非常小,接近零的时候,f(xk+αkpk)Tpk=fTkpk,只有当α不太小的时候,左式才有可能大于右式。当然,这样说的前提是ϕ(αk)是严格的负数(负数乘以不大于1的正数后,自身才会增大),这样沿着我们选择的方向走,函数f才会不断减小;但是,当ϕ(αk)为一个正数或接近0的负数的时候怎么办呢?还要不要选择步长呢?答案是不用了,这是因为沿着该方向我们不能使函数f下降(或下降到一定量),此时终止线搜索即可。
这里写图片描述
上图展示了Curvature条件对可选步长区间的限制作用。α2通常选择经验值,当线搜索方向选择牛顿方向或者拟牛顿方向的时候,α2通常取0.9;当选择共轭梯度方向时,α2通常取0.1。
Wolfe条件其实就是Armijo条件和Curvature条件 ,它对可选步长区间的压缩如下图所示:这里写图片描述
很显然,Wolfe条件确定的区间是Armijo条件和Curvature条件各自确定区间的交集。最优步长αk在此区间查找即可。

强Wolfe条件

为什么会提及强Wolfe条件呢?这是因为强Wolfe条件限定的区间内的αk,是更能接近使ϕ(α)达到最小值的点。通俗来说,它进一步压缩了候选步长点区间,使得选择步长的循环迭代过程加速。强Wolfe条件实际上是要求更加苛刻的Wolfe条件。强Wolfe条件的第一个式子和Wolfe 条件式一样的,第二个式子的两边加上绝对值:

f(xk+αkpk)f(xk)+c1αkfTkpkf(xk+αkpk)Tpkc2fTkpk

可以看出,强Wolfe条件对正负曲率都进行了约束,约束性更强。
满足强Wolfe条件的区间如下图所示:这里写图片描述

Goldstein条件

如何求解步长α

阅读全文
0 0
原创粉丝点击