基础知识:信息论、熵与分布距离
熵、交叉熵、KL 和互信息把模型输出的概率分布转成可优化、可比较的量。语言模型、扩散模型、蒸馏和 RLHF 的 loss 经常使用它们来衡量不确定性、编码代价以及两个分布之间的差异。
熵:不确定性有多大
离散分布 的熵写成:
如果分布很尖,大部分概率集中在一个结果上,熵低;如果分布很平,很多结果都差不多可能,熵高。
这行公式里的 遍历所有可能结果, 是第 个结果的概率, 可以理解为“这个结果出现时带来的惊讶程度”。概率越小,惊讶越大;概率越大,惊讶越小。熵就是把每个结果的惊讶程度按概率加权平均。
举个极端例子:如果模型 100% 确定下一个 token 是 cat,熵接近 0;如果它在 1000 个 token 上几乎平均分配概率,熵就高得多。采样温度、top-p 和探索策略都会改变这种不确定性。
生成模型里,熵会影响多样性;强化学习里,entropy bonus 可以鼓励探索;分类模型里,过低熵有时表示自信,也可能表示过度自信。
Policy entropy:探索分布还剩多少选择
在状态 下,离散动作策略的熵是:
求和遍历当前状态下所有动作, 同时决定动作出现的概率和它的“惊讶程度”。概率集中在少数动作上时,policy entropy 低,策略几乎只剩固定选择;概率分散在多个动作上时,entropy 高,采样仍可能探索不同路径。
Entropy bonus 常用于阻止策略过早坍缩,但高熵本身不是任务目标:完全均匀地随机行动也可能回报很差。它表达的是探索分布还保留多少选择,必须与 reward、约束和采样成本一起权衡。具体策略更新见 Policy Gradient、Actor-Critic、PPO 与 GRPO。
交叉熵:用一个分布编码另一个分布的代价
交叉熵写成:
这里 是真实分布, 是模型分布。如果真实标签是 one-hot,交叉熵就变成:
也就是惩罚模型给正确答案 的概率太低。语言模型训练常用的 next-token loss 就是这个思想。
如果正确 token 的模型概率是 ,loss 是 ,惩罚很小;如果 ,loss 是 ,惩罚会大很多。语言模型预训练就是在每个位置重复这个动作:让正确下一个 token 的概率变高。
KL:两个分布之间的信息代价
KL divergence 写成:
它可以理解为:如果真实分布是 ,却用 来编码,会多付多少代价。
逐项看, 比较两个分布在第 个结果上的概率。如果 很大而 很小,说明 漏掉了 认为重要的结果,这一项惩罚就大。前面的 表示:只在 经常发生的地方重点计算代价。
KL 不对称:
这点很重要。不同方向的 KL 会偏好不同错误:有的更怕漏掉 支持的区域,有的更怕把概率放到 不支持的区域。VAE、RLHF、policy regularization 和蒸馏都会遇到这个差异。
后续例子:RLHF 里常见 KL penalty:
这里 鼓励模型完成任务, 是当前策略, 是参考模型, 控制“不要偏离参考模型太远”的力度。这个公式在平衡新能力和底座行为稳定性,不能读成 KL 越小越好。
KL 用在哪个方向必须写清楚
固定状态 时,当前策略到参考策略这一方向的 KL 是:
这里的期望明确由当前策略 采样:当前策略经常选择的动作对这个 KL 贡献更大。反过来的 是另一个量,它按参考策略采样和加权;交换两个分布不能当作等价改写。
这个方向的 KL 要有限,还要求当前策略相对于参考策略绝对连续:凡是 的动作,都必须有 。如果参考策略在某个当前策略会采到的动作上概率为 0,forward KL 就是无穷大。token mask、词表约束或截断规则都可能改变支持集,因此比较前必须确认两边使用同一有效动作集合,或者明确支持集如何处理。
在自回归策略里,状态 是 prompt 加已生成前缀,动作 是下一个 token。给定同一个 prompt,完整 response 由 采样;若还要对多个 prompt 平均,当前策略和参考策略的比较必须使用同一个 prompt 分布,否则结果还混入了 prompt distribution shift。沿当前策略采样的序列累加 token log-ratio,再对这些序列取平均,可以构成相应序列级 KL 的 Monte Carlo 估计。单个 token 上的
只是由 得到的一个逐点 log-ratio 样本,不是完整 KL;它甚至可以为负,而完整 KL 的期望非负。如果 token 或前缀来自其他采样分布,就必须把那个分布写出来,并处理分布不匹配,不能继续把样本平均默认解释成上述方向的 KL。PPO/RLHF 中的具体约束见 Policy Gradient、Actor-Critic、PPO 与 GRPO,对齐训练背景见 预训练、微调与对齐。
通信模型:信息要经过有噪声的通道
图源:Wikimedia Commons: Shannon communication system。原图展示信息源、编码器、信道、噪声和解码器。这里的重点是:信息论研究如何在有噪声的通道里表示、传输和恢复信息;这和模型压缩、表示学习、tokenization、通信并行都有呼应。
把这个图放进 AI 里看:
| 通信系统 | AI 系统里的对应物 |
|---|---|
| 信息源 | 文本、图像、状态、动作、奖励 |
| 编码器 | tokenizer、vision encoder、latent encoder |
| 信道噪声 | 数据噪声、量化误差、dropout、采样随机性 |
| 解码器 | language head、diffusion decoder、action head |
| 传输代价 | token 数、bit 数、显存、带宽、延迟 |
互信息:两个变量共享多少信息
互信息写成:
它衡量知道 之后, 的不确定性减少了多少。表征学习常关心一个表示 是否保留了对任务 有用的信息,同时丢掉无关噪声。
公式里的 是不知道 时对 的不确定性, 是知道 后剩下的不确定性。两者差得越大,说明 对 越有信息量。
在世界模型和 VLA 里,好的 latent 不只是压缩视频,还要保留动作、接触、遮挡、目标和风险的信息。压缩率高但互信息保错方向,后续控制会出问题。
Perplexity:语言模型里的指数化交叉熵
Perplexity 常写成:
它可以直觉理解为:模型平均每一步还在多少个候选之间犹豫。PPL 低通常说明语言建模更好,但它不是所有能力的充分证明;推理、工具调用、安全和闭环任务还要看专门评测。
常见误读
| 误读 | 更稳的理解 |
|---|---|
| 熵越低越好 | 过低可能是过度自信,生成时也可能缺少多样性 |
| KL 是距离 | KL 不对称,不满足普通距离直觉 |
| 交叉熵只属于分类 | 语言模型、蒸馏、对齐和序列建模都在用它 |
| PPL 低就代表模型全能 | PPL 是语言建模指标,不替代复杂能力评测 |
读完以后怎么判断
看到熵、交叉熵、KL 或互信息,先问它在衡量哪个分布,分布来自数据、模型、teacher、reference policy 还是 posterior。分布来源一清楚,loss 的作用也会清楚。
- Title: 基础知识:信息论、熵与分布距离
- Author: Charles
- Created at : 2026-06-07 09:00:00
- Updated at : 2026-06-07 09:00:00
- Link: https://charles2530.github.io/2026/06/07/ai-files-prerequisite-math-information-theory-and-divergence/
- License: This work is licensed under CC BY-NC-SA 4.0.