熵与信息度量

本页目录

收到一条消息后,你排除了哪些可能?还剩多少不知道?⁠信息论把这种变化变成可以计算的量。 它度量给定概率模型下的不确定性,不直接衡量一句话的意义、真假或价值。

这一篇先让你看见三件事:候选如何被回答排除、单次信息如何汇成平均值、一个变量怎样帮助我们了解另一个变量。全文使用以 2 为底的对数,单位为 bit;除特别说明外,讨论有限离散随机变量。

从八个候选到一个答案

设随机变量 等概率地取 到 。每次只能问一个是非问题,并且必须最终确定答案。

问“是否大于 4”,不论回答是什么,都能排除一半候选。接下来继续对半分,候选数就沿着 变化。下面固定展示答案为 的一条路径;其他答案也都恰好经过三次提问。

正在呈现知识画面
一个答案,怎样变成 3 bit 信息

均匀分布的 8 个候选沿这一条回答路径变成 4、2、1 个。每次把剩余概率质量平分,获得 1 bit;这是逻辑步骤,不是物理时间。

一次回答能带来多少信息,取决于它排除了多少概率质量。 在这个例子中,每次回答在当时的条件下都有 的概率,所以都带来 bit,三次合计 bit。

这个结论需要“等概率”和“每次对半分”。如果数字 的概率为 ,其余七个数字各占 ,先问“是不是 7”就能让多数情况一次结束。此时“是”和“否”分别携带约 和 bit;⁠是非问题并不保证每个回答都恰好带来 1 bit。

自信息:确认一个事件,得到多少信息

概率为 的结果 一旦发生,其自信息定义为:

越罕见的事件,确认它发生时得到的信息越多。概率为 的事件自信息为 :模型已经确定的结果,没有额外消除不确定性。

事件在模型中的概率自信息怎样理解
bit确认一次等概率的二选一
bit确认八个等概率候选中的一个
约 bit比常见事件携带更多信息
bit结果已经确定

为什么用对数?独立事件的联合概率相乘,我们希望确认它们的信息量相加:

不独立时仍然可以相加,但第二项必须使用条件概率:

自信息可以是小数。它不是“这一次真的问了 0.322 个问题”,也不要求一段独立的二进制码字能有小数位长度。实际提问次数与编码长度的关系,稍后再讨论。

熵:把每种结果的信息量按概率加权

自信息针对某个结果。⁠熵针对整个分布,是自信息的期望:

想象反复从同一分布独立取样。常见结果更频繁地进入平均,罕见结果虽然单次信息量大,出现次数却少。因此,不能把各结果的自信息简单相加;需要先乘上发生概率。

下面只保留两个结果:、。对应的二元熵函数为:

先看整个概率区间的趋势:曲线的横坐标是 ,纵坐标是两项贡献之和 。

h₂(p) 1 0 0.5 1 p 1 bit

两端的结果完全确定,熵为零;各占一半时最难预测,熵达到 1 bit。曲线左右对称,因为交换结果的名字不会改变不确定性。

下面把曲线上的一个点拆开:改变概率,观察每个矩形的宽、高与面积,理解这两项贡献如何相加。

正在呈现知识画面
罕见时变高,也变窄

拖动 A 的概率,蓝色和金色色块同步改变。宽度是概率,高度是单次自信息,面积是对熵的贡献;两块面积相加得到平均信息量。

在 时,两种结果各有 bit 自信息,加权后各贡献 bit,熵最大,为 bit。偏向任意一端时,罕见结果变得更意外,但整个分布的平均不确定性降低。到 或 ,结果完全确定,熵为 。

这里约定 ,依据的是 。概率为零的事件在模型内不会发生;若现实出现了它,应该检查模型,而不是把它当作一个普通的有限自信息样本。

熵与实际提问次数,不能直接画等号

自信息与熵可以是小数,但一次实际的是非提问只能算一次。逐符号前缀码的最优平均长度满足 (至少两个正概率结果)。因此自信息、熵、平均码长与最坏提问次数是不同的量⁠。

这里先记住区别;公平骰子的决策树、取整开销与分块编码,放在源编码与压缩中解释。

联合熵、条件熵与互信息

两个变量之间的问题是:⁠看到线索后,还剩多少不知道? 为了看清“平均”的作用,这次让 不再均匀:,。线索 ,独立噪声 以概率 翻转原值。

