跳到正文
AI 图鉴
01 数学与统计基础专家本域第 6 篇

熵与信息论

一句话越出人意料,它携带的信息就越多;语言模型的损失函数,量的正是这份“意外”

定义

信息论用“不确定性”来度量信息:一件越不可能发生的事,一旦发生,携带的信息量就越大;香农熵是随机变量的平均信息量。交叉熵衡量用一套概率分布去编码另一套分布的数据需要多少信息,KL 散度是其中多出的部分,困惑度则是交叉熵在语言模型里的等价比表达。

直观理解

“太阳明天照常升起”几乎不含信息,因为你早就料到;“明天会有一场日全食”则信息量巨大。信息的多少,取决于它让你有多意外。训练语言模型就是同一件事:尽量让它对下一段真实文本不感到意外。它报出的损失,正是这份“意外程度”的平均值。

图 1

香农的通信模型:信息量决定了压缩的极限,而熵就是那个极限

图 2

伯努利熵与交叉熵:当模型用均匀分布 q=0.5 编码时,交叉熵恒为 1 比特,它与真实熵 H(p) 之间的差正是 KL 散度(点击图例切换曲线)

  • 真实熵 H(p)
  • 交叉熵 H(p, q=0.5)

工作原理

  1. 01

    信息量:越意外,信息越多

    定义一个事件的信息量为 −log p:概率 p 越小,信息量越大;两个独立事件的信息量相加,正对应它们的概率相乘。取对数,就是为了让“信息可加”与“概率可乘”严丝合缝地对应起来,底数取 2 时单位就是比特。

  2. 02

    熵:不确定性的平均度量

    香农熵 H(X) = −Σ p log p,是所有取值信息量的加权平均,衡量这个随机变量有多难猜。抛一枚均匀硬币熵为 1 比特,是最难猜的情形;几乎必然发生的事熵接近 0。同一个取值集合上,分布越均匀,熵越大。

  3. 03

    交叉熵:用错误模型编码真实世界的代价

    交叉熵 H(P,Q) = −Σ p(x) log q(x)。这里“真实分布”是 P(数据),模型给出的是 Q。它等于真实熵 H(P) 加上用错分布多付的代价。训练语言模型,就是最小化交叉熵——也就是最小化模型对真实文本的意外程度。

  4. 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)
P 为真实分布(数据),Q 为模型分布。交叉熵越小,说明模型 Q 越接近数据 P;训练即最小化它。
图 4

语言模型在 WikiText-103 上的困惑度:数值越低,模型对真实文本越不意外(示意量级,取自公开报告)

应用场景

  • 语言模型的训练目标:交叉熵损失就是负对数似然
  • 评测指标:困惑度用来横向比较不同模型对文本的建模能力
  • 数据压缩:熵是压缩率的理论极限,也是熵编码器设计的依据
  • 决策树按“信息增益”(熵的下降)选分裂特征;变分推断最小化 KL 以逼近后验

常见误区

  • 交叉熵对“自信的错误”惩罚极陡:模型把错误答案的概率押得越高,损失越大;反过来,把正确答案的概率压低也会付出高昂代价,这正是它逼模型诚实的原因。
  • KL 散度不对称,D(P‖Q) ≠ D(Q‖P),因此不能当作距离使用;两个方向优化的结果常常截然不同(前者倾向覆盖,后者倾向锁定模式)。
  • 困惑度只在同一词表与同一分词下可比。跨模型、跨分词直接对比困惑度会严重误导——分词越细,困惑度往往越低,但这并不代表模型更好。

关键术语

自信息
单个事件的信息量 −log p
香农熵
随机变量的平均信息量 / 不确定性
交叉熵
用分布 Q 编码来自 P 的数据所需的信息量
KL 散度
交叉熵与真实熵之差,非负且不对称
困惑度
交叉熵的指数,平均每步犹豫在多少个选项之间

延伸阅读