通俗理解 Adam 优化器

Adam吸收了Adagrad(自适应学习率的梯度下降算法)和动量梯度下降算法的优点,既能适应稀疏梯度(即自然语言和计算机视觉问题),又能缓解梯度震荡的问题
常见优化器的详细解析请参考此文章->#深度解析# 深度学习中的SGD、BGD、MBGD、Momentum、NAG、Adagrad、Adadelta,RMSprop、Adam优化器

Adma的公式如下,这里我们主要分析红色的标记的这3行公式:
通俗理解 Adam 优化器_第1张图片
公式1:计算 历史梯度的一阶指数平滑值,用于得到带有动量的梯度值
公式2:计算 历史梯度平方的一阶指数平滑值,用于得到每个权重参数的学习率权重参数
公式3:计算变量更新值,由公式3可知,变量更新值正比于历史梯度的一阶指数平滑值,反比于历史梯度平方的一阶指数平滑值;

历史梯度的一阶指数平滑

历史梯度的一阶指数平滑(也叫一阶矩加权均值)可以理解为求历史梯度的加权平均,距离当前时刻距离越远权重越小,这里类似于求历史梯度的L1范数,这个思想来自于 动量梯度下降算法

如果权重参数更新时,某一维度存在较大震荡(梯度更新值正负交替),那么对当前梯度使用一阶指数平滑(对历史梯度进行正负抵消),可以得到一个较小的梯度值

如果变量在某一维度更新时不存在较大震荡,且在在某一方向上存在稳定较大的梯度更新,那么通过一阶指数平滑后会得到一个较大的值。

总的来说,历史梯度的一阶指数平滑就是使用历史梯度信息对当前梯度进行一个修正(消除变量更新时的震荡),从而得到一个稳定的梯度更新值

历史梯度平方的一阶指数平滑

历史梯度平方的一阶指数平滑(也叫二阶矩加权均值)可以理解为求历史梯度平方的加权平均,距离当前时刻距离越远权重越小,这里类似于求历史梯度的L2范数,这个思想来自于自适应学习率梯度下降算法

因为历史梯度平方的一阶指数平滑的作用就是使每个参数的学习率不同,因此这里我们将学习率参数 η \eta η v t + ϵ \sqrt{v_t}+\epsilon vt +ϵ 看作一个整体 η v t + ϵ \frac{\eta}{\sqrt{v_t}+\epsilon} vt +ϵη,这里我们简单称他为自适应学习率

在迭代过程中,如果某一维度一直以很小的梯度进行更新,证明此方向梯度变换较为稳定,因此可以加大学习率,以较大的学习率在此维度更新,体现在公式上就是:对历史梯度平方进行一阶指数平滑后,公式2会得到一个很小的值,公式3中的自适应学习率会相对较小

相反,某一维度在迭代过程中一直以很大的梯度进行更新,明此方向梯度变换较为剧烈(不稳定),因此可减小学习率,以较小的学习率在此维度更新 体现在公式上就是:对历史梯度平方进行一阶指数平滑后,公式2则会得到一个很大的值,公式3中的自适应学习率会相对较大

历史梯度平方的一阶指数平滑也可以解决梯度稀疏的问题;频繁更新的梯度将会被赋予一个较小的学习率,而稀疏的梯度则会被赋予一个较大的学习率,通过上述机制,在数据分布稀疏的场景,能更好利用稀疏梯度的信息,比标准的SGD算法更有效地收敛。

综上所述,Adam 优化器可以根据历史梯度的震荡情况和过滤震荡后的真实历史梯度对变量进行更新

关于 Adam 和 MSGD算法的比较请参考此文章->#深入探究# Adam和SGDM优化器的对比

你可能感兴趣的:(机器学习,深度学习,NLP,NLP,adam算法,优化器,深度学习,神经网络)