想象你是一支登山队的队长,要带领队员爬上那座名为“损失”的雪山之巅——那里模型误差最小。老一辈向导 SGD 只会沿脚下最陡的方向走,在山谷里反复打转;Adam 向导虽然灵活,却有个毛病:它把“背包里的石头”(参数正则)和“迈步动作”(梯度更新)搅在一起,想扔石头却连步子一起乱了分寸。新一代的三位向导给出了三种登山哲学:AdamW 把“扔石头”单独拎出来,真正减负;Lion 干脆只看方向不看距离,用果断的方向感碾压复杂地形;Sophia 则举着曲率望远镜,先看清前方坡度再决定每一脚踏多重。这篇文章不堆砌数学,而是带你把三位向导的看家本领摸透:它们怎么走、谁快谁稳、什么地形该请谁出山。

岗位关联

优化器是深度学习训练的“方向盘”。理解 AdamW、Lion 与 Sophia 的设计差异,能让你在大模型预训练与微调中准确选型,显著提升收敛速度与泛化能力——这是从“会调参”走向“懂设计”的关键一步。

目录
  1. 可视化演示
  2. 优化器演进:从看坡度到看路况
  3. AdamW:把石头和步伐分开管理
  4. Lion:只看方向不看距离
  5. Sophia:用望远镜看坡度变化
  6. 设计理念对比:三条不同的登山路线
  7. 训练效果分析:谁在真实地形中更胜一筹
  8. 工程实践建议:什么时候请哪位向导
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

通过优化轨迹对比、权重衰减解耦和动量机制分析三个模式,深入理解AdamW、Lion和Sophia的设计原理与适用场景。

本节配有交互动效(进入视口后自动加载,约 3KB)。

三种优化器收敛轨迹对比 AdamW: 稳定收敛,权重衰减解耦改善泛化 Lion: 符号动量减少内存,收敛路径更直接 Loss Landscape: θ* = argmin L(θ) 不同优化器在损失曲面上的轨迹反映了各自的收敛速度和稳定性特征

优化器演进:从看坡度到看路况

登山队的老传统是 SGD:向导只测脚下最陡的方向,然后按固定步长走。它简单可靠,可遇到“马鞍”或“狭窄峡谷”时,会在谷底两侧反复横跳,半天爬不出一步。动量法(Momentum)给向导加上了“惯性”:像滚雪球一样,方向不只来自当前一脚,还叠加了之前积累的速度,穿越平缓地带时明显提速。Adam 则更进一步,把每一步的“步长”也自动化了——既缓存梯度的平均值(一阶矩),也缓存梯度平方的平均值(二阶矩),让每个参数自己决定迈多大步。这让 Adam 成为深度学习时代的通用标配,直到大模型出现,它的一个隐患才被放大:正则项和梯度更新纠缠在一起,背包越背越乱。

这条最朴素的更新规则,是整个优化器家族的起点:

从 SGD 到 Adam,登山队一直在升级装备;但背包越换越大,石头和步伐却缠在了一起,是时候请出新一代向导了。

θt+1=θt−η∇L(θt)\displaystyle \theta_{t+1} = \theta_t - \eta \nabla \mathcal{L}(\theta_t)
走一步看一步,步长固定,方向取当前最陡的下坡。
  1. 参数位置 θ_t登山队当前所在坐标,也就是模型的全部参数。它决定模型此刻的“状态”。
    θt∈Rd\theta_t \in \mathbb{R}^d
  2. 学习率 η步长。η 越大步子越大,但太大容易踏空;太小则半天挪不动。
    η>0\eta > 0
  3. 坡度 ∇L(θ_t)损失函数对参数的梯度,告诉向导哪个方向往低处走。
    ∇L(θt)∈Rd\nabla \mathcal{L}(\theta_t) \in \mathbb{R}^d

AdamW:把石头和步伐分开管理

