线搜索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的好处太多,就是有的术语对不上中文概念=_=

你可能感兴趣的:(search)