模型训练——优化器Optimizer的选择


前言

目前,深度学习领域,使用最广泛的优化器种类可分成:SGD和Adam

一、SGD

  SGD —— 随机梯度下降。是一种最为常见、最简单的梯度下降算法,有些书籍还将其分为BGD、SGD、MBGD,分别为批量梯度下降算法、随机梯度下降算法、小批量梯度下降算法。BGD在训练的时候选用所有的训练集进行计算,SGD在训练的时候只选择一个数据进行训练,而MBGD在训练的时候只选择小部分数据进行训练。在模型训练时,都是加载一个批次batch的图片,所以实际上使用的是小批量梯度下降,但大多数文章都是使用SGD这个词来代替

优点:实现简单,收敛稳定。

存在问题
(1)学习率的选择:学习率过小导致收敛速度过慢,需要迭代多次,要求计算资源多;过大又会跳变,跳过极值点。

(2)容易陷入局部最优:在梯度下降时,在 x 方向上是一个最小值点,但是它在另一个方向上是局部最大值点,并且,如果它沿着 x 方向变得更平坦的话,梯度下降会在 x 轴振荡并且不能继续根据 y 轴下降,这就会给我们一种已经收敛到最小值点的错觉。(但这个问题可以设置momentum来缓解,这也是大多数论文中提到的,pytorch的SGD优化器中,momentum=0.9,weight decay=0.0005

二、Adam

Adam是改进的SGD,它加入了更新的动量和自适应的学习率,可以帮助更快地收敛。

优点:收敛速度快;超参数具有很好的解释性,且通常无需调整或仅需很少的微调。

存在问题:可能会对前期出现的特征过拟合,后期才出现的特征很难纠正前期的拟合效果。后期Adam的学习率太低,影响了有效的收敛。

三、AdamW

Adam 虽然收敛速度快,但没能解决参数过拟合的问题。后续提出的AdamW是对Adam的改进,它将权重衰减与梯度更新分开处理。具体来说,权重衰减只应用于权重参数,而不应用于偏置参数。这是通过在损失函数中添加一个额外的L2正则化项来实现的,而不是直接应用于梯度更新。这有助于避免权重衰减对偏置参数的不必要影响,因此可以提高模型的训练效果。

总结

一般来说,使用SGD进行训练,所需要的迭代次数会比较多,因为它收敛速度慢而稳定;Adam类的收敛速度比较快,迭代次数可以设置小一点。但要使用哪种优化器还是要取决于具体的任务和模型,在做项目时,可以先选择Adam类的,训练周期比较短。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想要躺平的一枚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值