想象登山队里有个背着大包的队员,包里装的是“正则化石头”——用来防止背包太重导致过拟合。以前的 Adam 向导会把“扔石头”动作混在“迈步”动作里:每走一步,包里的石头重量先被脚步的惯性放大或缩小,该扔的没扔干净,步子也被搅乱。AdamW 的改进非常朴素:把“扔石头”从“迈步”里单独拆出来。先按梯度走一步,再从参数上减掉一个小比例,两者彻底分开。

技术层面,权重衰减的本质是对参数做 L2 惩罚。在 SGD 下它与 L2 正则几乎等价,但在自适应优化器里,L2 正则的梯度会先被二阶矩缩放,导致“惩罚强度”随历史梯度大小漂移;而权重衰减直接作用于参数,不受自适应影响。AdamW 正是把 λθ 从梯度中剥离,在更新后独立执行,这个“解耦”带来更干净的正则语义。

AdamW 的更新公式:

AdamW 这位向导的规矩很简单:先迈步、再扔石头,两步互不干扰。背包清得干净,山路走得稳,因此成为大模型训练的事实标配。

θt+1=θt−η(m^tv^t+ϵ+λθt)\displaystyle \theta_{t+1} = \theta_t - \eta \left( \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} + \lambda \theta_t \right)
括号里前半段是自适应步伐,后半段是独立衰减,两者不再纠缠。
  1. 一阶动量 m̂_t历史梯度的指数移动平均,代表当前脚下的总体趋势。为避免训练初期估计偏小,需要做偏差校正。
    m^t=mt1−β1t\hat{m}_t = \frac{m_t}{1 - \beta_1^t}
  2. 二阶矩 v̂_t梯度平方的指数移动平均,衡量每个方向的历史震荡幅度,用来按维度调节步长。
    v^t=vt1−β2t\hat{v}_t = \frac{v_t}{1 - \beta_2^t}
  3. 自适应步长m̂_t 除以 √v̂_t 加 ε,让震荡剧烈的方向自动变小步幅,平稳的方向维持大步。
    m^tv^t+ϵ\frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon}
  4. 权重衰减 λθ_t独立于自适应缩放,直接把参数按固定比例缩小,相当于“单独扔石头”的减负动作。
    λθt\lambda \theta_t
  5. 整体更新自适应步长与衰减项并列相加,再乘学习率后从当前位置减去,解耦完成。
    θt+1=θt−η(⋯+⋯ )\theta_{t+1} = \theta_t - \eta(\cdots + \cdots)

Lion:只看方向不看距离

登山队里还有一位“极简派”向导:给它任何坡度信息,它只回答“向左还是向右”。这就是 Lion。它把动量合成结果送入符号函数 sign():正数输出 +1,负数输出 -1,零输出 0。于是每步更新只有固定的方向牌,完全没有梯度幅度。乍看是在丢信息,实则带来两个好处:一是不再被梯度大小干扰,对小噪声和异常梯度更鲁棒;二是免去二阶矩缓存,优化器内存直接省一半。代价是学习率需要单独校准——Lion 通常取 AdamW 学习率的 1/3 到 1/10,因为它的每步方向固定,不存在自适应缩放。

Lion 的更新规则:

Lion 有点像那位话少却果断的向导:你问它前面怎么走,它只说向左或向右,从不解释为什么。偏偏这种果决,在漫长的预训练中意外地稳。

ct=β1mt−1+(1−β1)gt,θt+1=θt−ηtsign⁡(ct)\displaystyle c_t = \beta_1 m_{t-1} + (1-\beta_1) g_t, \qquad \theta_{t+1} = \theta_t - \eta_t \operatorname{sign}(c_t)
没有除法、没有平方根,只有一个符号函数,简单到极致。
  1. 历史动量 m_{t-1}上一轮积累的方向记忆,相当于向导脑中的“路感”。
    mt−1∈Rdm_{t-1} \in \mathbb{R}^d
  2. 新旧信息合成当前梯度 g_t 按 (1-β₁) 融入,历史动量按 β₁ 保留,平衡新坡与旧路。
    ct=β1mt−1+(1−β1)gtc_t = \beta_1 m_{t-1} + (1-\beta_1) g_t
  3. 符号函数 sign只保留正负号,把任意向量压成 +1 或 -1,与梯度大小彻底无关。
    sign⁡(ct)∈{−1,0,+1}d\operatorname{sign}(c_t) \in \{-1, 0, +1\}^d
  4. 参数更新符号方向乘学习率 η_t 后加到参数上,完成一步“只看方向”的移动。
    θt+1=θt−ηtsign⁡(ct)\theta_{t+1} = \theta_t - \eta_t \operatorname{sign}(c_t)

