在深度学习领域,优化器的选择对模型的训练效率和性能起着决定性作用。
Adam优化器
作为一种自适应优化算法,凭借其根据历史梯度信息动态调整学习率的特性,备受研究者和工程师的青睐。它巧妙融合了RMSProp
和Momentum
两种优化算法的理念,并对参数更新进行归一化处理,确保每个参数更新的量级相近,有效提升了训练效果。在众多实际问题中,尤其是大规模数据集上深度神经网络的训练,Adam优化器都展现出卓越的性能。
前置知识:RMSProp和Momentum
在深入探究Adam优化器之前,先来了解一下RMSProp和Momentum这两种优化算法。
RMSProp优化算法
RMSprop(Root Mean Square Propagation)
是一种用于处理深度学习中稀疏梯度问题的自适应学习率优化算法。它通过对梯度的平方(二阶矩)进行加权平均,来动态调整每个参数的学习率。具体来说,较大梯度的参数步长会更小,较小梯度的参数步长则会较大,以此避免训练过程中的震荡现象。
- 梯度平方的指数加权平均:
$$v_t = \beta v_{t-1} + (1 - \beta) g_t^2$$
其中, v t v_t vt 表示时间步 t t t 时的梯度平方的加权平均(二阶矩), g t g_t gt 是当前时间步 t t t 的梯度, β \beta β 是衰减系数,用于控制梯度平方的历史信息占比,通常取值为0.9。 - 参数更新:
θ t = θ t − 1 − α v t + ϵ g t \theta_t = \theta_{t-1} - \frac{\alpha}{\sqrt{v_t + \epsilon}} g_t θt=θt−1−vt+ϵαgt
其中, θ t \theta_t θt 是时间步 t t t 时的模型参数, α \alpha α 是学习率, ϵ \epsilon ϵ 是一个极小的常数,常取值为 1 × 1 0 − 8 1\times10^{-8} 1×10−8,用于防止分母为零。 - 公式解析:
RMSprop
通过对梯度平方进行指数加权平均,计算每个参数的更新步长,使其能记住过去梯度的变化,并在未来更新中予以考虑。在更新参数时,依据每个参数的梯度平方加权平均值 v t v_t vt 调整学习率,梯度大的参数通过对 v t v_t vt 平方根的缩放避免步伐过大,梯度小的参数则进行较大更新。同时,添加小常数 ϵ \epsilon ϵ 可防止除零错误,保障计算的稳定性。
Momentum优化算法
Momentum(动量)优化器是一种加速梯度下降的方法,它引入“动量”概念,对梯度的历史值进行累积,使参数更新不仅依赖当前梯度,还参考过去的梯度信息。这有助于减少优化过程中的振荡,加快收敛速度。
- 动量更新:
m t = β m t − 1 + ( 1 − β ) g t m_t = \beta m_{t-1} + (1 - \beta) g_t mt=βmt−1+(1−β)gt
其中, m t m_t mt(动量)是时间步 t t t 的梯度加权平均(一阶矩), g t g_t gt 是当前时间步 t t t 的梯度, β \beta β 是动量的衰减系数,通常取值在 0 ≤ β < 1 0\leq \beta < 1 0≤β<1 之间,常见取值为0.9。 - 参数更新:
θ t = θ t − 1 − α m t \theta_t = \theta_{t-1} - \alpha m_t θt=θt−1−αmt
其中, θ t \theta_t θt 是时间步 t t t 的模型参数, α \alpha α 是学习率,用于控制更新步长。 - 公式解析:
m t m_t mt 会结合当前梯度 g t g_t gt 和之前的动量 m t − 1 m_{t - 1} mt−1 形成加权平均,避免梯度震荡,在优化时逐渐加速收敛,特别是在平坦区域或局部最小值附近,动量能帮助跳出不良优化路径。最终的参数更新依赖于加权后的动量 m t m_t mt,而非单纯依赖当前梯度,动量值越大,当前梯度影响越小,历史梯度贡献越大。
Adam优化器的原理
Adam优化器巧妙地融合了RMSProp和Momentum的优势,通过对梯度的一阶矩估计(均值)和二阶矩估计(未中心化的方差)进行综合运用,实现自适应学习率调整。
算法所需参数
- α \alpha α(Stepsize):步长,即学习率,用于控制每次参数更新的幅度。
- β 1 , β 2 ∈ [ 0 , 1 ) \beta_1, \beta_2 \in [0, 1) β1,β2∈[0,1):分别是一阶矩估计和二阶矩估计的指数衰减率。 β 1 \beta_1 β1 通常取值接近1,如0.9,它决定了对历史梯度信息的重视程度; β 2 \beta_2 β2 通常取值也接近1 。
- f ( θ ) f(\theta) f(θ):带有参数 θ \theta θ 的随机目标函数,是模型训练中需要最小化(或最大化)的函数。
- θ 0 \theta_0 θ0:初始参数向量,模型参数的初始值。
算法步骤
- 初始化:
- m 0 ← 0 m_0 \leftarrow 0 m0←0:初始化一阶矩向量为0。
- v 0 ← 0 v_0 \leftarrow 0 v0←0:初始化二阶矩向量为0。
- t ← 0 t \leftarrow 0 t←0:初始化时间步为0。
- 迭代过程:
- 当参数 θ t \theta_t θt 未收敛时,进行以下操作:
- t ← t + 1 t \leftarrow t + 1 t←t+1:时间步加1。
- g t ← ∇ θ f t ( θ t − 1 ) g_t \leftarrow \nabla_{\theta}f_t(\theta_{t - 1}) gt←∇θft(θt−1):计算在时间步 t t t 时,随机目标函数关于参数 θ \theta θ 的梯度。
- m t ← β 1 ⋅ m t − 1 + ( 1 − β 1 ) ⋅ g t m_t \leftarrow \beta_1 \cdot m_{t - 1} + (1 - \beta_1) \cdot g_t mt←β1⋅mt−1+(1−β1)⋅gt:更新梯度加权平均值(一阶矩估计),结合了历史梯度信息和当前梯度。
- v t ← β 2 ⋅ v t − 1 + ( 1 − β 2 ) ⋅ g t 2 v_t \leftarrow \beta_2 \cdot v_{t - 1} + (1 - \beta_2) \cdot g_t^2 vt←β2⋅vt−1+(1−β2)⋅gt2:更新梯度平方的加权平均值(二阶矩估计),反映了梯度的平方的累积情况。
- m ^ t ← m t / ( 1 − β 1 t ) \hat{m}_t \leftarrow m_t / (1 - \beta_1^t) m^t←mt/(1−β1t):修正 m t m_t mt,随着 t t t的增加, ( 1 − β 1 t ) (1 - \beta_1^t) (1−β1t)越来越大, m t / ( 1 − β 1 t ) m_t / (1 - \beta_1^t) mt/(1−β1t)越来越小。
- v ^ t ← v t / ( 1 − β 2 t ) \hat{v}_t \leftarrow v_t / (1 - \beta_2^t) v^t←vt/(1−β2t):修正 v t v_t vt。
- θ t ← θ t − 1 − α ⋅ m ^ t / ( v ^ t + ϵ ) \theta_t \leftarrow \theta_{t - 1} - \alpha \cdot \hat{m}_t / (\sqrt{\hat{v}_t} + \epsilon) θt←θt−1−α⋅m^t/(v^t+ϵ):更新参数,结合了学习率、修正后的 m t m_t mt和 v t v_t vt来调整参数值。
- 当参数 θ t \theta_t θt 未收敛时,进行以下操作:
- 结束:当参数收敛后,返回最终的参数 θ \theta θ。
从数学角度分析Adam优化器的性质
自适应学习率
Adam优化器能根据梯度变化自主调节学习率。从更新公式可知,当梯度较大时,分母 $ (\sqrt{\hat{v}_t} + \epsilon)$ 相应增大,学习率变小,防止一步走得太大;当梯度较小时,分母变小,学习率增大,加快收敛速度。这种自适应策略使Adam优化器在不同训练阶段都能保持良好性能。
先快后慢的收敛特性
训练初期,梯度较大,Adam优化器采用较大学习率,快速向最优解方向前进;随着训练推进,梯度逐渐变小,学习率也逐渐减小,使模型能更精细地调整参数,最终收敛到最优解附近。这种特性保证了收敛速度和精度。
对梯度绝对值的控制
Adam优化器通过除以梯度的二阶矩估计的平方根(即 v ^ t + ϵ \sqrt{\hat{v}_t} + \epsilon v^t+ϵ)来控制每一步更新的步子大小,有效避免了梯度爆炸或梯度消失问题,使模型训练更稳定。
Adam优化器的优势
高效性
Adam优化器收敛速度快,能显著减少训练时间,并且没有复杂运算,尤其适用于大规模数据集和复杂模型的训练。
鲁棒性
它对不同类型的问题,无论是凸优化问题还是非凸优化问题,都有良好的适应性,能取得不错的效果。
易于调参
Adam优化器仅有几个超参数(如 α \alpha α 、 β 1 \beta_1 β1 、 β 2 \beta_2 β2 和 ϵ \epsilon ϵ ),且在大多数情况下,这些超参数都有较为合理的默认值,无需过多调参工作。
Adam优化器凭借其独特的设计和出色的性能,已成为深度学习领域不可或缺的工具。深入理解其原理和性质,能帮助我们更好地运用它提升模型训练效果,推动深度学习技术不断发展。在未来的研究和应用中,相信Adam优化器还会持续改进和完善,为更多领域带来创新与突破。
感谢你的阅读,希望本文能对你有所收获。