梯度下降法 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的更新公式为:

梯度下降种类

  • 批量GD:可以获得全局最优解,但是在更新每个参数时需要遍历所有的数据,计算量很大所以速度较慢;
  • 随机GD:每次更新参数时,随机选择一条数据来计算,大大加快训练数据,SGD可能会调到新的和潜在更好的局部最优解,但可能收敛不到全局最优且迭代次数较多;
  • 小批量GD:batch GD和 SGD的折中,每次选择n个样本更新参数。收敛速度较快,并且可以达到更稳定的收敛结果。
  • 动量梯度下降:Mini-batch GD和SGD由于在更新参数过程中会不断改变方向,所以容易发生震荡。动量GD(Momentum GD)会把之前的下降方向参考进来,从而减少震荡。公式:V = dW * λ+ V*momemtum。总的来说就是:

       ①当本次梯度下降方向与上次更新量的方向相同时,上次的更新量能够对本次的搜索起到一个正向加速的作用。

       ②当本次梯度下降方向与上次更新量的方向相反时,上次的更新量能够对本次的搜索起到一个减速的作用。

       优点:既减少震荡,又大方向不变(本次梯度下降方向),从而保证了效率和正确的收敛。

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值