熵与信息论
一句话越出人意料,它携带的信息就越多;语言模型的损失函数,量的正是这份“意外”
定义
信息论用“不确定性”来度量信息:一件越不可能发生的事,一旦发生,携带的信息量就越大;香农熵是随机变量的平均信息量。交叉熵衡量用一套概率分布去编码另一套分布的数据需要多少信息,KL 散度是其中多出的部分,困惑度则是交叉熵在语言模型里的等价比表达。
直观理解
“太阳明天照常升起”几乎不含信息,因为你早就料到;“明天会有一场日全食”则信息量巨大。信息的多少,取决于它让你有多意外。训练语言模型就是同一件事:尽量让它对下一段真实文本不感到意外。它报出的损失,正是这份“意外程度”的平均值。
香农的通信模型:信息量决定了压缩的极限,而熵就是那个极限
伯努利熵与交叉熵:当模型用均匀分布 q=0.5 编码时,交叉熵恒为 1 比特,它与真实熵 H(p) 之间的差正是 KL 散度(点击图例切换曲线)
- 真实熵 H(p)
- 交叉熵 H(p, q=0.5)
工作原理
- 01
信息量:越意外,信息越多
定义一个事件的信息量为 −log p:概率 p 越小,信息量越大;两个独立事件的信息量相加,正对应它们的概率相乘。取对数,就是为了让“信息可加”与“概率可乘”严丝合缝地对应起来,底数取 2 时单位就是比特。
- 02
熵:不确定性的平均度量
香农熵 H(X) = −Σ p log p,是所有取值信息量的加权平均,衡量这个随机变量有多难猜。抛一枚均匀硬币熵为 1 比特,是最难猜的情形;几乎必然发生的事熵接近 0。同一个取值集合上,分布越均匀,熵越大。
- 03
交叉熵:用错误模型编码真实世界的代价
交叉熵 H(P,Q) = −Σ p(x) log q(x)。这里“真实分布”是 P(数据),模型给出的是 Q。它等于真实熵 H(P) 加上用错分布多付的代价。训练语言模型,就是最小化交叉熵——也就是最小化模型对真实文本的意外程度。
- 04
KL 散度与困惑度:把代价和犹豫都摆出来
KL 散度 D(P‖Q) = H(P,Q) − H(P),是交叉熵超出真实熵的那部分;它非负且不对称,因此不是距离。困惑度 = 2^{H(P,Q)}(自然对数下为 e^{H}),可以读作“模型在每一步平均犹豫在多少个等可能的选项之间”。在语言模型论文里,困惑度往往比交叉熵更直观。
关键公式
H(P, Q) = − Σₓ P(x) log Q(x)语言模型在 WikiText-103 上的困惑度:数值越低,模型对真实文本越不意外(示意量级,取自公开报告)
应用场景
- 语言模型的训练目标:交叉熵损失就是负对数似然
- 评测指标:困惑度用来横向比较不同模型对文本的建模能力
- 数据压缩:熵是压缩率的理论极限,也是熵编码器设计的依据
- 决策树按“信息增益”(熵的下降)选分裂特征;变分推断最小化 KL 以逼近后验
常见误区
- 交叉熵对“自信的错误”惩罚极陡:模型把错误答案的概率押得越高,损失越大;反过来,把正确答案的概率压低也会付出高昂代价,这正是它逼模型诚实的原因。
- KL 散度不对称,D(P‖Q) ≠ D(Q‖P),因此不能当作距离使用;两个方向优化的结果常常截然不同(前者倾向覆盖,后者倾向锁定模式)。
- 困惑度只在同一词表与同一分词下可比。跨模型、跨分词直接对比困惑度会严重误导——分词越细,困惑度往往越低,但这并不代表模型更好。
关键术语
- 自信息
- 单个事件的信息量 −log p
- 香农熵
- 随机变量的平均信息量 / 不确定性
- 交叉熵
- 用分布 Q 编码来自 P 的数据所需的信息量
- KL 散度
- 交叉熵与真实熵之差,非负且不对称
- 困惑度
- 交叉熵的指数,平均每步犹豫在多少个选项之间