深度学习中常见的优化方法及调参方法

本文介绍了深度学习中的优化算法,包括随机梯度下降(SGD)、带动量的SGD、Nesterov动量、AdaGrad、RMSProp和Adam。此外,还探讨了牛顿法及其优势,以及工程实践中的学习率调整策略,如Adam快速收敛后使用SGD,以及周期性学习率和warm up训练方法。
摘要由CSDN通过智能技术生成

基本算法

随机梯度下降SGD

随机梯度下降及其变种是及其学习中应用最多的优化算法,特别是在深度学习中。SGD按照数据分布抽取m个小批量(独立同分布的)样本,通过计算它们的梯度均值,可以得到梯度的无偏估计。
在这里插入图片描述
SGD的关键参数是学习率,在实践中,有必要随着时间的推移逐渐降低学习率。实践中,学习率的更新如下式。
在这里插入图片描述
式中,e0为 初始学习率,et为最终学习率
在这里插入图片描述
学习率可通过实验和误差来选取,若太大,学习曲线将会剧烈振荡,若太小,学习过程很缓慢,那么学习可能会卡在一个相当高的代价值。对于足够大的数据集,SGD可能在处理整个训练集之前就收敛到最终测试集误差的某个固定容差范围内。

带动量的SGD

虽然随机梯度下降仍然是非常受欢迎的优化方法,但其学习过程有时会很慢。动量的方法旨在加速学习,特别是处理高曲率、小但一直的梯度,或是带噪声的梯度。动量算法积累了之前梯度指数级衰减的移动平均,并且继续沿着该方向移动。更新规则如下:
在这里插入图片描述
带动量的SGD算法如下所示:
在这里插入图片描述
之前,步长只是梯度乘以学习率,现在,步长取决于梯度序列的大小和排列。当许多连续的梯度指向相同的方向时,步长最大,达到了加速的效果。
其中步长的大小为在这里插入图片描述。当α越小,步长越大。另外,当梯度方向不一致时,动量还有抑制振荡的作用。

Nesterov动量

Nesterov动量与普通动量的区别是梯度计算在施加当前

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值