范德萨发而为
全部博文(392)
分类: 大数据
2017-07-07 14:56:54
转载请注明出处:
最速下降法(又称梯度法,或Steepest Descent),是无约束领域中最简单的算法,单独就这种算法来看,属于早就“过时”了的一种算法。但是,它的理念是其他某些算法的组成部分,或者说是在其他某些算法中,也有最速下降法的“影子”。因此,我们还是有必要学习一下的。
我很久以前已经写过一篇关于最速下降法的文章了,但是这里我还打算再写一篇,提供更多一些信息,让大家可以从更简单生动的方面去理解它。
『1』名字释义
最速下降法只使用目标函数的一阶导数信息——从“梯度法”这个名字也可见一斑。并且,它的本意是取目标函数值“最快下降”的方向作为搜索方向。于是我们就想知道这个问题的答案:沿什么方向,目标函数 f(x)的值下降最快呢?
『2』函数值下降最快的方向
先说结论:沿负梯度方向 d=?gk ,函数值下降最快。
下面就来推导一下。
将目标函数 f(x) 在点 xk 处泰勒展开(这是我们惯用的“伎俩”了)——
f(x)=f(xk)+αgTkdk+o(α)
高阶无穷小 o(α) 可忽略,由于我们定义了步长 α>0 ,因此,当 gTkdk<0 时, f(x)
但是 dk 具体等于什么的时候,可使目标函数值下降最快呢?
文章来源:
由可得:
∣∣dTkgk∣∣≤∥dk∥∥gk∥
当且仅当 dk=gk 时,等号成立, dTkgk 最大(>0)。
所以 dk=?gk 时, dTkgk 最小(<0), f(x) 下降量最大。
所以 ?gk 是最快速下降方向。
『3』缺点
它真的“最快速”吗?答案是否定的。
事实是,它只在局部范围内具有“最速”性质。
对整体求解过程而言,它的下降非常缓慢。
『4』感受一下它是如何“慢”的
先来看一幅图(直接从维基百科上弄过来的,感谢Wiki):
文章来源:
这幅图表示的是对一个目标函数的寻优过程,图中锯齿状的路线就是寻优路线在二维平面上的投影。
这个函数的表达式是:
f(x1,x2)=(1?x1)2+100?(x2?x12)2
它叫做Rosenbrock function(罗森布罗克方程),是个非凸函数,在最优化领域,它通常被用来作为一个最优化算法的performance test函数。
我们来看一看它在三维空间中的图形:
『6』优点
这个被我们说得一无是处的最速下降法真的就那么糟糕吗?其实它还是有优点的:程序简单,计算量小;并且对初始点没有特别的要求;此外,许多算法的初始/再开始方向都是最速下降方向(即负梯度方向)。
文章来源:
『7』收敛性及收敛速度
最速下降法具有整体收敛性——对初始点没有特殊要求。
采用的最速下降法的收敛速度:线性。