Sophia:用望远镜看坡度变化

前两位向导都在“坡度”上做文章,Sophia 则掏出了望远镜:不仅要看当前坡度,还要预判坡度变化得多快——这就是二阶信息,也叫曲率。曲率大说明地形陡峭起伏,步子要小;曲率小说明平缓,步子可以放大。Sophia 用一个对角 Hessian 近似来估计曲率:它不存完整矩阵,只对梯度平方做指数移动平均,相当于给每个参数配一把独立的“曲率尺子”。为了防止曲率估计不准导致大步跨越,它还加了一个裁剪阀门 clip,把 g/h 限制在 [-ρ, ρ] 内,确保每步最大幅度可控。于是它可以用接近一阶优化器的内存成本,获得二阶优化器般的收敛速度。

Sophia 的简化更新公式:

Sophia 是四位向导中最“学术”的一位——手里始终举着曲率望远镜,先把前方坡度看个七八分,再决定这一脚踩多重,又快又稳。

θt+1=θt−ηt⋅clip⁡(gth^t,−ρ,ρ)\displaystyle \theta_{t+1} = \theta_t - \eta_t \cdot \operatorname{clip}\left( \frac{g_t}{\hat{h}_t}, -\rho, \rho \right)
曲率缩放和裁剪阀门协同工作,让二阶信息的收益不被噪声抵消。
  1. 当前梯度 g_t这一脚的坡度,来自损失函数对参数求导。
    gt=∇L(θt)g_t = \nabla \mathcal{L}(\theta_t)
  2. 曲率估计 ĥ_t对角 Hessian 的近似值,衡量坡度自身变化的速率。
    h^t≈∂2L∂θ2\hat{h}_t \approx \frac{\partial^2 \mathcal{L}}{\partial \theta^2}
  3. 按曲率缩放g_t/ĥ_t 在缓坡处自动放大步长,在陡坡处自动缩小步长。
    gth^t\frac{g_t}{\hat{h}_t}
  4. 裁剪阈值 ρ把缩放结果夹在 [-ρ, ρ] 内,防止曲率估计误差引发参数爆炸。
    clip⁡(⋅,−ρ,ρ)\operatorname{clip}(\cdot, -\rho, \rho)

设计理念对比:三条不同的登山路线

三位向导的分歧,本质上是“如何定义一步”的分歧。我们可以把它们的更新统一写成同一个框架:

一张表看清差异:AdamW 是“精细化步伐”,Lion 是“果断方向感”,Sophia 是“地形预判”。内存上 Lion 最省,AdamW 与 Sophia 多缓存一个二阶量;算力上 AdamW 最通用,Lion 最省计算,Sophia 需要额外估计曲率但通常可以接受。没有绝对优劣,只有合适地形:要稳选 AdamW,要省选 Lion,要快看 Sophia。

θt+1=θt−ηt ut\displaystyle \theta_{t+1} = \theta_t - \eta_t \, u_t
三种走法最终都收敛到同一范式:参数往低处走,差别在方向和步长的算法。
  1. 统一更新框架所有优化器都在做“当前位置减去学习率乘以走法”。
    θt+1=θt−ηtut\theta_{t+1} = \theta_t - \eta_t u_t
  2. 走法 u_t 因人而异AdamW 走自适应归一化梯度加权重衰减;Lion 走符号动量;Sophia 走曲率缩放并裁剪后的梯度。
    ut∈{m^tv^t+λθt,  sign⁡(ct),  clip⁡ ⁣(gth^t)}u_t \in \left\{ \frac{\hat{m}_t}{\sqrt{\hat{v}_t}} + \lambda\theta_t,\; \operatorname{sign}(c_t),\; \operatorname{clip}\!\left(\frac{g_t}{\hat{h}_t}\right) \right\}
  3. 学习率 η_t 统一调步无论走法是什么,最终跨多大步子都由 η_t 控制,这是调参的核心抓手。
    ηt\eta_t

