批量梯度下降算法BGD,小批量梯度下降法MBGD,随机梯度下降算法SGD的比较

批量梯度下降算法BGD,小批量梯度下降法MBGD,随机梯度下降算法SGD的比较


参考: https://my.oschina.net/hosee/blog/510076
             https://www.zhihu.com/question/40892922?sort=created
             https://www.zhihu.com/question/27012077
             http://blog.csdn.net/carson2005/article/details/21093989


(1)BGD每次利用所有的样本点更新参数,MBGD每次利用所有样本点的子集更新参数,SGD每次随机选取一个样本点更新相应的参数(SGD可以看成MBGD的特殊情况)

(2)随机梯度下降是通过每个样本来迭代更新一次,如果样本量很大(例如几十万),那么可能只用其中几 万条或 者几千条的样本,就已经将theta迭代到最优解了,而批量梯度下降,迭代一次需要用到十几万训练样本,一次迭代不可能最优,如果迭代10次的话就需要遍历训练样本10次。但是,SGD伴随的一个问题是噪音较 BGD要 多,使得SGD并不是每次迭代都向着整体最优化方向。


(3)对于线性回归的平方损失函数问题(凸函数)批量梯度下降---最小化所有训练样本的损失函数,使得最终求解  的是全局的最优解。随机梯度下降---最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方向,但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近。


(4)随机梯度法在凸函数的假设下是有严格的收敛性证明的。
关于原因,我觉得大概有两点:1.随机梯度的期望是梯度本身,而随机梯度法的收敛性分析也多数是在期望意义下研究的。2.随机梯度下降为了确保收敛,相比于同等条件下的梯度下降,需要采用更小的步长和更多的迭代轮数。梯度下降,由于使用真正的梯度,标准梯度下降对于每一次权值更新经常使用比随机梯度下降大的步长

 
(5)不能笼统的说随机梯度下降比梯度下降速度快,多数情况下,mini-batch 会比sgd收敛要速度快。在训练样本多 的情况下,sgd比gd的收敛速度快,一个原因是gd要通过所有样本计算梯度,而sgd通过一个样本计算一个近似的梯度,本身计算量就会小非常多,如果考虑到gd计算时有可能不是所有的样本都能到内存中,速度就会减少得更慢。至于每次计算近似梯度,那么迭代次数会不会大量增加了?首先sgd会比较快的收敛到一个还不错的解,如果要收敛到精确解就会比较困难,不过,有时我们不需要在训练集上一个最优解,很多时候甚至需要early  stop。

(6)梯度下降法是批量更新算法,随机梯度是在线算法;梯度法优化的是经验风险,随机梯度法优化的是泛化风险;梯度法可能陷入局部最优,随机梯度可能找到全局最优;梯度法对步长不敏感,随机梯度对步长选择敏感;梯度法对初始点(参数)选择敏感。


根据实际情况可在 BGD,MBGD和 SGD中选择。

随机梯度下降算法步长选择的方法:ealy-stop,即在训练的过程中,使用验证集周期性地测试效果,如果效果可以,就保存起来,如果多次迭代下去,效果几乎没有提升则
停止迭代。





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值