牛客题解 | Adam优化器

题目

题目链接

Adam优化器是一种常用的优化算法,用于训练深度学习模型。它结合了动量法和自适应学习率的方法,能够有效地加速模型的训练过程。其步骤如下:

1. 初始化参数:
  • 初始化一阶动量 m 0 m_0 m0 和二阶动量 v 0 v_0 v0,通常设为 0。
  • 初始化学习率 η \eta η
  • 初始化动量衰减系数 β 1 \beta_1 β1 β 2 \beta_2 β2,通常设为 0.9 和 0.999。
  • 初始化小常数 ϵ \epsilon ϵ,通常设为 1 0 − 8 10^{-8} 108
2. 计算梯度:
  • 计算损失函数 L L L 对参数 θ \theta θ 的梯度 g g g
  • 数学表达式为:
    g = ∇ L ( θ ) g = \nabla L(\theta) g=L(θ)
3. 更新一阶动量和二阶动量:
  • 更新一阶动量 m t m_t mt 和二阶动量 v t v_t vt
  • 数学表达式为:
    m t = β 1 m t − 1 + ( 1 − β 1 ) g m_t = \beta_1 m_{t-1} + (1-\beta_1)g mt=β1mt1+(1β1)g
    v t = β 2 v t − 1 + ( 1 − β 2 ) g 2 v_t = \beta_2 v_{t-1} + (1-\beta_2)g^2 vt=β2vt1+(1β2)g2
  • 此外,需要计算偏差修正后的动量和方差,以确保算法的稳定性。
  • 数学表达式为:
    m t = m t 1 − β 1 t m_t = \frac{m_t}{1-\beta_1^t} mt=1β1tmt
    v t = v t 1 − β 2 t v_t = \frac{v_t}{1-\beta_2^t} vt=1β2tvt
4. 更新参数:
  • 更新参数 θ \theta θ
  • 数学表达式为:
    θ = θ − η m t v t + ϵ \theta = \theta - \eta \frac{m_t}{\sqrt{v_t} + \epsilon} θ=θηvt +ϵmt

标准代码如下

def adam_optimizer(parameter, grad, m, v, t, learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-8):
    m = beta1 * m + (1 - beta1) * grad
    v = beta2 * v + (1 - beta2) * (grad**2)
    m_hat = m / (1 - beta1**t)
    v_hat = v / (1 - beta2**t)
    update = learning_rate * m_hat / (np.sqrt(v_hat) + epsilon)
    parameter = parameter - update
    return np.round(parameter,5), np.round(m,5), np.round(v,5)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值