资源描述
最优化理论之梯度下降法 文章编号SM00120140414
梯度下降法是一个一阶最优化算法,通常也称为最速下降法。
1、有关梯度下降法的描述
梯度下降法,基于这样的观察:如果实值函数F(x)在点a处可微且有定义,那么函数 F(x)在 a点沿着梯度相反的方向 下降最快。因而,如果,对于 为一个足够小的小数值时成立,那么
。
考虑到这一点,我们可以从函数 的局部极小s值的初始估计 出发,并考虑如下序列 x0, x1, x2, …, xn使得
因此可得到
如果顺利的话序列(xn)收敛到期望的极值。注意每次迭代步长 可以改变。
右侧的图片示例了这一过程,这里假设 定义在平面上,并且函数图像是一个碗形。蓝色的曲线是等高线(水平集),即函数 F为常数的集合构成的曲线。红色的箭头指向该点梯度的反方向。(一点处的梯度方向与通过该点的等高线垂直)。沿着梯度下降方向,将最终到达碗底,即函数 F值最小的点。
直观的解释:函数J(a)在某点ak的梯度是一个向量,其方向是J(a)增长最快的方向。显然,负梯度方向是J(a)减少最快的方向。在梯度下降法中,求某函数极大值时,沿着梯度方向走,可以最快达到极大点;反之,沿着负梯度方向走,则最快地达到极小点。
推导:
求函数J(a)极小值的问题,可以选择任意初始点a0,从a0出发沿着负梯度方向走,可使得J(a)下降最快。
s(0):点a0的搜索方向。
对于任意点ak,可以定义ak点的负梯度搜索方向的单位向量为:
从ak点出发,沿着方向走一步,步长为,得到新点ak+1,表示为:
因此,在新点ak+1,函数J(a)的函数值为:
所有的ak组成一个序列,该序列由迭代算法生成
a0, a1, a2, … , ak, ak+1, ...
该序列在一定条件下收敛于使得J(a)最小的解a*
迭代算法公式:
关键问题:如何设计步长
如果选得太小,则算法收敛慢,如果选得太大, 可能会导致发散。
2、示例
梯度下降法处理一些复杂的非线性函数会出现问题,例如Rosenbrock函数
其最小值在(x, y)=(1, 1)处,数值为f(x, y)=0。但是此函数具有狭窄弯曲的山谷,最小值 (x, y)=(1, 1) 就在这些山谷之中,并且谷底很平。优化过程是“之”字形的向极小值点靠近,速度非常缓慢。
下面这个例子也鲜明的示例了"之"字的下降,这个例子用梯度下降法求 :
的极小值。
3、缺点
由上面的两个例子,梯度下降法的缺点如下:
靠近极小值时速度减慢。
直线搜索可能会产生一些问题。
可能会'之字型'地下降。
展开阅读全文