[解读] Why Adam Beats SGD for Attention Models

链接: https://arxiv.org/abs/1912.03194v1

本文解释了为什么 Adam 优化方法比 SGD 要更有效, 简单说是因为 SGD 中的梯度范数的偏差太大导致的, 也就是说梯度向量的范数或者某些分量过大. 基于这个分析提出一个新的梯度裁剪方法, 效果比 Adam 还要好.

相关的工作

随机梯度下降 (SGD) 是用于训练神经网络的规范算法 (Robbins & Monro, 1951). 然而 SGD 算法存在的很多缺点, 例如容易产生病态曲率问题. Adam (Kingma & Ba, 2014) 是一种自适应算法, 目前非常常用, 在许多重要的机器学习任务中表现非常好.

本文的改进

假设一个模型为
f ( x ) = E ξ [ f ( x , ξ ) ] f(x)=\mathbb{E}_{\xi}[f(x, \xi)] f(x)=Eξ[f(x,ξ)]
其中 f f f 可以看成一个神经网络的损失函数, x x x 是网络权重, ξ \xi ξ 是样本, 目标是通过调整网络权重 x x x 来使得期望误差最小. 注意到 f ( x ) f(x) f(x) 很有可能是一个非凸的函数. 更多理论分析部分请参考原文.

由于梯度的某个分量可能非常大, 这对优化产生不利的影响, 一个常用的方法是梯度裁剪, 它通用的框架如下:

在这里插入图片描述

其中 g k g_k gk 代表当前迭代中权重的梯度, 总共迭代次数为 T T T , m k m_k mk 为加权后的梯度. 关于第四行梯度裁剪, 自然地有两个方案, 分别是对梯度的范数进行裁剪 (Global CLIPping, GClip) 和按照梯度分量进行裁剪 (Coordinate-wise CLIPping, CClip), 二者的具体定义如下:
GClip ⁡ ( τ k , m k ) = min ⁡ { τ k ∥ m k ∥ , 1 } m k ,  for  τ k ∈ R ≥ 0  or  CClip ⁡ ( τ k , m k ) = min ⁡ { τ k ∣ m k ∣ , 1 } m k ,  for  τ k ∈ R ≥ 0 d . \begin{aligned} &\operatorname{GClip}\left(\tau_{k}, m_{k}\right)=\min \left\{\frac{\tau_{k}}{\left\|m_{k}\right\|}, 1\right\} m_{k}, \text { for } \tau_{k} \in \mathbb{R}_{\geq 0} \text { or }\\ &\operatorname{CClip}\left(\tau_{k}, m_{k}\right)=\min \left\{\frac{\tau_{k}}{\left|m_{k}\right|}, 1\right\} m_{k}, \text { for } \tau_{k} \in \mathbb{R}_{\geq 0}^{d}. \end{aligned} GClip(τk,mk)=min{mkτk,1}mk, for τkR0 or CClip(τk,mk)=min{mkτk,1}mk, for τkR0d.
其中 min ⁡ { } \min \{\} min{} 可以简单理解为一种梯度的缩放系数, 可以针对整个梯度向量, 也可以针对梯度分量. τ k \tau_k τk 是一个阈值参数.

如果噪声分布是重尾的(或变化很大), 则可以通过选择较小的阈值来进行裁剪. 有关 GClip 的理论处理,请参见定理1和2. GClip 会保留更新方向并仅缩放其大小, 而 CClip 会分别缩放每个坐标, 并且可能不会保留方向. 但是, 如果噪声分布在坐标上有很大变化,则 CClip 可以利用这一点, 并且仅剪切那些较重的尾部并因此收敛更快 (请参见定理3).

但是, 要最佳地执行这种方法, 将需要调整所有 τ d \tau_d τd 阈值, 在深度学习中这个参数量可能非常大. 难以手动调整. 即使调整是可行的, 梯度噪声分布也可能是不稳定的, 并且会随着训练的进行而显着变化 (请参见图5).

为了解决以上问题, 本文提出自适应的梯度裁剪算法 (Adaptive Coordinate-wise CLIPping, ACClip):
ACClip ⁡ ( τ k , m k ) = min ⁡ { τ k ∣ m k ∣ + ϵ , 1 } m k , τ k α = β 2 τ k − 1 α + ( 1 − β 2 ) ∣ g k ∣ α . \operatorname{ACClip}\left(\tau_{k}, m_{k}\right)=\min \left\{\frac{\tau_{k}}{\left|m_{k}\right|+\epsilon}, 1\right\} m_{k}, \quad \tau_{k}^{\alpha}=\beta_{2} \tau_{k-1}^{\alpha}+\left(1-\beta_{2}\right)\left|g_{k}\right|^{\alpha}. ACClip(τk,mk)=min{mk+ϵτk,1}mk,τkα=β2τk1α+(1β2)gkα.
它能够自适应的调整每个阈值 τ k \tau_k τk.

参考

  • H. Robbins and S. Monro. A stochastic approximation method. Annals of Mathematical Statistics, 22:400–407, 1951.
  • Diederik P Kingma and Jimmy Ba. ADAM: A method for stochastic optimization. arXiv preprint arXiv:1412.6980, 2014.

补充

强凸函数, L-smooth 函数:
https://blog.fangzhou.me/posts/20190217-convex-function-lipschitz-smooth-strongly-convex/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值