某某潮流网,最新潮鞋资讯分享!

微信号:weixin888

机器学习2 -- 优化器(SGD、SGDM、Adagrad、RMSProp、Adam)

时间:2024-04-15 12:04人气:编辑:佚名

作者简介:

腾讯T11算法研究员。硕士毕业于中国科学院大学。在阿里和腾讯工作多年,拥有丰富的搜索和推荐算法经验。CSDN博客专家,原创文章100篇。发表专利15个,其中已授权6个。

作者(腾讯T11推荐算法研究员)文章主页

SGD全称Stochastic Gradient Descent,随机梯度下降,1847年提出。每次选择一个mini-batch,而不是全部样本,使用梯度下降来更新模型参数。它解决了随机小批量样本的问题,但仍然有自适应学习率、容易卡在梯度较小点等问题。

SGDM即为SGD with momentum,它加入了动量机制,1986年提出。

如上所示,当前动量V由上一次迭代动量,和当前梯度决定。第一次迭代时V0=0,由此可得到前三次迭代的动量

由此可见t迭代的动量,其实是前t-1迭代的梯度的加权和。λ为衰减权重,越远的迭代权重越小。从而我们可以发现,SGDM相比于SGD的差别就在于,参数更新时,不仅仅减去了当前迭代的梯度,还减去了前t-1迭代的梯度的加权和。由此可见,SGDM中,当前迭代的梯度,和之前迭代的累积梯度,都会影响参数更新。

SGDM相比SGD优势明显,加入动量后,参数更新就可以保持之前更新趋势,而不会卡在当前梯度较小的点了。

美中不足的是,SGDM没有考虑对学习率进行自适应更新,故学习率的选择很关键。

它利用迭代次数和累积梯度,对学习率进行自动衰减,2011年提出。从而使得刚开始迭代时,学习率较大,可以快速收敛。而后来则逐渐减小,精调参数,使得模型可以稳定找到最优点。其参数迭代公式如下

与SGD的区别在于,学习率除以 前t-1 迭代的梯度的平方和。故称为自适应梯度下降。

Adagrad有个致命问题,就是没有考虑迭代衰减。极端情况,如果刚开始的梯度特别大,而后面的比较小,则学习率基本不会变化了,也就谈不上自适应学习率了。这个问题在RMSProp中得到了修正

它与Adagrad基本类似,只是加入了迭代衰减,2013年提出,如下

观察上式和Adagrad的区别,在于RMSProp中,梯度累积不是简单的前t-1次迭代梯度的平方和了,而是加入了衰减因子α。简单理解就是学习率除以前t-1次迭代的梯度的加权平方和。加入衰减时make sense的,因为与当前迭代越近的梯度,对当前影响应该越大。另外也完美解决了某些迭代梯度过大,导致自适应梯度无法变化的问题。

Adam是SGDM和RMSProp的结合,它基本解决了之前提到的梯度下降的一系列问题,比如随机小样本、自适应学习率、容易卡在梯度较小点等问题,2015年提出。如下

由上可见,mt即为动量,根号vt即为自适应学习率。加入了两个衰减系数β1和β2。刚开始所需动量比较大,后面模型基本稳定后,逐步减小对动量的依赖。自适应学习率同样也会随迭代次数逐渐衰减。 则是防止除数为0,仅仅是数学计算考虑。

五大优化器其实分为两类,SGD、SGDM,和Adagrad、RMSProp、Adam。使用比较多的是SGDMAdam

如上所示,SGDM在CV里面应用较多,而Adam则基本横扫NLP、RL、GAN、语音合成等领域。所以我们基本按照所属领域来使用就好了。比如NLP领域,Transformer、BERT这些经典模型均使用的Adam,及其变种AdamW。

有人研究过几大优化器在一些经典任务上的表现。如下是在图像分类任务上,不同优化器的迭代次数和ACC间关系。

SGD > Adam Which One Is The Best Optimizer: Dogs-VS-Cats Toy Experiment

训练集上

验证集上

可见

  1. 优化器对ACC影响也挺大的,比如上图Adam比SGD高了接近3个点。故选择一个合适的优化器也很重要。
  2. Adam收敛速度很快,SGDM相对要慢一些,但最终都能收敛到比较好的点
  3. 训练集上Adam表现最好,但验证集上SGDM最好。可见SGDM在训练集和验证集一致性上,比Adam好。

LSTM模型上,可见Adam比SGDM收敛快很多。最终结果SGDM稍好,但也差不多。

SGDM训练慢,但收敛性更好,训练也更稳定,训练和验证间的gap也较小。而Adam则正好相反。

结合了SGDM和Adam,刚开始使用Adam,使得模型快速收敛。然后使用SGDM,使模型收敛稳定。如下

对Adam的改进在于,学习率衰减Vt变为了取max,如下。

优点为

  1. 学习率可以随迭代次数单调递减,不会在某些迭代突然变大
  2. 去掉了没什么信息含量的梯度,也就是较小的梯度

AMSGrad处理了较大的学习率,而AdaBound则将学习率限制在一定范围内

针对于SGDM收敛过慢,且没有使用自适应学习率的问题,Cyclical LR提出了让学习率在一定范围内变大和变小的方法,如下

和Cyclical LR类似,但增大时为阶跃增大,如下

2020最新文章,

参数迭代n步后,再退回来一步。以新的起点重新开始迭代,这样可以增加收敛稳定性,防止跑飞。

往future看几步,保证模型训练稳定

Adam的future版本

和加入正则类似,但不同的是它加入的是weight decay。Huging Face的预训练模型广泛应用了AdamW作为优化器,需要重点掌握。

总结下来,SGDM和Adam两大阵营的各种优化后的optimizer如下

optimizer优化主要有三种方法

  1. 让模型探索更多的可能,包括dropout、加入Gradient noise、样本shuffle等
  2. 让模型站在巨人肩膀上,包括warn-up、curriculum learning、fine-tune等
  3. 归一化 normalization,包括batch-norm和layer-norm等
  4. 正则化,惩罚模型的复杂度
谢杨易-腾讯T11推荐算法谢杨易:精通推荐算法1:为什么需要推荐系统(系列文章,建议关注)精通推荐算法2:推荐系统分类和技术架构(面试必备)14 赞同 · 11 评论文章精通推荐算法3:数据样本(面试必备)18 赞同 · 4 评论文章谢杨易:精通推荐算法4:特征工程(面试必备,史上最全!)谢杨易:精通推荐算法5:特征交叉(体系化总结)推荐算法架构1:召回(系列连载,建议关注)40 赞同 · 8 评论文章推荐算法架构2:粗排(体系化总结)29 赞同 · 8 评论文章推荐算法架构3:精排(万字长文)56 赞同 · 13 评论文章推荐算法架构4:重排(面试必备)56 赞同 · 12 评论文章

标签: 梯度   学习   推荐  
相关资讯
热门频道

热门标签

官方微信官方微博百家号

网站简介 | 意见反馈 | 联系我们 | 法律声明 | 广告服务

Copyright © 2002-2022 天富平台-全球注册登录站 版权所有 备案号:粤ICP备xxxxxxx号

平台注册入口