深度学习—优化算法对比

1、优化算法

  • SGD:随机梯度下降
  • SGD+Momentum: 基于动量的SGD(在SGD基础上做过优化)
  • SGD+Nesterov+Momentum:基于动量,两步更新的SGD(在SGD+Momentum基础上做过优化)
  • Adagrad:自适应地为各个参数分配不同学习速率
  • Adadelta: 针对Adagrad问题,优化过的算法(在Adagrad基础上做过优化)
  • RMSprop:对于循环神经网络(RNNs)是最好的优化器(在Adadelta基础上做过优化)
  • Adam:对每个权值都计算自适应的学习速率(在RMSprop基础上做过优化)
  • Adamax:针对Adam做过优化的算法(在Adam基础上做过优化)

  (1)SGD:随机梯度下降

  指mini-batch gradient descent,SGD就是每一次迭代计算mini-batch的梯度,然后对参数进行更新,是最常见的优化方法了

  缺点:选择合适的learning rate比较困难 - 对所有的参数更新使用同样的learning rate。对于稀疏数据或者特征,有时我们可能想更新快一些对于不经常出现的特征,对于常出现的特征更新慢一些,这时候SGD就不太能满足要求了;

   SGD容易收敛到局部最优,并且在某些情况下可能被困在鞍点。

  (2)momentum

  是模拟物理里动量的概念,积累之前的动量来替代真正的梯度。momentum项能够在相关方向加速SGD,抑制振荡,从而加快收敛。

  (3)Adam(Adaptive Moment Estimation)

  Adam(Adaptive Moment Estimation)本质上是带有动量项的RMSprop,它利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。Adam的优点主要在于经过偏置校正后,每一次迭代学习率都有个确定范围,使得参数比较平稳。

  优点:

  • 结合了Adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优点
  • 对内存需求较小
  • 为不同的参数计算不同的自适应学习率
  • 也适用于大多非凸优化 - 适用于大数据集和高维空间

2、如何选择

  整体来讲,Adam 是最好的选择。

  很多论文里都会用 SGD,没有 momentum 等。SGD 虽然能达到极小值,但是比其它算法用的时间长,而且可能会被困在鞍点。

  如果需要更快的收敛,或者是训练更深更复杂的神经网络,需要用一种自适应的算法。

 

转载于:https://www.cnblogs.com/eilearn/p/9035424.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值