梯度下降法 Gradient descent

经常听到梯度下降法,只知道它是用于优化求解问题。即 沿着梯度的反方向(坡度最陡的方向)进行权值更新。为什么局部梯度下降最快的方向就是梯度的负方向呢?

梯度

梯度就是表示某一个函数在当前位置的导数。\bigtriangledown =\frac{d\, f(\theta )}{d\, \theta } \theta为自变量,f(\theta )为关于\theta的函数;\bigtriangledown 为梯度

如果函数f(\theta )为凸函数,那么就可以根据梯度下降算法进行优化,求得使f(\theta )最小的参数\theta

\theta=\theta _{0}-\eta \bigtriangledown f(\theta_{0})

\theta_{0} 为当前下山的位置,\theta为下山移动一小步之后的位置,\eta为学习因子,即步长。

梯度更新公式的推导——一阶泰勒展开式

一阶泰勒展开式的基本形式为:

这个公式主要利用的是函数的局部线性近似,图解:

 

用红色的直线代替黑色曲线,求出f(\theta ) 的值,即\bigtriangledown f(\theta_{0}) 可以看作斜率

\theta-\theta _{0} 是微小矢量,它的大小为步长,但它是有方向的矢量,将\theta-\theta _{0}的单位向量记作 v;那么,则

由于局部下降的目的是希望每次更新\theta的值,都能使f(\theta )变小,所以:

步长\eta为标量且一般设置为正数,所以不等式变为:

v和f(\theta _{0})都为向量,向量乘积有几种情况:

要使他们的向量乘积小于0,且使得乘积最小,只要cos(α) = -1,即A,B完全反向。也就是说,变量\theta-\theta _{0}的方向v应该为:

所以

因为\left \| \bigtriangledown f(\theta_{0}) \right \|为标量,可以和步长合并,所以最终,变量\theta的更新公式为:

 

参考:http://www.360doc.com/content/18/0526/06/36490684_757087825.shtml 感谢