暴力拆解《Numerical Optimization》之线搜索

来源:互联网 发布:csgo弹道优化参数 编辑:程序博客网 时间:2024/05/16 19:46

这里讨论的是有约束条件的优化问题:


利用线搜索来求解目标函数的极值点,主要可以分为以下两步:

1.选定起点,选择一个方向 ,使在点沿方向函数值下降。

2.在该方向上,选定合适的步长,使得相比,充分减小。


那么,现在我们来具体讨论如何选择方向和步长

(一)下降方向的选择

这里介绍四种方法确定:最速下降方向、牛顿方向、拟牛顿方向、共轭梯度方向。

1.最速下降方向:

将函数泰勒展开,保留一次项可得:

沿该方向,目标函数的函数值下降最快,因此叫做最速下降方向。
下降方向选择,即点梯度的负方向。

2.牛顿方向:

也还是利用泰勒展开,只是这次是对,保留二次项:

要选择,使最小。显而易见,最简单的方法就是对求导,令:

由此可以推出:


注意
a.在实用牛顿方向的时候有个前提,那就是必须正定,也就是点处所对应的Hessian矩阵必须正定。如果不正定的话,     的值可能会减小。
b.我们在推导牛顿方向的过程中的过程中,牛顿方向不是对进行泰勒展开推导的,而是对  进行展开推导而来的,所以我们推导出来的牛顿方向所对应的就等于1。

3.拟牛顿方向

由于Hessian矩阵计算起来比较麻烦,而且真实的Hessian矩阵有可能不正定,所以我们采用矩阵来近似Hessian矩阵:


类似的,可以推出:

4.共轭梯度方向

使得共轭。

上面四种方法在求极值的时候,其收敛速度为牛顿法>拟牛顿法>共轭梯度法>最速下降法。


(二)如何选择步长

原则:让目标函数的值充分降低,并且计算代价小。

我们提供三种方法来选择:Wolfe条件,强Wolfe条件,Goldstein条件。

1.Wolfe条件:

目标函数充分减小条件:

Amijo条件:

为了减少计算代价,我们应该排除较小的步长,用曲率条件来过滤掉较小的步长,将限制在一个合理的范围内:


上面这个式子所表示的意思是:当固定时,把看做关于的函数的函数,假设我们记作,那么式子的左边就是函数在处的倒数,而式子的右边就是函数点处的倒数的倍。

以上两个条件合起来叫做Wolfe条件。

2.强Wolfe条件

强Wolfe条件,顾名思义,它就是Wolfe条件的加强版:

强Wolfe条件的第一个式子和Wolfe条件是一样的。第二个式子就是在不等式两边都加了一个绝对值符号。在数学上来看,它所起到的作用是将步长限制在一个较小的领域内。

3.Glodstein条件


Goldstein方法虽然简洁,但是它可能会排除掉极小点。



以上就是线搜索的主要内容。
阅读全文
0 0
原创粉丝点击