E.4.1 信息论基础:自信息、熵与探索
前置知识:本篇不需要信息论基础,但建议先读完附录导读和E.2.1 概率基础。
信息论在回答什么问题
强化学习里的策略本质上是一个概率分布——给定状态 ,策略为每个动作分配一个概率:
一旦策略变成了概率分布,三个问题自然浮现:
- 这个策略有多随机?(答案:熵)
- 模型预测的分布和目标分布差多少?(答案:交叉熵)
- 新策略和旧策略差多远?(答案:KL 散度)
这三个量贯穿了从策略梯度到 DPO 的整条链路。我们从最简单的概率事件开始,一步步走到它们在 RL 中的应用。
概率越小,信息量越大
想象你在玩一个猜数游戏:对方从 1 到 8 之间选了一个数,你需要用”是/否”问题把它猜出来。如果对方选了 3,你需要问几个问题?”比 4 小吗?””比 2 大吗?””是 3 吗?”——正好 3 个。而如果范围只有 1 到 2,1 个问题就够了。
范围越大,结果越难猜,猜中之后获得的信息也越多。这其实就是自信息的直觉:事件越不可能发生,它一旦发生,带给你的”惊喜”就越大。
数学上,自信息(self-information)用一个简洁的公式刻画这种”惊喜程度”:
这里的 是以 2 为底的对数, 是事件 发生的概率。前面的负号保证结果为正数(因为 对小于 1 的数取值是负的)。
举几个例子。如果 (像抛硬币正面朝上):
如果 (像刚才猜数游戏里猜中一个特定数字):
概率从 降到 ,自信息从 1 涨到 3。这个”越少见越令人惊讶”的性质,正是后面熵和 KL 散度的基石。
熵——衡量策略有多”拿不定主意”
自信息衡量的是单个事件的惊喜程度,但策略面对的是一整组动作的概率。我们需要一个总的指标来衡量”策略整体上有多不确定”——这就是熵要解决的问题。
熵(entropy,用字母 表示)的定义是所有动作的自信息的加权平均:
这里 的意思是"把所有可能的动作 加起来",每一项乘以对应的概率 作为权重。
看两个具体策略。策略 A 是完全犹豫不决的:
| 动作 | 概率 |
|---|---|
| left | |
| right |
策略 B 则几乎已经下定决心了:
| 动作 | 概率 |
|---|---|
| left | |
| right |
策略 A 的熵是:
策略 B 的熵约为:
A 的熵更大,说明它更"拿不定主意",也就是更愿意探索不同的动作;B 的熵更小,说明它更偏向某个动作,行为更可预测。
熵奖励——让策略"别太早做决定"
光知道怎么算熵还不够,关键是它能派上什么用场。在实际训练中,策略很容易过早地锁定某个动作——这就是"过早收敛"问题。为此,我们在训练目标里加入熵奖励,鼓励策略在训练早期保持开放心态。
一种常见对策是在训练目标里加入熵奖励:
这里 是期望回报( 表示取平均), 是策略的熵, 是一个调节系数,控制"多鼓励探索"。
用一个数字例子说明。两个策略的平均回报和熵如下:
| 策略 | 平均回报 | 熵 | 时的目标 |
|---|---|---|---|
| A | |||
| B |
B 的原始回报更高,但 A 更愿意探索。加入熵奖励后,A 的综合得分反而超过了 B。
这背后的道理很简单:训练初期价值估计还不准确,与其让策略赌在一两个动作上,不如让它多试几种选择。等价值估计可靠了,策略自然会变得更确定。
熵的单位:bit 和 nat
上面的熵公式里用到了对数,而对数的底数决定了熵的单位。如果用 (以 2 为底),单位叫 bit;如果用自然对数 (以 为底),单位叫 nat。
两者之间差一个常数倍:。机器学习的论文和代码里几乎都用自然对数,因为它和指数函数、softmax、交叉熵损失的数学形式更契合。
例如公平硬币的熵,用 算:
用自然对数算:
数值不同,但表达的是同一个物理量,只是单位不同——就像 1 公里和 1000 米的关系。后面除非特别说明,我们都用自然对数。
为什么最大熵对应均匀分布
一个自然的追问:熵什么时候最大?答案很直觉——当所有选项的概率都相等时。
如果两个动作的概率是 ,我们完全猜不到策略会选哪个;如果是 ,几乎可以确定它选第一个。熵恰好捕捉了这种”猜不到”的程度:
而
所以”鼓励熵”并不是鼓励策略胡乱行动,而是让它在训练早期保持开放心态,多尝试不同选择。等价值估计更可靠后,策略自然会收窄到高回报的动作上。
从 softmax 到策略分布
到目前为止,我们假设策略的概率分布是已知的。但在实际应用中,策略是一个神经网络,它输出的不是概率,而是一组原始分数。我们需要一种方法把这些分数转换成合法的概率分布——softmax 函数就是为了解决这个问题而引入的。
例如对于两个动作,网络可能输出 logits 。softmax 函数把这些分数转换成合法的概率——所有值都在 0 到 1 之间,且加起来等于 1:
这里 是指数运算,分母 把所有动作的指数值加起来做归一化。算出来:
softmax 是策略网络和语言模型最常用的最后一层。后面所有的熵、交叉熵和 KL 散度,都会作用在 softmax 输出的这类概率分布上。理解了这一层,就能看懂为什么策略梯度、PPO 和 DPO 都在反复比较不同动作(或不同回答)的对数概率。
小结
本篇从"概率事件有多大惊喜"出发,逐步建立了信息论在 RL 中的核心工具链:
| 概念 | 解决什么问题 | 核心公式 | RL 中的角色 |
|---|---|---|---|
| 自信息 | 单个事件有多大"惊喜" | 低概率事件包含更多信息 | |
| 熵 | 策略整体有多不确定 | 衡量探索程度,鼓励多样性 | |
| 熵奖励 | 防止策略过早锁定某个动作 | 训练目标中加入探索鼓励项 | |
| 最大熵 | 熵最大时分布长什么样 | 均匀分布时熵最大 | "鼓励熵" = 鼓励保持开放心态 |
| softmax | 把神经网络输出变成合法概率分布 | 策略网络和语言模型的输出层 |
这一篇只讨论了"单个分布"的性质。下一篇开始比较两个分布——模型预测 vs 真实标签、新策略 vs 旧策略——为此需要交叉熵和 KL 散度。
下一篇:E.4.2 交叉熵与 KL 散度 —— 衡量两个分布之间的距离。