训练效果分析:谁在真实地形中更胜一筹

在大模型基准里,实测结果很有意思。GPT-2 类 Transformer 的预训练中,Sophia 相比 AdamW 大约只用一半 step 就能达到相同损失,收敛曲线一骑绝尘;Lion 与 AdamW 收敛速度接近,但它每一步的算力和内存开销都更小,而且在图像分类、图文匹配等任务上往往拿到更好的验证指标。AdamW 则胜在稳定性:超参鲁棒,任何规模的模型先跑它都不会翻车。

不过 Sophia 并非没有代价:它的 Hessian 估计需要周期性计算,实际吞吐可能被额外开销抵消一部分;Lion 的符号决策在小 batch 场景下噪声更明显,偶尔会在最优解附近抖动。因此工程上的成熟做法是:先在小型模型上做三者的快速对比,选定赢家后再放大到完整训练。收敛曲线就像登山日志——Sophia 一路领先,Lion 虽颠簸却后劲十足,AdamW 稳扎稳打从不掉队。真实地形里,请先在迷你山上试跑一圈。

工程实践建议:什么时候请哪位向导

最后落到选型。大模型预训练和绝大多数 Transformer 微调:首选 AdamW,它稳定、生态完备,权重衰减解耦带来扎实的泛化。若训练集群规模大、算力卡脖子:试试 Lion,优化器内存省一半,学习率通常取 AdamW 的 1/3 到 1/10。若追求极限收敛速度、计算预算紧张:考虑 Sophia,配合预热与余弦退火效果更好。无论选谁,学习率调度都至关重要,大模型训练几乎标配 warmup 预热:

选向导不是投票,而是看山形。大模型这座山,AdamW 是压舱石;算力吃紧时,Lion 是轻骑兵;时间紧迫时,Sophia 是急行军。

ηt=ηmin⁡+(ηmax⁡−ηmin⁡)min⁡(1,tTwarmup)\displaystyle \eta_t = \eta_{\min} + (\eta_{\max} - \eta_{\min}) \min\left(1, \frac{t}{T_{\text{warmup}}}\right)
预热让学习率前期从零缓慢升温,避免大模型训练初期梯度剧烈震荡。
  1. 基础与峰值学习率η_min 是起始小步长,η_max 是预热结束后的目标步长。
    ηmin⁡, ηmax⁡\eta_{\min},\ \eta_{\max}
  2. 预热进度t/T_warmup 反映当前步数在预热期内的位置,驱动线性升温。
    tTwarmup\frac{t}{T_{\text{warmup}}}
  3. 封顶保护min(1, ·) 让学习率在超过预热期后停在峰值,不再无限增长。
    min⁡(1,tTwarmup)\min\left(1, \frac{t}{T_{\text{warmup}}}\right)

AI 应用场景

大语言模型预训练加速

阶段:模型预训练

解决的问题:千亿参数模型训练时,传统 Adam 的 L2 正则会被动量缩放干扰,泛化能力受损;AdamW 通过权重衰减解耦,让正则效果稳定可控,预训练损失下降更平滑。

具体案例:某团队微调 7B 模型时,把 weight_decay 从 0.01 调到 0.1,验证集困惑度下降约 0.3,训练稳定性明显提升。如今 LLaMA、GPT 等主流大模型系列几乎都以 AdamW 为默认优化器。

扩散模型高效训练

阶段:模型训练

解决的问题:扩散模型训练步数长、算力开销大,AdamW 的每步计算与内存成本偏高;Lion 的符号更新省去二阶矩,优化器内存直接减半,吞吐显著提升。

