Adam原理

Adam是一种在训练神经网络时常用的优化算法,它结合了动量法和自适应学习率的优点,提供快速收敛且无需手动调整学习率的训练过程。算法通过计算梯度的均值和方差估计,动态调整学习率,以实现更稳定和高效的模型训练。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Adam

Adam(Adaptive Moment Estimation)是一种自适应的优化算法,用于训练神经网络等机器学习模型。Adam算法是一种基于梯度下降的优化算法,结合了动量方法和自适应学习率的优点,并对学习率进行自适应调整。Adam算法的优点是收敛速度快,不需要手动调整学习率,兼顾了稳定性和速度。

Adam算法的步骤如下:

  1. 初始化模型参数θ\boldsymbol{\theta}θ和梯度缓存变量S\boldsymbol{S}SR\boldsymbol{R}R
  2. 对于每个迭代步骤t=1,2,...t=1,2,...t=1,2,...执行以下操作:
    a. 从训练集中随机抽取一个小批量样本Xt\boldsymbol{X}_tXt和其对应的标签yt\boldsymbol{y}_tyt
    b. 计算小批量样本的梯度信息gt\boldsymbol{g}_tgt
    c. 更新第一矩估计向量St\boldsymbol{S}_tSt和第二矩估计向量Rt\boldsymbol{R}_tRt
    d. 计算偏置校正后的梯度信息gt′\boldsymbol{g}'_tgt
    e. 更新模型参数θ\boldsymbol{\theta}θ

Adam算法的具体计算公式如下:

  1. 计算梯度信息:
    gt=∇θ J(θ,Xt,yt)\boldsymbol{g}_t = \nabla_{\boldsymbol{\theta}}\ J(\boldsymbol{\theta}, \boldsymbol{X}_t, \boldsymbol{y}_t)gt=θ J(θ,Xt,yt)
    式中,J(θ,Xt,yt)J(\boldsymbol{\theta}, \boldsymbol{X}_t, \boldsymbol{y}_t)J(θ,Xt,yt)表示目标函数,Xt\boldsymbol{X}_tXtyt\boldsymbol{y}_tyt分别表示一个小批量样本的特征和标签。

  2. 计算第一矩估计向量St\boldsymbol{S}_tSt和第二矩估计向量Rt\boldsymbol{R}_tRt
    St=β1St−1+(1−β1)gt\boldsymbol{S}_t = \beta_1 \boldsymbol{S}_{t-1} + (1-\beta_1) \boldsymbol{g}_tSt=β1St1+(1β1)gt
    Rt=β2Rt−1+(1−β2)gt2\boldsymbol{R}_t = \beta_2 \boldsymbol{R}_{t-1} + (1-\beta_2) \boldsymbol{g}_t^2 Rt=β2Rt1+(1β2)gt2
    式中,St\boldsymbol{S}_tSt表示第一矩估计向量,Rt\boldsymbol{R}_tRt表示第二矩估计向量;β1\beta_1β1β2\beta_2β2是衰减率(decay rate),通常取值为0.9和0.999。

  3. 计算偏置校正后的梯度信息gt′\boldsymbol{g}'_tgt
    S^t=St1−β1t\boldsymbol{\hat{S}}_t = \frac{\boldsymbol{S}_t}{1-\beta_1^t}S^t=1β1tSt
    R^t=Rt1−β2t\boldsymbol{\hat{R}}_t = \frac{\boldsymbol{R}_t}{1-\beta_2^t}R^t=1β2tRt
    gt′=αS^tR^t+ϵ\boldsymbol{g}'_t = \frac{\alpha \boldsymbol{\hat{S}}_t}{\sqrt{\boldsymbol{\hat{R}}_t}+\epsilon}gt=R^t+ϵαS^t
    式中,S^t\boldsymbol{\hat{S}}_tS^tR^t\boldsymbol{\hat{R}}_tR^t分别表示经过偏置校正后的第一矩估计向量和第二矩估计向量;α\alphaα表示学习率(learning rate),ϵ\epsilonϵ是平滑项,通常设置为10−810^{-8}108,用于防止除0。

  4. 更新模型参数:
    θt+1=θt−gt′\boldsymbol{\theta}_{t+1} = \boldsymbol{\theta}_t - \boldsymbol{g}'_tθt+1=θtgt

