深度学习的一些优化方法

SGD

  • 每次向负梯度方向前进(负梯度是下降速度最快的方向),因为梯度增加的方向就是损失函数L增加的方向。
    在这里插入图片描述

SGDM(SGD of momentum)

  • 相比与SGD增加了momentum项,前进的方向,不仅取决于梯度的方向,还取决于之前的前进方向
    在这里插入图片描述
  • 每步都增加λvi,是因为若求出一个地方梯度为0,SGD就无法继续前进,而SGDM则由于收到之前移动的影响,会继续前进。
    在这里插入图片描述

Adagrad

  • 相比于SGD,增加了关于gi的分母,即过去所有梯度的和。(过去的梯度大说明过去的曲线比较陡,此时就会令学习率变小,避免一下走太快)
    在这里插入图片描述

RMSProp

  • 按照 Adagrad 的方法,若曲线一直很陡,由于一直累加之前的梯度,分母会越来越大,可能还没有到最优点,就会卡住不动。
  • 因此,RMSPropvt 采用下面更合理的累加方式。
    在这里插入图片描述

Adam

  • 由于 RMSProp 算法仍无法解决SGD遇到梯度为0的问题,提出 AdamSGDRMSProp 结合。
  • mtvt 分别增加了分母,使其不会随着时间的增大而无限增大。
    在这里插入图片描述

总结:

  • 后三个方法都在计算过程中增加了分母,我们称为 adaptive learning rate(自适应学习率)。

优化器的应用

  • BERT、Transformer、Tacotran 等知名语义方面的模型都是用 ADAM 训练出来的。
  • big-GAN、MEMO等知名的生成网络的模型都是用ADAM训练出来的。
  • YOLO、Mask-RCNN、ResNet 等知名检测方面的模型都是用 SGDM 训练出来的。

优化器对比

在这里插入图片描述

在这里插入图片描述

  • 可以看到 Adam 训练很快,而 SGDM 虽然慢,但训练更稳定
  • 为解决这一问题,2017年提出了 SWATS ,开始使用Adam,结束时使用SGDM,但变相增加了一些超参数,所以实际使用有待商榷。
    在这里插入图片描述
    在这里插入图片描述
  • RAdam则刚好相反,先使用 SGDM ,后使用 Adam ,下图中在求 rt 时,由于 ρt 开始小于4,无法计算,因此采用这种方案,先采用 SGDM 过渡。
    在这里插入图片描述

有助于优化的方法一

  • Shuffling(训练前对数据清洗,进行旋转、模糊等操作)
  • Dropout (增加随机性的方法)
  • Gradient noise(每次迭代的时候添加一个高斯分布的随机误差)
  • 上面三种方法都让我们增加随机性,鼓励我们多做探索。

有助于优化的方法二

  • Warm-up(先使用较小的学习率,在训练一段时间,有一定先验知识后,采取较大的学习率来加速模型收敛)
  • Curriculum learning (先通过简单的数据训练)
  • Fine-tuning(用训练好的参数(可以从已训练好的模型中获得)初始化自己的网络,然后用自己的数据接着训练)
  • 以上三种方法鼓励我们从简单的方面开始进行,再深入到复杂。

一些主流的优化方法

在这里插入图片描述

  • lookAhead 准备了两套权重, 即两个一模一样的模型,A和B。先训练一个模型,看训练的效果再进行下一步的训练,与传统 SGD 相比, 确实获得了更好的收敛效果。
  • 所有方法都可以与最后的 Lookahead 作结合。

常用优化器分类

  • 最常用的来说,CV 方向我们常用 SGDM ,而NLP,GAN等方面,我们一般使用 Adam
    在这里插入图片描述
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值