每天3分钟,彻底弄懂神经网络的优化器(九)Adam

1. Adam算法的提出

Adam(Adaptive Moment Estimation)算法是由Diederik P. Kingma和Jimmy Ba在2014年提出的。这一算法的详细描述和原理可以在论文《Adam: A Method for Stochastic Optimization》1 中找到,该论文最初是在2014年12月22日提交到arXiv的,并且后来在2015年的ICLR会议上发表。Adam算法结合了AdaGrad算法和RMSProp算法的优点,通过计算梯度的一阶矩估计和二阶矩估计来为不同的参数设计独立的自适应性学习率,从而实现更高效的网络训练。

2. Adam算法的原理

Adam(Adaptive Moment Estimation)优化器是一种用于深度学习中的自适应学习率优化算法。它结合了AdaGrad算法和RMSprop算法的优点,通过计算梯度的一阶矩估计(均值)和二阶矩估计(未中心化的方差)来调整每个参数的学习率,从而实现自适应学习率。

Adam算法的关键特性包括:

  1. 动量(Momentum):类似于物理中的动量概念,它帮助算法在优化过程中增加稳定性,并减少震荡。
  2. 自适应学习率:Adam为每个参数维护自己的学习率,这使得算法能够更加灵活地适应参数的更新需求。
  3. 偏差修正(Bias Correction):由于算法使用了指数加权移动平均来计算梯度的一阶和二阶矩估计,因此在初始阶段会有偏差。Adam通过偏差修正来调整这一点,使得估计更加准确。

Adam算法的更新规则如下:

  1. 初始化一阶矩估计(动量) m t m_t mt 和二阶矩估计(梯度平方的移动平均) v t v_t vt 为0,以及时间步长 t = 1 t=1 t=1

  2. 在每次迭代中,计算梯度 g t g_t gt

  3. 更新一阶矩估计 m t m_t mt 和二阶矩估计 v t v_t vt

    m t = β 1 ⋅ m t − 1 + ( 1 − β 1 ) ⋅ g t m_t = \beta_1 \cdot m_{t-1} + (1 - \beta_1) \cdot g_t mt=β1mt1+(1β1)gt

    v t = β 2 ⋅ v t − 1 + ( 1 − β 2 ) ⋅ g t 2 v_t = \beta_2 \cdot v_{t-1} + (1 - \beta_2) \cdot g_t^2 vt=β2vt1+(1β2)gt2

  4. 计算偏差修正的一阶矩估计 m ^ t \hat{m}_t m^t 和二阶矩估计 v ^ t \hat{v}_t v^t

    m ^ t = m t 1 − β 1 t \hat{m}_t = \frac{m_t}{1 - \beta_1^t} m^t=1β1tmt

    v ^ t = v t 1 − β 2 t \hat{v}_t = \frac{v_t}{1 - \beta_2^t} v^t=1β2tvt

  5. 更新参数 $ \theta $:
    θ t = θ t − 1 − η ⋅ m ^ t v ^ t + ϵ \theta_t = \theta_{t-1} - \eta \cdot \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} θt=θt1ηv^t +ϵm^t

    其中, η \eta η 是学习率, ϵ \epsilon ϵ 是为了数值稳定性而添加的小常数(例如 1 e − 8 1e-8 1e8 ), β 1 \beta_1 β1 β 2 \beta_2 β2 是超参数,通常分别设为0.9和0.999。

3. Adam算法的主要特点

Adam算法因其在多种深度学习任务中的有效性和效率而受到广泛欢迎,尤其是在处理大规模数据集和复杂模型时。然而,它也有一些潜在的问题,比如可能在某些情况下发散。为了解决这个问题,研究者提出了一些改进的算法,如Yogi等。在实际应用中,通常需要根据具体问题调整超参数 β 1 \beta_1 β1 β 2 \beta_2 β2 ,学习率 η \eta η,以及 ϵ \epsilon ϵ 以达到最佳性能。

请添加图片描述

参考

[1] Adam: A Method for Stochastic Optimization

欢迎关注我的GitHub和微信公众号,来不及解释了,快上船!

GitHub: LLMForEverybody

仓库上有原始的Markdown文件,完全开源,欢迎大家Star和Fork!
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值