如果你曾试玩过“基础”语言模型——即刚完成预训练的模型——你会知道它可能有点难以捉摸。它可能会胡言乱语,补全你的句子而不是回答你的问题,或者输出一些不安全的内容。要将这些原始的计算引擎转化为像 ChatGPT 或 Llama-Instruct 这样有用的助手,我们需要进行对齐 (alignment) 。
对齐是指微调模型以遵循指令并符合人类偏好的过程。虽然我们对此有大致的了解——通常是监督微调 (SFT) 和基于人类反馈的强化学习 (RLHF) 的混合——但大厂 (如 OpenAI 或 Meta) 使用的具体“秘方”往往是不开源的。
这种透明度的缺乏使得学生和研究人员很难知道真正重要的是什么。是数据集大小吗?是特定的算法?还是超参数?
在这篇文章中,我们将拆解哥伦比亚大学的一篇论文,题为 “LIONS: An Empirically Optimized Approach to Align Language Models” 。 研究人员对现代对齐流程进行了严格的审计。他们不仅仅是提出了一种新的复杂算法;他们进行了对照实验,以找到训练过程中每一步的最佳配置。
读完本文,你将了解构建最先进模型的三阶段流程,并看到研究人员如何利用这些发现,仅使用开源数据就构建出了超越官方行业基线的“LION”模型。
三阶段流程
在深入探讨优化细节之前,让我们先确立标准框架。研究人员专注于业界广泛使用的现代三阶段流程:
- 监督微调 (SFT) : 使用指令-响应对数据集教模型回答问题。
- 离线偏好学习: 使用“更好 vs 更差”的响应数据集,引导模型朝着人类喜欢的方向发展,通常通过直接偏好优化 (DPO) 实现。
- 在线偏好学习: 用模型生成新的响应,对其进行评判,并迭代更新模型。
研究人员分别分析了每个阶段,以找到最佳设置。让我们逐一来看。
第一阶段: 监督微调 (SFT)
第一步是教模型对话的格式。目标很简单: 最大化给定提示下正确响应的概率。

然而,实现细节至关重要。研究人员调查了三种技术选择:
- 填充 (Padding) : 用“空白”token 扩展短序列,使所有数据符合固定长度。
- 打包 (Packing) : 将多个短示例拼接成一个长序列,以有效填充上下文窗口 (常见于预训练中) 。
- 损失掩码 (Loss Masking) : 仅计算模型响应部分的误差 (损失) ,忽略用户的提示 token。 (你不希望模型学习如何写提示,你希望它学习如何回答) 。
发现
研究人员在 Gemma-2b 上测试了这些策略。结果非常明确:

核心结论: 打包 + 损失掩码的组合表现优异。
观察上表,你会发现仅仅添加“损失掩码”就能显著提高 Arena-Hard (聊天能力) 分数。但当你将其与大数据集 (1.6M 示例) 上的 打包 结合使用时,分数跃升至 8.8 , 几乎是基线的两倍。
为什么会这样?研究人员推测,标准的填充可能会导致模型过度拟合聊天模板的“形状”。打包迫使模型更稳健地关注实际内容,而损失掩码确保模型将其学习能力严格集中在生成答案上。
第二阶段: 离线偏好学习 (DPO)
一旦模型知道如何聊天 (通过 SFT) ,我们需要教它什么才是好的回答。这通常使用 直接偏好优化 (DPO) 来完成。
DPO 使用三元组数据集: 提示 (\(x\)) 、胜出的回答 (\(y_w\)) 和落败的回答 (\(y_l\)) 。目标是增加胜者的可能性并降低败者的可能性。

这是该论文提供最广泛见解的阶段。他们测试了四个关键变量: 序列长度、参考模型、“beta”超参数和数据集缩放。
1. 序列长度很重要
在 DPO 的标准实现中 (如 Hugging Face 对齐手册) ,通常使用 1024 的序列长度。研究人员发现,仅仅将其翻倍至 2048 就能带来显著的性能提升。复杂的推理和聊天记录需要空间;截断它们会阻碍对齐。
2. 选择参考模型
DPO 需要一个“参考模型” (通常是 SFT 模型) 来确保新模型不会偏离原始语言分布太远。研究人员测试了使用更强的模型或更新后的模型作为参考,但发现标准的 SFT 模型 作为参考效果完全没问题。在这里,复杂并不总是更好。

3. 调整 Beta (\(\beta\))
\(\beta\) 参数控制 KL 散度约束的强度——本质上是模型允许偏离参考模型的程度。
DPO 训练中一个常见的问题是: “如果我使用更多数据,最佳 Beta 值会改变吗?”

发现: 无论数据集大小如何,最佳 \(\beta\) (约 0.1) 保持一致。这对于从业者来说是个好消息,因为你可以在一小部分数据上调整超参数 (节省计算资源) ,然后自信地将其应用于大规模的完整训练运行中。
4. DPO 的缩放定律 (Scaling Laws)
也许这篇论文中最有趣的发现是数据规模与训练步数之间的关系。在预训练中,我们要知道“数据越多 = 越好”。研究人员发现同样的规律也适用于对齐。

请看上面的图 1。
- 小数据 (蓝线) : 性能很早就达到峰值,然后下降 (过拟合/过度优化) 。
- 大数据 (绿线) : 性能持续攀升的时间更长,并达到更高的峰值。
这表明 DPO 遵循缩放定律。 你不能简单地在小数据集上训练更长时间来获得更好的结果;你只会过拟合。要获得更好的模型,你需要更大的偏好数据集。
5. 质量 vs. 数量 (数据过滤)
最近的研究有一种趋势认为“少即是多”——即一个小而精的数据集比一个大而杂的数据集更好。研究人员通过将随机采样与复杂的过滤算法 (如 DEITA、Alpagasus 和 Argilla) 进行比较来验证这一点。

结论: 虽然当你受限于小数据预算 (10k 样本) 时,过滤会有所帮助,但简单地使用更多数据 (100k 随机样本) 击败了所有花哨的过滤方法。
这挑战了“小而精”的说法。在离线偏好学习中,多样性和数量似乎胜过严格的质量过滤。
优化技巧: 高效 DPO
为了使在这些大数据集上的训练变得可行,研究人员引入了一项技术优化。标准 DPO 需要填充 token 来对数据进行批处理,这浪费了计算资源。他们实现了一个版本,去除了填充并拼接序列,利用 FlashAttention 来处理边界。

仅此一招就将训练速度提高了近 27% 。
第三阶段: 在线偏好学习
最后阶段是 在线 DPO 。 在离线 DPO 中,我们使用静态数据集。在在线 DPO 中,模型充当聊天机器人,对提示生成新的响应,外部评判者 (如奖励模型) 对其进行排名。然后模型从其自身生成的数据中学习。
这一计算成本高昂的步骤值得吗?

表 5 中的结果表明,在线 DPO (ODPO) 显著提高了 聊天基准 (Arena Hard Auto) 的性能,尽管它对核心知识任务 (OpenLLM) 并没有太大改变。
这是有道理的: 在线 DPO 帮助模型利用自身的输出完善其风格和指令遵循能力,但它并不教模型新事实 (因为它是在自己生成数据) 。
融会贯通: LION 系列
有了这些实证见解,研究人员为 LION 模型制定了一个“配方”:
- SFT: 打包 + 损失掩码。
- 离线 DPO: 大数据集 (混合 UltraFeedback, HelpSteer 等) ,序列长度 2048,调整过的 Beta。
- 在线 DPO: 一次生成和响应排名的迭代。
他们将此配方应用于两个基础模型: Gemma-2b 和 LLaMA-3-8b 。
结果
对比结果令人震惊。他们将 LION 模型与 Google (Gemma-it) 和 Meta (LLaMA-3-it) 发布的官方指令版本进行了比较,后者是利用大量内部资源和专有数据训练的。

主要成就:
- Gemma-2b-LION 优于官方的 Gemma-2b-it,甚至在关键基准测试中击败了像 LLaMA-2-7b-chat 这样更大的模型。
- LLaMA-3-8b-LION-ODPO 获得了 22.0 的 Arena-Hard 胜率,击败了官方的 LLaMA-3-8b-instruct (20.6)。
这证明了经过优化的流程,仅使用开源数据即可匹敌或超越主要科技公司的专有流程。
“对齐良好”的模型是什么样的?
为了可视化为什么他们的模型效果更好,作者分析了“概率边际”。这是模型对获胜响应和落败响应的置信度之差 (\(\pi_\theta(y_w) - \pi_\theta(y_l)\)) 。

- 欠训练 (左) : 模型几乎无法区分胜者和败者;分布集中在零附近。
- 过训练 (右) : 模型极其自信,将边际推向边缘,很可能过拟合了。
- 表现最佳 (中) : 它形成了一个 抛物线形状 。 模型在它已经知道的配对上提高了置信度 (抛物线右侧) ,但也学会了区分它以前弄错的配对 (左侧) 。这种平衡是健康对齐过程的标志。
结论与启示
“LIONS”论文对开源社区来说如沐春风。它摆脱了 LLM 训练的“黑盒”炼金术,并提供了一个清晰的、基于证据的配方。
成功配方:
- 不要忽视 SFT 细节: 序列打包和损失掩码是没得商量的。
- 扩展你的偏好数据: 对于 DPO,数量和多样性 (100k+ 样本) 通常优于重度过滤。
- 上线: 如果你想要顶级的聊天性能,必须执行在线偏好学习。
- 优化: 简单的超参数调整 (如 \(\beta\)) 可以在不同规模间良好转换。
通过遵循这些步骤,研究人员证明了开源与闭源对齐之间的差距比我们想象的要小——事实上,通过正确的优化,开源可能正在获胜。
对于学生和从业者来说,这篇论文是一本至关重要的手册: 在发明一种新的复杂算法之前,请确保你已经优化了基础工作。
](https://deep-paper.org/en/paper/2407.06542/images/cover.png)