线搜索line-search和强Wolfe条件

最近在看数值优化的论文,里面几乎都有line-search作为一个子步骤。

单从字面上不怎么好理解。

http://en.wikipedia.org/wiki/Line_search

http://en.wikipedia.org/wiki/Backtracking_line_search

看来还是要搜中文了

http://reference.wolfram.com/mathematica/tutorial/UnconstrainedOptimizationLineSearchMethods.zh.html

线搜索方法

像 "牛顿" 法这样的方法要选择一个步,但是该步的有效性只限于函数的牛顿二次模型真实体现函数的情况. 线搜索方法的基本思想是使用所选步的方向,但要通过求解一个极小化
的一维问题控制步长. 这里  是从位置  选择的搜索方向. 请注意
所以,如果您能够计算梯度,那么您实际上可以使用导数进行一个一维搜索.
通常,一个有效的线搜索只选取  方向,因为一个合理的方法应该保证搜索方向是一个下降的方向,这可以表示为 .
通常不值得花费精力去寻找  的精确极小值,因为搜索方向很少恰好是正确的方向. 通常只要能靠近就足够了.
测量进度的一个条件被称为对于一个候选值  的 Armijo 条件或充分下降条件.
往往在这种情况下,方法将会收敛,但是对于有些方法,光有 Armijo 并不保证光滑函数的收敛性. 加上曲率条件,
可以证明许多方法对于光滑函数是收敛的. 所有这些条件合起来被称为强Wolfe条件. 您可以使用 "DecreaseFactor"-> 和 "CurvatureFactor"-> 选项控制参数  和  .
"CurvatureFactor"-> 的默认值是 ,除了 Method 的情况,这时候使用 ,因为算法通常对接近精确的线搜索表现得更好.  越小,线搜索越接近精确.

回溯

这是一个简单的线搜索方法,它从给定的步长开始,回溯到长度为0的步长,当充分下降条件得到满足的时候停止. 一般来说,只采用回溯,也不能保证您可以满足曲率条件,即使对于很友好的函数,亦是如此,因此方法的收敛性没法得到保障. 然而,回溯线搜索也并不需要在每个点对梯度进行计算,因此,如果梯度计算代价相对较高,这可能是一个不错的选择. 在 FindRoot 中,它被用来作为默认的线搜索方法,因为计算优值函数的梯度包括对雅可比的计算,所以代价相对较高.
每个回溯步骤的执行都进行了多项式插值和对插值寻找极小值点. 这个点 ,只要它位于  和  之间,就会被使用,这里  是参数  的前一个值,并且 . 默认情况下, 并且 ,但是它们可以通过方法选项 控制. 如果您赋予这些因子单一的值,这就设置了 ,并不再使用插值. 值 1/2 产生二分法.
 
有时间研究下这个中文网站吧,wiki的好处太多,就是有的术语对不上中文概念=_=

posted on 2011-12-08 11:48  小唯THU  阅读(5422)  评论(0编辑  收藏  举报

导航