以上就是Adam算法的具体步骤和计算公式。

### Adam优化器的工作原理及实现机制 Adam优化器是一种自适应学习率的优化算法,它结合了Momentum和RMSprop的优点,能够自动调整每个参数的学习率,并利用动量来加速收敛[^2]。以下是关于Adam优化器的具体原理和实现机制的详细说明: #### 1. 核心思想 Adam优化器的核心思想是通过计算梯度的一阶矩估计(均值)和二阶矩估计(未中心化的方差),动态调整每个参数的学习率。这种机制使得Adam在处理稀疏梯度和非平稳目标函数时表现尤为出色[^5]。 #### 2. 数学模型与公式 Adam优化器的更新规则如下: - 首先定义超参数:学习率 \( \eta \),一阶矩估计的衰减率 \( \beta_1 \),二阶矩估计的衰减率 \( \beta_2 \),以及一个极小值 \( \epsilon \) 用于数值稳定性。 - 在第 \( t \) 次迭代中,计算当前梯度 \( g_t = \nabla J(\theta_t) \),其中 \( J(\theta_t) \) 是损失函数。 - 更新一阶矩估计(均值)和二阶矩估计(未中心化的方差): \[ m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t \] \[ v_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2 \] - 对 \( m_t \) 和 \( v_t \) 进行偏差修正,以消除初始阶段的偏差: \[ \hat{m}_t = \frac{m_t}{1 - \beta_1^t} \] \[ \hat{v}_t = \frac{v_t}{1 - \beta_2^t} \] - 最后更新参数: \[ \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t \] 上述公式中,\( m_t \) 和 \( v_t \) 分别表示梯度的一阶矩和二阶矩估计,偏差修正确保了初期估计的准确性[^4]。 #### 3. 代码实现示例 以下是一个简单的Adam优化器的Python实现: ```python import numpy as np class AdamOptimizer: def __init__(self, params, lr=0.001, beta1=0.9, beta2=0.999, epsilon=1e-8): self.params = params self.lr = lr self.beta1 = beta1 self.beta2 = beta2 self.epsilon = epsilon self.t = 0 self.m = [np.zeros_like(param) for param in params] self.v = [np.zeros_like(param) for param in params] def step(self, grads): self.t += 1 for i, (param, grad) in enumerate(zip(self.params, grads)): self.m[i] = self.beta1 * self.m[i] + (1 - self.beta1) * grad self.v[i] = self.beta2 * self.v[i] + (1 - self.beta2) * (grad ** 2) m_hat = self.m[i] / (1 - self.beta1 ** self.t) v_hat = self.v[i] / (1 - self.beta2 ** self.t) param -= self.lr * m_hat / (np.sqrt(v_hat) + self.epsilon) # 示例使用 params = [np.random.rand(10, 10), np.random.rand(5, 5)] optimizer = AdamOptimizer(params) grads = [np.random.rand(10, 10), np.random.rand(5, 5)] optimizer.step(grads) ``` #### 4. 特点与优势 Adam优化器的主要特点包括: - 自动调整学习率,减少手动调参的需求。 - 结合Momentum和RMSprop的优点,能够在多种场景下表现出色。 - 对稀疏梯度和非平稳目标函数具有良好的适应性[^5]。 #### 5. 局限性 尽管Adam优化器性能优越,但它也存在一些局限性: - 在某些情况下,Adam可能会导致收敛到次优解的问题[^1]。 - 参数初始化对最终结果可能产生较大影响。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值