机器学习(九)梯度下降算法

1 梯度

1.1 定义

梯度:是一个矢量,其方向上的方向导数最大,其大小正好是此最大方向导数。
关于梯度的更多介绍请看:如何直观形象的理解方向导数与梯度以及它们之间的关系?

1.2 计算

一个标量函数φ的梯度记为:

机器学习(九)梯度下降算法

在三维直角坐标系中表示为:

机器学习(九)梯度下降算法

1.3 范例

机器学习(九)梯度下降算法

2 梯度下降法

2.1 定义

梯度下降法(英语:Gradient descent)是一个一阶最优化算法,通常也称为最速下降法。 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。如果相反地向梯度正方向迭代进行搜索,则会接近函数的局部极大值点;这个过程则被称为梯度上升法。

机器学习(九)梯度下降算法

2.2 描述

梯度下降法基于以下观察的:如果实值函数F(x)在a处可微且有定义,那么函数F(x)在a点沿着梯度相反的方向-▽F(a)下降最快。
因而,假设

机器学习(九)梯度下降算法

对于γ>0为一个够小数值时成立,那么F(a)≥F(b)。
考虑到这一点,我们可以从函数F的局部极小值的初始估计x0出发,考虑到如下序列x0,x1,x2,....使得:

机器学习(九)梯度下降算法

因此可以得到

机器学习(九)梯度下降算法

如果顺利的话,序列(xn)收敛到期望的极值。注意每次迭代的γ可以改变。
下面的这张图片展示了这一过程,这里假设F定义在平面上,并且函数图像是一个碗形。蓝色的曲线是等高线,即函数F为常数的集合构成的曲线。红色的箭头指向该点梯度的反方向。(一点处的梯度方向与通过该点的等高线垂直)。沿着梯度下降方向,将最终到达碗底,即函数F值最小的点。

机器学习(九)梯度下降算法

2.4 实例

梯度下降法处理一些复杂的非线性函数会出现问题,例如Rosenbrock函数

机器学习(九)梯度下降算法

其最小值在(x,y)=(1,1)处,数值为f(x,y)=0。优化过程是之字形的向极小值点靠近,速度非常缓慢。

机器学习(九)梯度下降算法

代码实现

参考: