大模型对齐 Alignment
https://zhuanlan.zhihu.com/p/1996231738238731198
一、大模型对齐的核心概念
大模型对齐(Alignment) 的目标是让模型的输出与人类的价值观、偏好和指令保持一致(即“有用、无害、诚实”),解决模型“能力强但不听话”的问题。
对齐 vs 微调:核心区别
| 维度 | 微调(Fine-tuning) | 对齐(Alignment) |
|---|---|---|
| 目标 | 提升模型在特定任务上的能力(如问答、翻译) | 让模型输出符合人类价值观/偏好(如避免有害内容、更有用) |
| 数据类型 | “指令-正确输出”的标注对 | “人类偏好标注”(如“A 比 B 更好”“y1>y2>y3”的排序) |
| 方法 | 监督学习(直接拟合标注数据) | 强化学习(PPO)、偏好优化(DPO/GRPO)等 |
二、主流对齐算法原理与计算过程
1. PPO(Proximal Policy Optimization,近端策略优化)
经典的强化学习对齐方案,通过“奖励模型”引导模型生成人类偏好的输出,同时用“近端约束”避免策略更新过大导致崩溃。
计算过程(三阶段):
-
监督微调(SFT):
用标注的“指令-输出”数据训练初始模型,让模型具备基本的指令遵循能力。 -
训练奖励模型(RM):
-
收集人类偏好数据:对同一 prompt,让模型生成多个输出(如 A、B),由人类标注“哪个更好”(如 A>B)。
-
训练 RM:输入 prompt+ 输出,输出“人类偏好得分”(数值越高越符合偏好)。
-
-
PPO 强化学习训练:
-
策略网络(当前模型)生成输出;
-
奖励计算:RM 给输出打分,同时加入“KL 散度惩罚”(约束当前模型与 SFT 模型的差异,避免策略漂移);
-
优势函数:(基线通常是价值网络的预测,用于降低方差);
-
优化目标(PPO 核心损失函数):
其中 是新旧策略的概率比, 约束 在 内(防止更新过大)。
-
优缺点:
-
✅ 效果经典(早期 GPT-3、ChatGPT 用类似方案);
-
❌ 训练复杂(三阶段)、不稳定(易策略崩溃)、计算成本高。
2. DPO(Direct Preference Optimization,直接偏好优化)
无强化学习的轻量级方案,直接用人类偏好数据优化模型,无需奖励模型,训练更稳定、计算更简单。
核心思路:
将偏好学习转化为“对比分类”问题:对于偏好对(=prompt,=人类偏好的输出,=不偏好的输出),让模型给 的概率比 高,通过最大似然优化。
计算过程:
-
偏好数据:(如“prompt:写首诗;:人类喜欢的诗;:人类不喜欢的诗”)。
-
损失函数:
其中:
-
:当前模型;:参考模型(通常是 SFT 模型,约束模型不偏离初始能力);
-
:温度系数(控制对参考模型的约束强度);
-
:sigmoid 函数(将“ 相对 的优势”转化为概率)。
-
-
直观理解:让模型对 的“相对概率(相对于参考模型)”比 高,最大化这个概率的对数似然。
优缺点:
-
✅ 训练简单(单阶段)、稳定、计算成本低;
-
✅ 效果接近甚至超过 PPO(现在主流方案,如 Zephyr、Llama 3 对齐用 DPO);
-
❌ 仅支持“两两偏好”数据,对复杂排序场景利用不充分。
3. GRPO(Group Relative Preference Optimization,组相对偏好优化)
DPO 的扩展方案,针对“组偏好”场景(一个 prompt 对应多个输出,人类给它们排序,如 核心思路:
对“一组输出的排序”建模,而不是仅处理两两偏好,利用组内所有相对关系优化。 组偏好数据:,其中 是组内排名( 最好, 最差)。 损失函数:对组内每对 (若 ,即 比 好),计算类似 DPO 的损失,然后对所有组内对平均: 其中 是组内两两组合的数量。 ✅ 充分利用“组排序”信息,适合复杂偏好场景; ✅ 效果比 DPO 在多输出排序任务上更好; ❌ 数据标注成本更高(需要给多个输出排序)。 对齐 ≠ 微调:对齐的核心是让模型符合人类价值观,而非仅提升任务能力; DPO 是目前主流:简单、稳定、效果好,优先选择; GRPO 适合复杂排序:如果有多个输出的组排序数据,用 GRPO 更充分; PPO 是经典但复杂:现在逐渐被 DPO/GRPO 替代,仅在需要强化学习精细控制的场景使用。 计算过程:
优缺点:
三、PPO vs DPO vs GRPO 对比总结
特性
PPO
DPO
GRPO
方法类型
强化学习(RL)
直接偏好优化(无 RL)
组相对偏好优化(扩展 DPO)
核心组件
SFT 模型 + 奖励模型 + PPO
SFT 模型 + 两两偏好数据
SFT 模型 + 组排序数据
训练复杂度
高(三阶段,不稳定)
低(单阶段,稳定)
中(单阶段,处理组数据)
偏好数据
两两偏好(A 比 B 好)
两两偏好
组排序(计算成本
高
低
中
稳定性
低(易策略崩溃)
高
高
主流场景
早期对齐方案(如 GPT-3)
现在主流(如 Zephyr、Llama 3)
复杂偏好排序场景
四、总结
window.siyuan = {
config: {
appearance: { mode: 0, codeBlockThemeDark: "base16/dracula", codeBlockThemeLight: "github" },
editor: {
codeLineWrap: true,
fontSize: 16,
codeLigatures: false,
plantUMLServePath: "https://www.plantuml.com/plantuml/svg/~1",
codeSyntaxHighlightLineNum: false,
katexMacros: decodeURI(`%7B%7D`),
}
},
languages: {copy:"复制"}
};
const previewElement = document.getElementById('preview');
Protyle.highlightRender(previewElement, "stage/protyle");
Protyle.mathRender(previewElement, "stage/protyle", false);
Protyle.mermaidRender(previewElement, "stage/protyle");
Protyle.flowchartRender(previewElement, "stage/protyle");
Protyle.graphvizRender(previewElement, "stage/protyle");
Protyle.chartRender(previewElement, "stage/protyle");
Protyle.mindmapRender(previewElement, "stage/protyle");
Protyle.abcRender(previewElement, "stage/protyle");
Protyle.htmlRender(previewElement);
Protyle.plantumlRender(previewElement, "stage/protyle");
document.querySelectorAll(".protyle-action__copy").forEach((item) => {
item.addEventListener("click", (event) => {
navigator.clipboard.writeText(item.parentElement.nextElementSibling.textContent.trimEnd().replace(/ /g, " ").replace(/```/g, "```"));
event.preventDefault();
event.stopPropagation();
})
});