默认 。如果看到 ,可能是少见的 被正确保留,也可能是常见的 被翻转。两种情况的联合概率都是 ,所以这个分支反而变成五五开。另一个分支是什么样?两者该怎样平均?

正在呈现知识画面
每个分支不一样,条件熵怎样平均?

联合概率按 X 分成两行,各自归一化成条件分布。每个分支的熵乘以该分支概率,再相加得到条件熵;某一分支更不确定,也不妨碍平均不确定性下降。

条件熵:每条线索都要按出现概率算进去

表格每一行先除以自己的行和,得到 。这对应已经观察到某个具体线索⁠。条件熵则要把所有分支的熵按线索出现概率加权:

默认例子中, 出现概率是 ,该分支的熵为 bit; 出现概率为 ,该分支的熵约为 bit。加权后约为 bit,不能取两个分支的简单平均,更不能只看其中一个。

切换为均匀先验时,两行恰好对称,分支熵都为 。这时只算一行会碰巧得到正确的平均值,但它是这个对称例子的特点,不是一般规则。

联合熵:先确定线索,再确定原值

把变量对 当成一个结果,其熵为 。也可以分两步问清:先确定 ,再在对应分支内确定 ,得到链式法则⁠:

图中右侧行和组成 ,决定第一步的 ;两个条件分支的加权平均决定第二步的 。这就是下方联合熵公式两项的来历。

它也能从 推出:取负对数把乘法变成加法,再按联合概率求平均。独立时 ,联合熵才等于两个边缘熵之和。

互信息:平均减少了多少不确定性

观察线索前,不确定性是 ;观察后,平均剩下 。两者之差就是互信息:

默认例子中,先验熵约为 bit,平均条件熵约为 bit,所以互信息约为 bit。虽然某次观察会让不确定性升到 bit,⁠对全部线索取平均后仍然减少了不确定性⁠。

互信息对称、非负,为零当且仅当两个变量独立。这意味着 ,但不要求每一个具体分支都满足同样的不等式。

把 调到 ,线索与原值独立,互信息为零;调到 或 ,线索都能完整确定原值,互信息等于 。⁠完全相反也可以完全提供信息;统计依赖不要求取值相同,也不自动意味着因果关系。

用一张图对照信息度量

对于这里的两个有限离散变量,可以用维恩图记住代数关系:两圆分别表示 与 ,重叠表示 ,并集表示 。图中面积只作示意,不对应上面某个噪声参数的数值。

H(X) H(Y) H(X|Y) H(Y|X) I(X;Y) H(X,Y)

从左圆可读出 ;把三个互不重叠的区域相加,就得到联合熵。这张图把前面的关系放在一起,方便对照。

把这些量放回同一张表

量对象回答的问题
一个已发生的结果确认这件事带来多少信息?
一个变量的分布平均有多少不确定性?
两个变量的联合分布一起确定它们有多少不确定性?
对线索加权的条件分布知道 X 后,平均还剩多少?
两个变量的依赖知道 X 后,平均消除了多少?

对于有限离散变量,还有两个有用的边界:

  • ,仅在结果确定时取等号。
  • 若取值集合大小为 ,则 ,仅在这 个取值均匀分布时取等号。

取值数量约束最大熵,概率分布决定实际熵。对于序列,还要考虑上下文依赖:单个字母的频率分布,与知道前文后的下一个字母分布,并不是同一个对象。不能把两者的差异全归结为“高频字母更多”。

基础主线到这里,进阶内容按需阅读

理解上表,已经足够进入下一篇。序列的链式法则与熵率在第三篇展开;连续变量的密度、微分熵与坐标尺度,在第四篇高斯信道处介绍。

如果想继续追问“条件为什么会改变依赖”“处理会丢掉哪些信息”,可以阅读选读:条件信息与数据处理。那里用条件分组和状态合并分别解释,不作为基础阅读的前置要求。

下一篇:预测分布不准确,会付出什么代价

这一篇始终使用给定分布本身计算信息量。下一篇把“数据实际来自的分布 ”与“我们拿来预测或编码的分布 ”分开,解释交叉熵与 KL 散度。

随后,系列依次讨论无损压缩、带噪信道、允许失真的压缩,最后回到语言模型。

参考