更会做一件事,不代表其他方面没变
一个模型微调(fine-tuning)后更会遵守格式,却更容易拒绝本来无害的问题;也可能代码成功率提高了,其他任务基本没变。两者都得实际测,不能先假设对齐一定让模型“变笨”或一定没有代价。对齐训练带来的这类能力退化,常被叫作对齐税(alignment tax)。
Alignment tax 通常指为了改善某些目标而出现的性能退化。多样性(diversity)下降是可能的一项,不是这个词的全部定义。
这一篇先看有哪些变化,再把最容易误读的“熵下降”算清楚。如果你在排查一次训练,可以直接看固定什么、比较什么。
除了总分,还可以看这些变化
输出多样性下降。 同一个提示采样多次,回答可能更相似。需要区分措辞相似、语义相似和有效解法减少,不能只数不同的字。
熵下降。 策略可能越来越集中。对于正 advantage 的低概率动作,固定 ratio 上界对应的绝对概率增量很小,这可能限制它从单个样本获得的激励;但 clipping 不是实际概率的硬约束,也不是熵下降的唯一原因。PPO、GRPO 与 DPO和 Clipping 与梯度会继续讨论不同裁剪方式。
回答变得套路化。 如果标注反复偏爱某种措辞或格式,模型可能更常使用它。需要检查这是否挤掉了更直接、有用的回答,而不是仅凭风格变化判断退化。
过度拒绝。 如果数据和奖励(reward)没有分清危险请求与表面相似的无害请求,模型可能一起拒绝。把这类无害问题单独测试,比把所有拒答都算好或都算坏更有用。
熵下降,先别急着叫它“坍塌”
一道题只有 A、B 两种答案,模型原来各给 0.5,后来给 A 0.9、B 0.1。它确实更确定了,但这是不是坏事,还得知道 A 是什么。如果 A 正确,这是学会了;如果 A 只是评分器喜欢的错误答案,才需要担心。
固定上下文 h,下一 token 的熵是:
$$ \begin{aligned} H(\pi\mid h) &=-\sum_v p_v\log p_v,\\ p_v&=\pi(v\mid h). \end{aligned} $$
这里对整个词表(vocabulary)求和,log 用自然对数,单位是 nat。两种等概率选择的熵是 $\log2\approx0.693$;变成 $(0.9,0.1)$ 后约为 0.325。熵告诉你分布有多集中,不告诉你集中了什么。
训练里说“熵坍塌”,通常不只是在说这个数变小,而是在担心有用的探索过早消失,继续采样也很难找到新的有效解法。需要把熵曲线、独立质量和多次尝试的覆盖一起看。
| 日志里的数 | 实际在量什么 | 容易误读的地方 |
|---|---|---|
| 完整词表熵 | 固定前缀下,下一 token 的分布 | 不等于整条推理的语义多样性 |
| 采样 token 的负 log probability | 这一条样本的 surprisal | 单个样本不是熵;在匹配的分布下取期望才是 |
| 平均 token 熵 | 一批前缀上局部分布的平均 | 要说明按 token 还是按回答平均,以及 mask |
| 不同答案 / 解法的数量 | 当前预算下观察到的结果变化 | 换措辞不一定换解法;错误答案也能很多样 |
例如 $(0.9,0.1)$ 下,采到 A 的 surprisal 约 0.105,采到 B 约 2.303,两者都不是 0.325。若从经过 top-p 截断的分布 q 采样,却记录原模型 p 的负 log probability,平均值是两者的交叉熵(cross-entropy),不是 p 自身的熵。
还有一个很容易漏掉的细节:2-token 回答平均熵为 1,8-token 回答平均熵为 0.1。按回答等权平均得到 0.55,按 token 平均只有 0.28。模型变得更爱写长答案时,这两条曲线可能给出不同印象。Padding 不算,有效的 EOS 是否计入也要固定。
低熵不等于 reward hacking
下面是 4 个刻意简化的策略。每个只在两种输出之间选择,输出本身是否完成任务已知,不是靠训练评分器猜的:
| 输出选择 | 概率 | 熵(nat) | 真正完成任务的概率 |
|---|---|---|---|
| 正确 A / 正确 B | 0.9 / 0.1 | 0.325 | 1 |
| 正确 A / 正确 B | 0.5 / 0.5 | 0.693 | 1 |
| 漏洞 A / 漏洞 B | 0.9 / 0.1 | 0.325 | 0 |
| 漏洞 A / 漏洞 B | 0.5 / 0.5 | 0.693 | 0 |
假设有缺陷的评分器给这 4 种输出都打满分,训练奖励就区分不了这 4 行。高熵策略也能换着花样利用漏洞;低熵策略也可以稳定答对。因此,提高熵不是修复错误奖励的替代品。验证器怎么检查,见可验证奖励。
什么情况下会偏向少数答案?
先看一个刻意简化的目标:同一个问题只允许回答 A 或 B,固定奖励分别是 1 和 0.8。若没有其他约束,期望奖励是 $p\times1+(1-p)\times0.8$,提高 A 的概率总能提高这个数。
这说明不带正则的期望奖励最大化,可能偏向少数高奖励答案;并不能说明实际 RLHF 必然坍缩。加入 KL 或熵项后,目标已经变了。例如在有限答案集合、固定 reward、$\beta>0$ 且 Reference 支持相应答案的条件下:
$$\max_\pi\ \mathbb E_\pi[r]-\beta D_{\mathrm{KL}}(\pi\|\pi_{\rm ref})$$
对应最优分布为:
$$\pi^*(y)\propto\pi_{\rm ref}(y)e^{r(y)/\beta}.$$
结果依赖奖励差、Reference 和 $\beta$,未必是单点分布。SFT 也可能因为数据单一而丢失多样性。所以最终要比较训练数据、目标和解码设置,而不是仅凭算法名字下结论。
再算一步:同样提高正确答案概率,熵也可能先升后降
设正确答案 A 的概率为 $p=\sigma(\theta)$,奖励为 1,B 的奖励为 0。期望奖励 J=p,因此梯度上升时 $d\theta/dt=p(1-p)$。二元熵的导数是:
$$\frac{dH}{dp}=\log\frac{1-p}{p}.$$
所以小步更新时:
$$ \begin{gathered} \frac{dH}{dt} =\frac{dH}{dp}\frac{dp}{d\theta}\frac{d\theta}{dt}\\ =[p(1-p)]^2\log\frac{1-p}{p}. \end{gathered} $$
p=0.2 时,提高正确答案概率会让分布靠近均匀,熵上升;p=0.8 时,同样的学习方向让分布更集中,熵下降。两种情况的正确率都在提高。这是一个独立二元参数的教学推导,不能直接套成共享参数 LLM 的完整训练定律。
论文里的熵曲线,能推广到哪里?
The Entropy Mechanism of RL(2025,v1)§2–4研究了数学、代码任务中的早期熵下降和性能平台,并提出 Clip-Cov / KL-Cov。论文也明确讨论了不同模型、数据条件下可能出现不同曲线;不能把实验中的步数或拟合关系当作所有训练的定律。
KL-Cov 在该版本的式 (14) 中约束的是 rollout old policy 与当前 policy,不是固定 SFT Reference;也不是把选中 token 的 log-prob 差取绝对值就等于 KL。实现前要核对分布、方向、采样和有效位置,不能只照着名称拼 loss。KL 估计笔记继续讲这部分。
固定什么、比较什么?
先留一组固定题目和前缀,比较不同 checkpoint 在相同前缀下的完整词表熵;再让它们各自生成,比较实际质量和探索。前者尽量隔离分布本身的变化,后者包含模型走向不同上下文的影响。两者不能混成一条曲线后解释。
| 观察到的现象 | 先做的对照 | 可能的下一步 |
|---|---|---|
| 熵下降,成功率提高 | 固定预算下,多种有效解法是否仍能找到 | 不必为了熵低而改算法 |
| 熵和有效解法覆盖一起下降 | 固定题目、采样配置、长度;按难度切片(slice) | 查重复数据、过强更新、采样和截断 |
| 训练奖励升,独立质量降 | 用未参与筛选的检查重新评估样本 | 修奖励或数据;单加 entropy bonus 不够 |
| 只有生成日志里的熵变了 | 在同一组前缀重算,核对 temperature / top-p / mask | 排除统计口径和采样变化 |
| 某个干预使熵升高 | 检查等预算成功率、成本和失败类型 | 熵升高本身不是干预成功 |
小规模消融(ablation)可以分别调整学习率 / 每批更新次数、数据配比、KL 或 entropy 系数、clipping 上界。一次改一个因素,记下验证质量和生成成本。更高 temperature 只改变采样,不等于修好了参数;更强 KL 可能保住旧行为,也可能妨碍学新行为;entropy bonus 也可能鼓励无用随机性。采用哪个,得由任务结果决定。
教学脚本复算本页的熵、两种平均和二元更新。没有跑真实 LLM 训练,也不把这些数当作 DAPO 或 KL-Cov 的复现结果。
发现退化后,先找它来自哪里
有的实验观察到任务泛化改善,同时输出多样性下降;这不等于每次训练都必须拿后者换前者。InstructGPT也展示了通过修改训练过程减轻部分基准退化的做法。
对自己的任务,更有用的问题是:这项退化是否稳定出现?影响谁?换数据配比、正则强度或解码方法后,还存在吗?这些对照可以帮助区分暂时的实现问题和更难避免的目标冲突。
一次答对,和多试几次能答对
同一题独立采样,单次成功概率是 $p$ 时,至少一次成功的概率是 $1-(1-p)^k$。固定这道题和采样分布(sampling distribution),$p$ 提高,这个数也会提高。
所以,如果数据集平均 pass@1 上升、平均 pass@k 却下降,不能直接断言“分布塌成了一个点”。模型可能把收益集中在容易题上,也可能改变了难题覆盖;实际估计还受采样方式和样本量影响。RL 到底只是在“锐化”已有解法,还是学到了新解法,这场 pass@k 之争的证据和反方见前沿草稿测试时计算:怎么比较、怎么读数字。
| 想知道什么 | 怎么检查 |
|---|---|
| 哪些任务改善或退化 | 相同题目与预算下做配对比较,按难度和类型切片 |
| 多次尝试是否还有帮助 | 同时看 pass@1、pass@k 和每题成功率分布 |
| 回答是否只是换了措辞 | 区分词汇变化、语义变化与真正不同的有效解法 |
| 是否过度拒绝 | 单独测明确无害的问题,人工复核拒绝原因 |
| 表现差异是否由采样造成 | 固定 temperature、长度限制和候选(candidate)预算,再做敏感性分析 |
这些指标各自回答一个问题。需要多个尝试的应用,尤其要把有效解法的覆盖和每次尝试的成本一起看。
一个实践上的建议
在训练开始之前,先在这一步的起点模型(基座或上一阶段的 checkpoint)上把上面这些量测一遍,存成一条基线(baseline)。
评估退化需要一个有意义的对照,通常是这一步训练之前的 checkpoint,也可以是受控的消融版本。提前保留它和评估配置,比发现输出千篇一律后再设法重建基线省事得多。
这与冻结评估配置是同一件事:先保留稳定的测量基线,才谈得上改进。
评估对齐效果时检查什么
- 我报的是 pass@1 还是 pass@k?每道题的变化是否被平均值藏住了?
- 我有基座模型的多样性基线吗?还是只有对齐后的数字?
- 熵按什么分布、前缀和分母计算?它下降时,实际质量也变差了吗?
- 回答是否变长?多出来的 token 带来了有效推理,还是重复表达?
- 我有没有一个"明确无害"的对照集专门测过度拒绝?
- 我的 KL 系数是根据什么定的——是量出来的,还是抄来的?
继续阅读
- PPO、GRPO 与 DPO:裁剪、组内奖励和梯度怎样影响更新
- 偏好从哪来:偏置从哪一步进来的
- 同一个基座能走多远:一次「没有提到退化」不等于「没有退化」的实例
- Evaluation:把任务改善与能力回退分别测出来
快速学习:Alignment Tax 不是一个总分
复习时,先把“更确定”与“更正确”分开
先记住:熵描述分布,不评价答案。要判断退化,得有对照、有独立质量检查,也要看哪些任务受影响。
面试回答
我会在固定预算下比较训练前后版本,分别看成功率、有效解法覆盖和无害请求的拒答率。熵下降只是诊断线索;只有与实际损失一起出现,才有理由把它当成需要解决的问题。
是能力丢了,还是默认不这么回答了?
可以在受控的 system prompt 和解码设置下比较。如果换一种提示就恢复了表现,不能马上称为遗忘;多种设置都失败,才更值得排查参数干扰和数据覆盖。几次尝试都没恢复,也不能严格证明能力已经不存在。
参考论文
- A General Language Assistant as a Laboratory for Alignment — alignment tax 这个说法的出处之一
- Understanding the Effects of RLHF on LLM Generalisation and Diversity — 泛化变好、多样性变差的系统性对比
- Learning to summarize from human feedback — KL 惩罚与过度优化的早期实证
本页术语 10
- 微调 fine-tuning
- 在预训练权重上继续训练以适配具体任务
- 多样性 diversity
- 结果之间在主题、来源或其他指定维度上有多大差异
- 奖励 reward
- RL 里指导策略更新的标量信号
- 词表 vocabulary
- 模型能输出的所有 token 的集合
- 交叉熵 cross-entropy
- 分类任务的标准损失,−log 正确类的概率
- 切片 slice
- 按内容或用户属性划分的子群体,用来检查平均值掩盖了什么
- 消融 ablation
- 去掉一个组件再测一次,用来判断它到底有没有贡献
- 采样分布 sampling distribution
- 训练候选被抽中的概率分布,它决定模型经常看到哪类边界
- 候选 candidate
- 召回阶段捞出来、等待精排挑选的内容
- 基线 baseline
- 用来比较新方法的参考方法或配置