具体案例:在 ImageNet 256×256 扩散模型训练对比中,Lion 用约 AdamW 1/3 的算力达到相近 FID 指标,尤其适合 AIGC 团队在 GPU 集群有限时快速迭代。

高吞吐微调与知识蒸馏

阶段:模型微调

解决的问题:微调阶段迭代步数有限,希望用更少的 step 逼近最优;Sophia 用对角 Hessian 近似曲率,比 AdamW 节省近一半训练步数,适合调度紧张的集群。

具体案例:某团队在 GPT-2 微调任务中用 Sophia 替换 AdamW,训练时间从 6 小时压缩到 3.5 小时,验证损失持平;配合 warmup 与余弦退火后,最终指标甚至略有提升。

Python 演示

python69 行
import numpy as np np.random.seed(42)N = 256X = np.random.randn(N, 2)X[: N // 2] += np.array([2.0, 2.0])X[N // 2 :] -= np.array([2.0, 2.0])y = np.ones(N)y[N // 2 :] = -1  def loss_fn(w, b):    return np.mean(np.logaddexp(0, -y * (X @ w + b)))  def grad_fn(w, b):    z = X @ w + b    p = 1.0 / (1.0 + np.exp(y * z))    gw = -(X.T @ (y * p)) / N    gb = -np.sum(y * p) / N    return gw, gb  def train(opt, epochs=100):    w = np.zeros(2)    b = 0.0    mw = np.zeros(2)    vw = np.zeros(2)    mb = 0.0    vb = 0.0    hw = np.zeros(2)    hb = 0.0    lr = {"AdamW": 0.1, "Lion": 0.02, "Sophia": 0.3}[opt]    wd = 0.01    losses = []    for t in range(1, epochs + 1):        gw, gb = grad_fn(w, b)        if opt == "AdamW":            mw = 0.9 * mw + 0.1 * gw            vw = 0.999 * vw + 0.001 * gw * gw            mb = 0.9 * mb + 0.1 * gb            vb = 0.999 * vb + 0.001 * gb * gb            mwh = mw / (1 - 0.9 ** t)            vwh = vw / (1 - 0.999 ** t)            mbh = mb / (1 - 0.9 ** t)            vbh = vb / (1 - 0.999 ** t)            w -= lr * (mwh / (np.sqrt(vwh) + 1e-8) + wd * w)            b -= lr * (mbh / (np.sqrt(vbh) + 1e-8) + wd * b)        elif opt == "Lion":            cw = 0.9 * mw + 0.1 * gw            cb = 0.9 * mb + 0.1 * gb            w -= lr * np.sign(cw)            b -= lr * np.sign(cb)            mw = 0.99 * mw + 0.01 * gw            mb = 0.99 * mb + 0.01 * gb        else:            hw = 0.9 * hw + 0.1 * gw * gw            hb = 0.9 * hb + 0.1 * gb * gb            rho = 0.05            w -= lr * np.clip(gw / (np.sqrt(hw) + 1e-6), -rho, rho)            b -= lr * np.clip(gb / (np.sqrt(hb) + 1e-6), -rho, rho)        losses.append(loss_fn(w, b))    return losses  if __name__ == "__main__":    for opt in ["AdamW", "Lion", "Sophia"]:        losses = train(opt)        print("{} 最终损失 {:.4f} 最低损失 {:.4f}".format(opt, losses[-1], min(losses)))
目的:用逻辑回归二分类任务对比 AdamW、Lion、Sophia 三种优化器的收敛表现,输出各自的最终损失与最低损失。
  1. p = 1.0 / (1.0 + np.exp(y * z))计算每个样本被正确分类的概率,p 越大代表模型越有把握
  2. gw = -(X.T @ (y * p)) / N用矩阵乘法一次性算出全部样本的梯度,避免手工循环,这也是 PyTorch 底层自动求导的数学基础
  3. mwh = mw / (1 - 0.9 ** t)对一阶动量做偏差校正,消除训练初期动量估计偏小的问题
  4. w -= lr * (mwh / (np.sqrt(vwh) + 1e-8) + wd * w)AdamW 核心:自适应步伐与权重衰减解耦,并行相加
  5. w -= lr * np.sign(cw)Lion 的关键一步:只沿符号方向迈步,步长与梯度大小无关
  6. w -= lr * np.clip(gw / (np.sqrt(hw) + 1e-6), -rho, rho)Sophia 按曲率缩放梯度,并用 rho 裁剪防止过冲

常见误区

误区AdamW 和 Adam 差不多,就是换了个更小的学习率,本质没有区别。

正解AdamW 的关键不是学习率,而是把权重衰减从梯度里拿出来单独作用。Adam 中的 L2 正则先叠加到梯度上,再被二阶矩缩放,衰减效果被稀释;AdamW 让衰减直接作用于参数,幅度稳定可控。就像“擦鞋底泥”和“连鞋子一起扔进洗衣机”的区别,看似都在处理泥巴,效果完全不同。

为何常见:两种写法的公式里都有 λθ 项,很多人只看表面符号,忽略了它在更新式中的位置差异。

误区Lion 把梯度大小全丢了,只用正负号,训练精度肯定不如 AdamW。

正解丢弃幅度反而带来正则化和鲁棒性。Lion 在多个视觉与语言任务上泛化优于 AdamW,同时省去二阶矩缓存,内存更省。符号决策相当于给梯度做了“二值化过滤”,能抑制小噪声的干扰。

为何常见:直觉上“信息越多越好”,忽略了符号量对梯度噪声的天然抵抗力,也低估了内存节省在大模型训练中的价值。

误区Sophia 是二阶优化器,要存一个巨大的海森矩阵,根本不适合大模型。

正解Sophia 用的是对角 Hessian 近似,只对梯度平方做指数移动平均,额外内存仅一个向量,和 AdamW 的二阶矩开销同级。它还引入 clip 裁剪来抵御不精确估计,所以在 GPT-2 等模型上能稳定训练。

为何常见:一听到“二阶优化”就联想到 O(n²) 矩阵存储,忽略了对角线近似的技巧,这是把教科书里的牛顿法直接套到了新方法上。

误区L2 正则和权重衰减是同一个东西,在任何优化器里都等价。

正解对普通 SGD,两者几乎等价;但对 Adam 这类自适应优化器,二者不等价。L2 正则的惩罚梯度会被历史梯度缩放,权重衰减独立作用于参数,前者对大梯度参数惩罚更重,后者对所有参数一视同仁。AdamW 之所以有效,正是选择了后者的语义。

为何常见:经典 SGD 教程里二者公式相同,把旧知识直接迁移到新优化器上,是常见的“经验过期”陷阱。

面试题

Q1. AdamW 相对于 Adam 的核心改进是?

单选题 · easy

  • A.增加学习率预热策略
  • B.权重衰减与梯度解耦← 正确答案
  • C.优化符号函数方向
  • D.引入完整海森矩阵

答案:B。AdamW 的核心是把权重衰减从梯度更新中剥离出来独立作用,避免被自适应缩放干扰。学习率预热、符号函数、海森矩阵分别对应其他优化器的特征,不是 AdamW 的改进点。

Q2. Lion 优化器每一步更新只保留什么信息?

单选题 · easy

  • A.梯度数值的绝对大小
  • B.梯度统计的历史方差
  • C.梯度符号表示的方向← 正确答案
  • D.梯度二阶近似的曲率

答案:C。Lion 用符号函数 sign() 把动量合成结果压缩成 +1 或 -1,只保留方向,完全丢弃幅度。这与保留梯度大小、方差或曲率的方法有本质区别。

Q3. Sophia 优化器引入的额外信息是?

单选题 · easy

  • A.损失函数的曲率估计← 正确答案
  • B.动量的历史累积缓存
  • C.全局学习率直接拉满
  • D.梯度平方的指数均值

答案:A。Sophia 的核心是引入二阶信息——用对角 Hessian 近似曲率。动量缓存是 Adam 和 Lion 的共性;梯度平方的指数均值是二阶矩,不是曲率本身。

Q4. 在 AdamW 中,weight_decay=0.1 的含义是?

单选题 · mid

  • A.每轮把全部参数整体乘以0.1
  • B.每轮按百分之十速度降低学习率
  • C.梯度更新后额外按比例缩小参数← 正确答案
  • D.每轮将学习率直接除以十倍值

答案:C。AdamW 的权重衰减在更新后执行 w -= lr wd w,即参数按 (1 - lr*wd) 的比例缩小。它不是直接乘 0.1,也不是降低学习率,而是“更新之后额外减重”。

Q5. Lion 相比 AdamW 在内存上的优势主要来自?

单选题 · mid

  • A.不再需要保存数据集的任何批次
  • B.不需要存储二阶矩与参数副本← 正确答案
  • C.使用低精度混合精度来训练模型
  • D.对梯度通信进行量化和压缩

答案:B。Lion 只维护一阶动量缓存,不需要 AdamW 的 v(二阶矩),内存开销约省一半。它不改变数据加载、混合精度或通信方式,那些是独立的工程技巧。

Q6. 下列哪些优化器在更新中用到“动量”(历史梯度的EMA)?

多选题 · mid

  • A.AdamW 更新用到一阶动量EMA← 正确答案
  • B.Lion 使用符号动量方向缓存← 正确答案
  • C.Sophia 完全不使用任何历史信息
  • D.SGD 每一步只计算当前批次梯度

答案:AB。AdamW 的一阶矩与 Lion 的动量缓存都是历史梯度的指数移动平均。Sophia 实际也会用动量辅助更新,完全不用历史信息的说法不成立;SGD 若不配合 Momentum 则只用当前梯度,选项 D 描述的是朴素 SGD。

Q7. Sophia 的 clip 操作(裁剪)有什么作用?

多选题 · mid

  • A.防止曲率估计不准导致步长爆炸← 正确答案
  • B.限制每步有效更新的数值上限← 正确答案
  • C.将梯度符号强行取反方向
  • D.让参数更新在整数域中执行

答案:AB。Sophia 用 g/h 计算更新量,当曲率估计过小时该值会很大,裁剪把它限制在 [-ρ, ρ] 内,直接约束每步最大幅度。它不改变梯度符号,也不涉及整数化。

Q8. 在大规模预训练中,AdamW 相比 Adam 泛化更好的根本原因是?

单选题 · hard

  • A.学习率衰减速度被提升两倍
  • B.权重衰减不受到自适应缩放干扰← 正确答案
  • C.梯度裁剪幅度被设置得更大
  • D.动量缓存每轮训练全被清除

答案:B。Adam 的 L2 正则梯度会先被二阶矩缩放,导致惩罚强度漂移;AdamW 将衰减独立作用于参数,惩罚语义干净稳定,从而提升泛化。这与学习率衰减或梯度裁剪无关。

Q9. Lion 的更新式中,最终控制每步“跨多大步子”的因素是?

单选题 · hard

  • A.当前梯度幅值本身的大小
  • B.学习率与符号结果直接相乘← 正确答案
  • C.二阶矩开根号得到的方差
  • D.权重衰减系数的倒数关系

答案:B。Lion 的更新式是 θ -= η_t * sign(c_t),符号函数只给 ±1,实际步长完全由学习率 η_t 决定。梯度幅值、二阶矩、权重衰减都不是步长的控制因素。

Q10. 关于三种优化器的超参数设置,正确说法是?

多选题 · extreme

  • A.Lion学习率通常比AdamW小3到10倍← 正确答案
  • B.Sophia需要单独设置裁剪阈值rho← 正确答案
  • C.AdamW的权重衰减与学习率完全无关
  • D.三种优化器必须用相同的学习率调度

答案:AB。Lion 的符号更新没有自适应缩放,学习率通常取 AdamW 的 1/3 到 1/10;Sophia 的更新式里有 clip 裁剪,ρ 是需要单独调的超参数。AdamW 的权重衰减实际乘了学习率(lr*wd*w),并非完全无关;不同优化器适合的调度也可能不同。