line search(一维搜索,或线搜索)是最优化(Optimization)算法中的一个基础步骤/算法。它可以分为精确的一维搜索以及不精确的一维搜索两大类。
在本文中,我想用“人话”解释一下不精确的一维搜索的两大准则:Armijo-Goldstein准则 & Wolfe-Powell准则。
之所以这样说,是因为我读到的所有最优化的书或资料,从来没有一个可以用初学者都能理解的方式来解释这两个准则,它们要么是长篇大论、把一堆数学公式丢给你去琢磨;要么是简短省略、直接略过了解释的步骤就一句话跨越千山万水得出了结论。
每当看到这些书的时候,我脑子里就一个反应:你们就不能写人话吗?
我下面就尝试用通俗的语言来描述一下这两个准则。
【1】为什么要遵循这些准则
由于采用了不精确的一维搜索,所以,为了能让算法收敛(即:求得极小值),人们逐渐发现、证明了一些规律,当你遵循这些规律的时候,算法就很有可能收敛。因此,为了达到让算法收敛的目的,我们就要遵循这些准则。如果你不愿意遵循这些已经公认有效的准则,而是要按自己的准则来设计算法,那么恭喜你,如果你能证明你的做法是有效的,未来若干年后,书本里可能也会出现你的名字。
【2】Armijo-Goldstein准则
此准则是在196X年的时候由Armijo和Goldstein提出的,当然我没有具体去搜过这俩人是谁。在有的资料里,你可能会看到“Armijo rule”(Armijo准则)的说法,可能是同一回事,不过,任何一个对此作出重要贡献的人都是不可抹杀的,不是么?
Armijo-Goldstein准则的核心思想有两个:①目标函数值应该有足够的下降;②一维搜索的步长α不应该太小。
这两个思想的意图非常明显。由于最优化问题的目的就是寻找极小值,因此,让目标函数函数值“下降”是我们努力的方向,所以①正是想要保证这一点。
同理,②也类似:如果一维搜索的步长α太小了,那么我们的搜索类似于在原地打转,可能也是在浪费时间和精力。
文章来源:http://www.codelast.com/
有了这两个指导思想,我们来看看Armijo-Goldstein准则的数学表达式:
其中,
文章来源:http://www.codelast.com/
(1)为什么要规定 这个条件?其实可以证明:如果没有这个条件的话,将影响算法的超线性收敛性(定义看这个链接,第4条)。在这个速度至关重要的时代,没有超线性收敛怎么活啊!(开个玩笑)
具体的证明过程,大家可以参考袁亚湘写的《最优化理论与方法》一书,我没有仔细看,我觉得对初学者,不用去管它。
(2)第1个不等式的左边式子的泰勒展开式为:
去掉高阶无穷小,剩下的部分为: