跳转至

Better Embeddings with Coupled Adam

会议: ACL 2025
arXiv: 2502.08441
代码: 无
领域: LLM效率 / 优化器
关键词: 词嵌入各向异性, Adam优化器, Coupled Adam, 表示退化, LLM训练

一句话总结

从理论上证明 Adam 优化器的逐 token 二阶矩是导致 LLM 词嵌入各向异性(均值偏移)的根因,提出 Coupled Adam——对嵌入层的二阶矩取词汇平均——消除了各向异性问题,并在大规模实验中提升了嵌入质量和下游性能。

研究背景与动机

  1. 领域现状:LLM 训练出的词嵌入表现出各向异性——所有嵌入聚集在远离原点的小型子空间中,限制了语义表达力。这是一个被广泛观察但根因不明的现象。
  2. 现有痛点:Biś et al. (2021) 发现各向异性主要由嵌入均值偏移导致,但将原因归于"common enemy effect"(非目标 token 的梯度都指向 \(-h\) 方向),这个解释不够精确——它忽略了梯度被预测概率缩放的因素。
  3. 核心矛盾:如果嵌入梯度之和恒为零(论文证明了这一点),那为什么均值还会偏移?到底是梯度本身还是优化算法的问题?
  4. 本文要解决什么? 找到嵌入各向异性的真正根因,并提供一个简单有效的修复方案。
  5. 切入角度:数学分析嵌入更新向量在 SGD 和 Adam 下的求和性质——SGD 下更新之和恒为零(均值不变),Adam 下由于逐 token 的二阶矩不同导致更新之和非零。
  6. 核心 idea 一句话:Adam 的二阶矩为每个 token 引入了不同的有效学习率,破坏了梯度求和恒零的性质,导致均值偏移;将二阶矩在词汇维度取平均(Coupled Adam)即可修复。

方法详解

整体框架

  • 理论分析:证明 SGD 下嵌入均值不变 vs Adam 下嵌入均值会偏移
  • 方法提出:Coupled Adam——仅对嵌入层修改,将二阶矩 \(\hat{v}_i\) 替换为词汇级平均 \(\hat{\nu} = \frac{1}{V}\sum_i \hat{v}_i\)
  • 实验验证:小规模(125M-760M)+ 大规模(1.3B-2.6B)

关键设计

  1. 理论推导——梯度之和恒零:
  2. 做什么:证明对于标准语言模型头,所有嵌入梯度之和恒为零 \(\sum_i g_i = 0\)
  3. 核心思路:由 softmax 概率之和 \(\sum_i p_i = 1\) 直接推出。这意味着如果优化器的更新向量与梯度成正比,均值不会变化
  4. 设计动机:建立了理论基础——问题不在梯度,而在优化器如何处理梯度

  5. SGD vs Adam 的关键差异:

  6. SGD 更新:\(u_i = -\eta \cdot g_i\),更新之和 \(= -\eta \sum g_i = 0\) → 均值不变
  7. Adam 更新:\(u_i = -\eta_i \cdot \hat{m}_i\),其中 \(\eta_i = \eta / (\sqrt{\hat{v}_i} + \epsilon)\) 是 token 依赖的有效学习率。由于 \(\eta_i\) 对不同 token 不同,加权求和 \(\sum \eta_i \hat{m}_i \neq 0\) → 均值偏移
  8. 关键发现:\(\mathbb{E}[\hat{v}_i] \propto \tilde{p}_i\)(二阶矩期望正比于 unigram 概率),实验验证 \(R^2=0.85\)

  9. Coupled Adam(核心创新):

  10. 做什么:仅对嵌入参数,将 Adam 的二阶矩替换为词汇级平均
  11. 核心思路:\(\hat{\nu}^{(\tau)} = \frac{1}{V}\sum_{i=1}^V \hat{v}_i^{(\tau)}\),然后 \(\hat{v}_i^{(\tau)} \leftarrow \hat{\nu}^{(\tau)}\) 对所有 \(i\)
  12. 效果:有效学习率变为 token 无关的,更新之和恢复为零,均值保持不变
  13. 实现:仅需 2 行代码修改,对非嵌入参数不做任何改变

实验关键数据

小规模实验(OpenWebText, GPT-2 架构, 3 seeds)

数据/模型 方法 Test Loss Iso↑ \(\|\mu\|^r\) 词相似 \(\bar{r}\)
20B/125M Standard 3.03 0.10 0.82 5
20B/125M Coupled 2.97 0.83 0.03 57
20B/355M Standard 2.79 0.25 0.82 5
20B/355M Coupled 2.75 0.95 0.02 57
20B/760M Standard 2.68 0.28 0.73 3
20B/760M Coupled 2.65 0.94 0.01 58

大规模实验(SlimPajama, LLaMA-like, 1.3B-2.6B)

模型/数据 方法 Loss↓ Acc↑ Iso↑
1.3B/26B Standard 2.46 0.397 0.22
1.3B/26B Coupled 2.44 0.399 0.94
2.6B/210B Standard 2.17 0.425 0.22
2.6B/210B Coupled 2.16 0.428 0.97

关键发现

  • Coupled Adam 将各向同性从 0.1-0.28 提升到 0.83-0.97,均值偏移比从 0.63-0.82 降到 0.01-0.03——几乎完美修复
  • 词语义相似度评测(SimLex999 等)从个位数提升到 55-58——嵌入质量质的飞跃
  • 在足够大的数据集上(20B+),Coupled Adam 同时改善了 perplexity 和下游准确率
  • 在小数据集上效果中性或略差——说明各向同性带来的收益需要足够训练量才能体现
  • 2.6B 模型 210B tokens 仍持续受益,说明方法在大规模场景下有效

亮点与洞察

  • 优雅的理论分析:从 softmax 概率归一化出发,推导出梯度之和为零,然后证明 Adam 打破了这个性质——整条推理链清晰完整
  • 极简的修复方案:仅需把嵌入的二阶矩取平均,2 行代码,零额外计算开销——实用性极强
  • 揭示了 Adam 的结构缺陷:Adam 对稀疏参数(嵌入)的自适应学习率在这个场景下是有害的——这一发现对优化器设计有启发意义
  • 二阶矩 ~ unigram 概率:高频词的二阶矩更大 → 有效学习率更小 → 更新更小,低频词反之。Coupled Adam 统一了这一不对称性

局限性 / 可改进方向

  • 仅分析了语言建模头的梯度,忽略了从模型内部(非输出层)到嵌入的梯度贡献
  • Weight tying 假设下的结论,未讨论不使用 weight tying 的场景
  • 小数据量下효果中性或略差,需要足够训练量才能获益
  • 未测试在非自回归模型(如 BERT)上的效果
  • 可以考虑将 Coupled Adam 扩展到其他稀疏参数(如 MoE 的路由参数)

相关工作与启发

  • vs Biś et al. (2021):他们认为 "common enemy effect" 是各向异性根因,本文纠正了这一观点——真正原因是 Adam 的逐 token 二阶矩
  • vs 后处理方法(均值移除等):后处理在推理时修复,Coupled Adam 在训练时修复——从根源解决问题
  • vs AdamW:weight decay 可以部分缓解各向异性,但 Coupled Adam 从优化器内部直接解决,更彻底
  • 对优化器设计的启发:对于有特殊结构的参数(如共享嵌入矩阵),通用优化器可能不是最优的

评分

  • 新颖性: ⭐⭐⭐⭐⭐ 理论分析精确识别了各向异性的优化器根因,修复方案优雅极简
  • 实验充分度: ⭐⭐⭐⭐ 小规模到大规模(2.6B/210B)完整覆盖,有多种嵌入质量指标
  • 写作质量: ⭐⭐⭐⭐⭐ 理论推导严谨,实验呈现清晰,论证逻辑完整
  • 价值: ⭐⭐⭐⭐⭐ 对 LLM 训练实践有直接影响——2 行代码改善嵌入质量,贡献突出