大模型面试题26:Adam优化器小白版速懂


Adam优化器:小白版速懂

Adam 是深度学习里超常用的 智能调参工具 ,它会自动给每个参数定制合适的学习率,比固定学习率训练更快、更稳,结合了 Momentum (动量)和 RMSProp(自适应学习率)的优点。


一、核心思路(小白类比)

想象你在开车下山找最低点(优化参数):

  1. Momentum:记住之前的行驶方向,让下坡更顺畅,减少来回摇摆。
  2. RMSProp:根据路面坡度的波动调整油门大小,波动大就减速,波动小就加速。
  3. 偏差修正:刚起步时(训练初期)校准仪表,避免数据不准。

二、数学公式(Markdown可识别)

初始化

  • 待优化参数:θ\thetaθ
  • 一阶矩(动量):m0=0m_0 = 0m0=0
  • 二阶矩(梯度平方的指数移动平均):v0=0v_0 = 0v0=0
  • 迭代次数:t=0t = 0t=0

1. 计算梯度

每次迭代先算当前参数的梯度:
gt=∇θJ(θt−1) g_t = \nabla_\theta J(\theta_{t-1}) gt=∇θJ(θt−1)

  • J(θ)J(\theta)J(θ) 是损失函数,∇θ\nabla_\theta∇θ 表示对 θ\thetaθ 求导。

2. 更新一阶矩(动量)

保留历史梯度的一部分,加上当前梯度:
mt=β1⋅mt−1+(1−β1)⋅gt m_t = \beta_1 \cdot m_{t-1} + (1 - \beta_1) \cdot g_t mt=β1⋅mt−1+(1−β1)⋅gt

  • β1\beta_1β1 通常取 0.9,代表保留 90% 的历史动量。

3. 更新二阶矩(梯度平方的移动平均)

保留历史梯度平方的一部分,加上当前梯度平方:
vt=β2⋅vt−1+(1−β2)⋅gt2 v_t = \beta_2 \cdot v_{t-1} + (1 - \beta_2) \cdot g_t^2 vt=β2⋅vt−1+(1−β2)⋅gt2

  • β2\beta_2β2 通常取 0.999,代表保留 99.9% 的历史梯度平方信息。

4. 偏差修正

因为初始值是 0,mtm_tmt 和 vtv_tvt 在训练初期会偏小,需要修正:
m^t=mt1−β1t \hat{m}_t = \frac{m_t}{1 - \beta_1^t} m^t=1−β1tmt
v^t=vt1−β2t \hat{v}_t = \frac{v_t}{1 - \beta_2^t} v^t=1−β2tvt


5. 更新参数

用修正后的动量和梯度波动,定制学习率:
θt=θt−1−α⋅m^tv^t+ϵ \theta_t = \theta_{t-1} - \alpha \cdot \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} θt=θt−1−α⋅v^t +ϵm^t

  • α\alphaα:初始学习率(通常取 0.001)
  • ϵ\epsilonϵ:防止分母为 0 的小常数(通常取 10−810^{-8}10−8)

三、超参数的小白理解

超参数 常用值 大白话作用
α\alphaα 0.001 初始"油门大小",太大容易冲过最优值,太小走得慢
β1\beta_1β1 0.9 记忆旧方向的程度,越接近 1 惯性越大
β2\beta_2β2 0.999 记忆梯度波动的程度,越接近 1 越谨慎调整学习率
ϵ\epsilonϵ 10−810^{-8}10−8 防止除 0 的"安全垫"

四、为什么 Adam 好用

  • 自动调学习率:每个参数的学习率会根据梯度波动自动调整。
  • 训练稳定:动量 + 自适应学习率,减少震荡。
  • 收敛快:适合大数据、深模型,初期速度快,后期稳定。

五、极简伪代码(可直接实现)

python 复制代码
import numpy as np

def adam(params, grads, m, v, t, lr=0.001, beta1=0.9, beta2=0.999, eps=1e-8):
    t += 1
    m = beta1 * m + (1 - beta1) * grads
    v = beta2 * v + (1 - beta2) * grads**2
    m_hat = m / (1 - beta1**t)
    v_hat = v / (1 - beta2**t)
    params -= lr * m_hat / (np.sqrt(v_hat) + eps)
    return params, m, v, t

相关推荐
孤狼warrior16 分钟前
YOLO目标检测 一千字解析yolo最初的摸样 模型下载,数据集构建及模型训练代码
人工智能·python·深度学习·算法·yolo·目标检测·目标跟踪
凯子坚持 c17 分钟前
构建企业级 AI 工厂:基于 CANN `cann-mlops-suite` 的端到端 MLOps 实战
人工智能
Elwin Wong19 分钟前
浅析OpenClaw:从“贾维斯”梦想看下一代 AI 操作系统的架构演进
人工智能·agent·clawdbot·moltbot·openclaw
Rorsion20 分钟前
PyTorch实现线性回归
人工智能·pytorch·线性回归
AI资源库21 分钟前
OpenClaw:159K Star的开源AI助手正在重新定义“个人AI“的边界
人工智能·语言模型
凯子坚持 c27 分钟前
StreamingLLM:无需训练即可支持无限上下文的推理技术
人工智能
Tfly__27 分钟前
在PX4 gazebo仿真中加入Mid360(最新)
linux·人工智能·自动驾驶·ros·无人机·px4·mid360
LLWZAI27 分钟前
让朱雀AI检测无法判断的AI公众号文章,当创作者开始与算法「躲猫猫」
大数据·人工智能·深度学习
深圳市九鼎创展科技40 分钟前
瑞芯微 RK3399 开发板 X3399 评测:高性能 ARM 平台的多面手
linux·arm开发·人工智能·单片机·嵌入式硬件·边缘计算
HELLO程序员1 小时前
Claude Code 2.1 发布:2026 年 AI 智能体开发的范式革命
人工智能