深度学习基础篇: 常用的优化器

逻辑回归中提到过梯度下降法,还有一篇博客详细的介绍了梯度下降法这里我再介绍一下梯度下降法中的常用优化器。如果不知道逻辑回归和梯度下降法,请先阅读上面2篇博客。
梯度下降法的优化器比较多,比如:BGD、SGD 、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam。
但是常用的就2个:SGDAdadelta,所以这主要介绍着2中优化器

SGD

即随机梯度下降法,他是梯度下降法中的一种方式。在求解损失函数最小值时,它随机采用样本不断的迭代,从而得到最小化损失函数

特点
  • 采用的是随机样本,随机打乱数据并重复执行
  • 很容易进入局部最小值,而将局部最小值当做全局最优解
  • 学习率设置过大,将导致收敛过程震荡,难以收敛
  • 学习率设置过小,将导致收敛速度缓慢,同时也容易进入局部最小值
  • 由于样本只有一个,下降过程难免出现震荡,但由于数据量小,计算也非常快
与BGD(批量梯度下降法)对比
  • BGD(批量梯度下降法)每次样本量更大,下降更稳定,但是计算量更大
  • SGD收敛到最小值时,容易更发生震荡,每次更新,方向不一定是对的
  • SGD可以在进入最小值时,较少学习率,减小震荡
  • SGD因为计算速度更快,所以被人喜欢使用
keras代码
sgd = optimizers.SGD(lr=0.01,decay=1e-6,momentum=0.9,nesterov=True)
  • lr:学习率,是一个非负数
  • momentum:扩展功能,表示动量优化,用于加速SGD在相关方向上前进,并抑制震荡,是一个非负数。
  • decay:扩展功能,表示每次参数更新后的学习率衰减参数,是一个非负数
  • nesterov:扩展功能,是一个布尔值,表示是否使用Nestrov动量(NAG)优化

Adadelta

我们都希望模型训练能快速收敛到一个好的结果,于是就有了Adadelta,他可以根据参数在训练期间更新频率进行自动调整学习率。

  • 自动调节优化器,比如SGD训练时,我们希望前期他的学习率高,跑的快,当快收敛的时候又能减少学习率,以至于收敛的时候不震荡。所以自动调节应运而生。
  • Adadelta的超参数推荐默认值即可,不建议修改
  • 它是Momentum、NAG、Adagrad等优化器一步步优化出来的结果

总结

对于新手来说,使用Adadelta就足够了,但是往往熟悉的程序员更喜欢SGD,因为SGD更能掌控模型收敛的过程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值