数值优化学习——wolfe条件里的线搜索算法

来源:互联网 发布:linux tail命令 编辑:程序博客网 时间:2024/05/18 10:52

翻译自numerical optimization Chapter3 Line Search Methods
【没写完,可参考http://blog.csdn.net/fangqingan_java/article/details/46405669】
Wolfe条件(或强Wolfe条件)是广泛使用并且较为有效的终止条件。

下面描述一个一维的线搜索过程,该过程确保对于给定的任意参数c1,c2(1>c2>c>0),能够找到一个能够满足强Wolfe条件的步长。 首先,我们假设方向p是下降方向,函数f沿着该方向在下面是有界的。

算法分为两个步骤,第一步首先开始于一个对于步长α的估计值α1,然后后续不断扩大其大小,直到找到一个合适的步长或者一个包含目标步长的区间。如果是后者的话(找到区间),就需要不断调用第二步,称为zoom的函数,来不断缩小区间大小,直到找到合适步长。

line search算法的一个形式说明如下。公式这里写图片描述为足够的下降条件,公式这里写图片描述为曲率条件。参数αmax是用户决定的允许的最大步长,line search算法终止于α*,即找到能够满足强Wolfe条件的步长。

算法流程

注意到试验的αi序列是单增的,但是输入给zoom函数的参数顺序可能会变化(看上面图片中两次调用的zoom函数,两个参数是不一样的,但是具体原因我还并没有很清楚,αi是单增的,那么αi-1始终小于αi,而这个zoom函数的输入也应该是区间的下界和上界啊?)。该过程利用了下面的知识:如果下面三个条件之一被满足的话,那么区间(αi-1,αi)包含了满足强Wolfe条件的步长:

  • 1)αi违反了足够下降条件;
  • 2)这里写图片描述
  • 3)这里写图片描述

下面是个人对于上面三个条件的理解,我不能保证正确。

1)足够下降条件(sufficient decrease condition),即上文中有图片显示的公式3.7a,这个条件要求当前函数值小于初始函数值加上一个参数相关的值。如果不满足的话,实际上就是说明当前步长αi实际上超过了最优步长,即最优步长在α0和αi之间。如果此时的i不是1的话,说明前面已经将αi-1之前的情况排除了,所以最优步长应该在αi-1和αi之间;2)当前步长对应的函数值大于等于前一步步长对应的函数值。因为我们的目标是找最优的α,最优的α即使得函数值最小的那个,所以要找在当前条件下(αi-1和αi已知的情况下)最小的,那么一定在这个区间内了(个人觉得牵强,可能理解的还是不对)。3)当前导数值大于0,说明函数开始增加了,所以要找最优最小的,不会再往增加的方向找,一定在αi的前面。所以在区间(αi-1,αi)之间找。这个比较好理解。

上面算法流程的最后一步,是在前面3个条件都不满足的情况下,继续增大α,找更合适的步长。为了实现这一步,可以采用类似上面的插值过程,也可以直接采用αi的倍数作为下一步的αi+1。不管采用哪种策略,重要的是,步长的增加要足够快,使得函数能够在有限迭代次数中到达上限αmax。

下面说明函数zoom。函数的调用形式为zoom(α_lo,α_hi),

  • (a)由α_lo,α_hi限定的区间内包含了满足强Wolfe条件的步长;
  • (b)α_lo是在目前所有给定的,能够满足足够下降条件的步长里,函数值最小的;
  • (c)
0 0
原创粉丝点击