本页目录
LLM 中的信息论
把前五章的工具对准 LLM:困惑度是交叉熵的人类可读包装,预训练使用交叉熵损失,RLHF/DPO 用 KL 约束策略漂移,采样温度调节输出分布的熵。压缩视角也能帮助理解语言建模与 scaling law,但信息量、能力、事实性和有用性不是一回事。
引子:同一套工具,换个场子
前五章的量——熵、KL、交叉熵、熵率、互信息——听起来像通信和压缩的老古董。这一章要做一件事:把它们一件件对准现代 LLM,你会发现每一个都在里面占着一个关键位置。
预训练的损失、评测用的困惑度、对齐时的约束、推理时的温度旋钮,都能用前五章的量解释。信息论提供了一套很强的公共语言,但不是对模型能力和行为的完整理论。下面逐个看哪些是严格等价,哪些只是有启发性的解释视角。
交叉熵损失:预训练目标本身
LLM 预训练在做什么?一句话:交叉熵 最小化。
每一步,模型给出下一个 token 在整个词表上的预测分布 q。训练样本把这一次观测到的 token 写成 one-hot 目标 p(真值 token 概率为 1,其余为 0)。这一步的损失就是交叉熵:
H(p,q) = -\sum_x p(x) \log q(x) = -\log q(\text{真实 token})
因为 p 是 one-hot,求和塌缩成单项——损失就是"模型分给真实 token 的那个概率的负对数"。整个序列的损失,是逐 token 交叉熵的平均。
在总体数据分布上,最小化期望交叉熵等价于最小化 D_{KL}(p_\text{data}\parallel q);在有限训练集上,逐样本 NLL 的最小化就是最大似然估计。模型给出的概率若再配合算术编码 / ANS,还能转成接近 NLL 的无损压缩码长。因此"训练语言模型"和"学习一个好的概率压缩模型"在目标函数上紧密相连,但真正的压缩系统还需要熵编码器,并要考虑模型权重成本。至于词表怎么切、one-hot 建立在什么单位上,取决于分词,见 Token 与采样。
困惑度:交叉熵的人类可读包装
交叉熵的单位是 bit(或 nat),数值小、不直观。看到"损失 2.1"很难有画面感。
困惑度(perplexity, PPL) 把它指数化,变成一个有画面感的量——"平均有几个等概率的选项在纠结":
\text{PPL}=2^{H_2(p,q)}\quad\text{或}\quad \text{PPL}=e^{H_e(p,q)}
这里 H_2 使用 \log_2,单位是 bit;H_e 使用自然对数,单位是 nat。两种写法数值口径不同,不能把 \exp(H) 和 2^H 在同一个 H 上直接画等号。
怎么读?如果模型在每个位置平均"在 N 个等可能 token 之间摇摆",困惑度就是 N。完美预测(每次都确定真值)PPL =1;在词表大小 V 上瞎猜,PPL =V。
它和交叉熵是一一对应的单调映射,所以降低交叉熵损失和降低困惑度是同一件事,PPL 只是给人看的刻度。这也解释了为什么 PPL 是语言模型最经典的内在评测指标:它就是模型压缩数据能力(熵率估计)的读数。
KL 散度在 RLHF / DPO 中的角色
预训练之后是对齐阶段。这时 KL 散度 换了个身份——从"损失"变成"缰绳"。
RLHF 的 PPO 目标,在最大化奖励模型给的回报之外,加了一个 KL 惩罚项:
\text{目标} = \mathbb E[\text{reward}(x,y)] - \beta \cdot D_{KL}(\pi_\theta(\cdot \mid x) \parallel \pi_\text{ref}(\cdot \mid x))
这里 \pi_\theta 是正在训练的策略,\pi_\text{ref} 是冻结的参考模型(通常是 SFT 后的初始模型)。这个 KL 项惩罚策略偏离参考太远,防的是什么?防模型为了刷高奖励而钻奖励模型的空子(reward hacking),退化成胡言乱语或复读。
注意方向:这里常写成 D_{KL}(\pi_\theta\parallel\pi_\text{ref})。它直接惩罚新策略在参考模型低概率区域放置过多质量,主要作用是限制策略漂移。第 2 章的 mode-seeking 直觉在受限多峰拟合中有帮助,但不应把 RLHF 的全部行为都归结为"寻峰"。\beta 越大,缰绳越紧。
DPO(Direct Preference Optimization) 更精巧。它从数学上证明:带 KL 约束的 RLHF,其最优解有闭式形式。于是 DPO 跳过显式的奖励模型和 PPO,直接用一个分类式损失在偏好数据上训练。
那 KL 约束去哪了?没丢——那个 \beta \cdot D_{KL}(\pi_\theta \parallel \pi_\text{ref}) 正则化被隐式地折叠进了 DPO 的损失函数里。换句话说,DPO 没有放弃缰绳,只是把它编织进目标,不再需要在线采样和显式惩罚项。两条路,同一根缰绳。
Scaling law:压缩视角
Chinchilla scaling law 的原始分析指出:在其模型族、数据和拟合范围内,给定计算预算 C,模型参数量 N 和训练 token 数 D 应大致按 N \propto C^{0.5}、D \propto C^{0.5} 同步扩,比一味堆参数更接近计算最优。具体指数是经验拟合结果,不是跨架构、跨数据永远不变的常数。
从信息论看,可以用压缩视角理解这条经验规律,但它不是由源编码定理直接推出的结论。
模型的测试损失是它在给定数据、分词器和上下文设置下的交叉熵,也对应把模型接入熵编码器后的理想平均码长。模型越大、数据越多,通常能更好地预测数据分布,所以损失下降可以解释成"压缩能力提高"。在理想化条件下——测试分布固定、上下文足够、模型族能逼近真实分布——最优交叉熵的下界才对应数据的条件熵率。现实中的幂律形状和具体指数仍是经验规律,还受架构、优化、数据质量与评测口径影响。
于是"最优 scaling"这个问题,翻译过来就是:给定算力,怎么把这个熵率估计压到最低? Chinchilla 的答案是参数和数据要平衡——这和源编码定理"码长逼近熵"的精神,一脉相承。至于模型架构如何影响这条曲线(比如 稠密 vs MoE 在等效算力下的参数效率),是同一张图的另一个切面。
采样温度:输出分布的熵旋钮
推理时的采样温度(temperature) T,从信息论看就是一个直接操控输出分布 熵 的旋钮。做法是在 softmax 前把 logits 除以 T:
- T > 1:分布被拉平,熵增大。更多 token 有了可观概率,输出更随机、更发散。
- T < 1:分布被削尖,熵减小。概率集中到少数高分 token,输出更确定、更保守。
- T \to 0:若最高 logit 唯一,分布集中到 argmax、熵趋近 0,退化成 greedy;若最高值并列,极限仍可能在并列项之间保留不确定性。
所以调温度,字面上就是在调"每一步输出携带多少不确定性"。
这层信息论解释,是补在 Token 与采样 之上的:那篇讲的是 top_p / top_k 怎么截断候选集、以及 Claude 托管 API 为何移除了这些旋钮;这里只补一句"温度在信息论上到底动了什么"——它动的是输出分布的熵。两者互补,不重复。
| 信息论工具 | 在 LLM 里的化身 | 出处章节 |
|---|---|---|
| 交叉熵 H(p,q) | 预训练损失 | 第 2 章 |
| 2^{H_2} 或 e^{H_e} | 困惑度 PPL | 本章 |
| KL 散度 D_{KL} | RLHF/DPO 的策略正则化 | 第 2 章 |
| 熵率 | 理想语言建模的压缩下界;理解 scaling law 的一个视角 | 第 3 章 |
| 分布的熵 | 采样温度 | 第 1 章 |
几个反直觉但要命的点
- 困惑度不能跨分词器比。 PPL 是"每 token"的量,而不同模型 切 token 的粒度不同——字符级、子词级、词级模型的 PPL 数值不能直接比。必须换算到每字符或每字节的比特(bits-per-byte)才公平。看到两个模型的 PPL 就下结论,常常是在比不同的单位。
- 低困惑度不等于事实正确或回答有用。 交叉熵奖励的是"给数据中实际出现的 token 更高概率"。一个模型可以很会模仿常见文本,却仍然产生事实错误;反过来,罕见但正确的表达也可能得到较低概率。PPL 是分布预测指标,不是完整能力评分。
- 信息量不等于价值。 高熵只表示结果更不确定,不表示内容更有创造力或质量更高;高互信息只表示统计依赖更强,不表示存在因果关系。信息论回答"有多少可预测结构",任务和人类偏好才回答"这些结构有没有用"。
- 压缩能力与理解能力有关联,但不是同义词。 NLL 确实对应理想码长,说明预测与压缩共享目标;推理、工具使用、长程规划和对齐还受到架构、训练过程与推理机制影响,不能从压缩率单独推出。
- 理想交叉熵有个压不过的底,但现实里的底不容易直接看见。 在固定分布、单位和条件信息的理想设定下,数据的条件熵率构成下界;现实评测还混有有限上下文、分布漂移、模型能力和数据噪声。不能把拟合出的 scaling-law 常数项直接宣布为"真实熵率"。
- KL 惩罚的 \beta 是双刃剑。 \beta 太小,策略会 reward hacking 跑飞;太大,又被参考模型拴死,学不到新东西。它不是可有可无的正则项,而是对齐质量的关键旋钮。
- 温度不修改模型参数里的知识,只重排既有输出分布。 温度是推理时对 logits 的后处理,不动权重,只改变候选 token 的相对集中程度。它可能改变某次回答是否碰巧正确,却不能从根本上修复知识缺失或错误建模。
收束:一套语言,一张网
回看整条线。一个 LLM,从预训练(最小化交叉熵)、到对齐(KL 约束策略漂移)、到扩展(可从压缩视角理解损失下降)、到推理(温度调节输出熵),每一环都能借助信息论获得一部分清晰解释。
信息论值得系统学一遍,因为它是理解现代 LLM 的一套公共语言。把 熵、KL / 交叉熵、压缩、信道、信息瓶颈 这些工具握在手里,能更准确地读损失曲线、对齐配方和采样参数;但遇到事实性、推理和人类偏好问题时,还要引入信息论之外的模型。
参考
- 论文: "Training Compute-Optimal Large Language Models" (Hoffmann et al., 2022 — Chinchilla scaling law)
- 论文: "Direct Preference Optimization" (Rafailov et al., 2023 — DPO 如何隐式编码 KL 约束)
- 论文: "Language Modeling Is Compression" (Delétang et al., 2023 — LLM 损失即比特率的实证)
- 文档: Token 与采样、推理与 thinking(本仓库既有的采样与推理机制)
关键词: 困惑度 perplexity, 交叉熵损失, 预训练目标, one-hot, RLHF, PPO, KL 惩罚, DPO, reward hacking, scaling law, Chinchilla, 熵率, 压缩视角, 采样温度 temperature, 输出熵, 信息量与有用性