← 返回目录


互信息与事物空间中的密度

学校≠教育≠技能;文凭溢价=80%信号传递+20%人力资本

20 👍 / 0 💬

假设你有一个系统 X,它可以处于 8 种状态中的任何一种,且这些状态(相对于你当前的知识状态而言)出现的概率是相等的;还有另一个系统 Y,它可以处于 4 种状态中的任何一种,且概率同样相等。正如上一篇文章所定义的,X 的熵是 3 比特;我们需要提出 3 个是非题才能找出 X 的确切状态。Y 的熵则是 2 比特;我们必须提出 2 个是非题才能找出 Y 的确切状态。这似乎显而易见,因为 2^3 = 82^2 = 4,所以 3 个问题足以区分 8 种可能性,2 个问题足以区分 4 种可能性。但请记住,如果这些可能性的概率并非全部相等,我们本可以使用更聪明的编码方案,比如平均只用 1.75 个问题就能发现 Y 的状态。不过在这个例子中,X概率质量均匀地分布在它的所有可能状态上,Y 也是如此,所以我们无法使用任何聪明的编码技巧。

那么,组合系统 (X, Y) 的熵是多少呢?

你可能忍不住会回答:「既然找出 X 需要 3 个问题,然后找出 Y 需要 2 个问题,那么找出 XY 的状态总共就需要 5 个问题。」

但是,如果这两个变量是相互关联(纠缠)的,以至于得知 Y 的状态就能让我们推断出一些关于 X 状态的信息呢?

具体来说,假设 XY 要么同时为奇数,要么同时为偶数。

现在,如果我们接收到一条 3 比特的信息(即问了 3 个问题)并得知 X 处于状态 X_5(奇数),我们就立刻知道 Y 必然处于状态 Y_1Y_3,而绝对不可能是 Y_2Y_4。因此,只需额外追加一个问题:「Y 是处于状态 Y_3 吗?」,如果回答是「不」,我们便掌握了 (X, Y) 的完整状态:X = X_5Y = Y_1。我们总共只用了 4 个问题就查明了真相。

反过来看,如果我们用两个问题得知 Y 处于状态 Y_4(偶数),我们也只需额外再问两个问题,就能得知 X 究竟是处于 X_2X_4X_6 还是 X_8。同样,只需 4 个问题就能弄清楚这个联合系统的状态。

两个变量的互信息(mutual information)定义为:独立系统的熵之和与联合系统的熵之间的差值,即:

I(X; Y) = H(X) + H(Y) - H(X, Y)

在这个例子中,两个系统之间存在 1 比特的互信息:得知 X 能告诉我们关于 Y1 比特信息(将可能性空间从 4 种缩减为 2 种,即可能性体积减半),而得知 Y 也能告诉我们关于 X1 比特信息(将可能性空间从 8 种缩减为 4 种)。

当概率质量分布不均匀时情况又如何呢?例如,在上一篇文章中,我们讨论了 Y 的四种状态概率分别为 1/21/41/81/8 的情况。让我们将其视为独立考虑时,我们在 Y 上的概率分布——如果只观察 Y 而不看其他任何东西,这就是我们预期的结果。再假设变量 Z 有两个状态,Z_1Z_2,概率分别为 3/85/8

那么,当且仅当 YZ 的联合分布如下表所示时,YZ 之间的互信息为零:

| Z_1 Y_1: 3/16 | Z_1 Y_2: 3/32 | Z_1 Y_3: 3/64 | Z_1 Y_4: 3/64 |

| Z_2 Y_1: 5/16 | Z_2 Y_2: 5/32 | Z_2 Y_3: 5/64 | Z_2 Y_4: 5/64 . |

这个分布完全遵循以下法则:

P(Y, Z) = P(Y)P(Z)

例如,P(Z_1 Y_2) = P(Z_1)P(Y_2) = 3/8 \times 1/4 = 3/32

请注意,我们只需查看联合分布,就能还原出 YZ 各自的边缘概率(独立概率):

P(Y_1) = \text{所有能让 } Y_1 \text{ 发生的不同情况的总概率}

P(Y_1) = P(Z_1 Y_1) + P(Z_2 Y_1)

P(Y_1) = 3/16 + 5/16

P(Y_1) = 1/2

因此,只需审视联合分布,我们就能确定边缘变量 YZ 是否相互独立;也就是说,联合分布是否能被分解(因子化)为边缘分布的乘积;对于所有的 YZ,是否都满足 P(Y, Z) = P(Y)P(Z)

最后一点至关重要,因为根据贝叶斯定理

P(Z_j Y_i) = P(Y_i)P(Z_j)

P(Z_j Y_i) / P(Z_j) = P(Y_i)

P(Y_i | Z_j) = P(Y_i)

用大白话来说就是:「在你得知了 Z_j 之后,你对 Y_i 的信念(概率预期)依然和以前完全一样。」

所以,当分布可分解时——即当 P(Y, Z) = P(Y)P(Z) 时——这等同于在说:「得知关于 Y 的信息永远不会告诉我们任何关于 Z 的信息,反之亦然。」

由此你可能会顺理成章地怀疑:YZ 之间不存在任何互信息。正是如此。没有互信息的地方,就不存在贝叶斯证据,反之亦然。

假设在上述 (Y, Z) 分布中,我们将 YZ 的每种可能组合视为一个单独的事件——这样分布 (Y, Z) 总共就有 8 种可能性,且概率如上表所示——然后,我们用计算任何分布熵的标准方法,来计算分布 (Y, Z) 的熵:

 P(Z_1 Y_1)\log_2(P(Z_1 Y_1)) + P(Z_1 Y_2)\log_2(P(Z_1 Y_2)) + P(Z_1 Y_3)\log_2(P(Z_1 Y_3)) + \dots + P(Z_2 Y_4)\log_2(P(Z_2 Y_4))

 = (3/16)\log_2(3/16) + (3/32)\log_2(3/32) + (3/64)\log_2(3/64) + \dots + (5/64)\log_2(5/64)

你最终计算出的总和,将与你分别计算 Y 的熵和 Z 的熵然后相加所得的结果完全相同。这两个变量之间没有互信息,因此我们对这个联合系统的不确定性,丝毫没有少于我们把两个系统分开考虑时的不确定性。(我在这里省略了计算过程,但欢迎你自己动手算算;我也省略了这是一条普遍真理的数学证明,但欢迎你谷歌搜索「香农熵」和「互信息」。)

那如果联合分布不可分解呢?例如:

| Z_1 Y_1: 12/64 | Z_1 Y_2: 8/64 | Z_1 Y_3: 1/64 | Z_1 Y_4: 3/64 |

| Z_2 Y_1: 20/64 | Z_2 Y_2: 8/64 | Z_2 Y_3: 7/64 | Z_2 Y_4: 5/64 . |

如果你把联合概率相加求边缘概率,你会发现 P(Y_1) = 1/2P(Z_1) = 3/8,依此类推——边缘概率和之前完全一样。

但是,联合概率并不总是等于边缘概率的乘积。例如,概率 P(Z_1 Y_2) 等于 8/64,而 P(Z_1)P(Y_2) 算出来应该是 3/8 \times 1/4 = 6/64。也就是说,Z_1Y_2 结伴出现的概率,大于你根据它们各自单独出现的概率所做出的预期。

这反过来意味着:

P(Z_1 Y_2) > P(Z_1)P(Y_2)

P(Z_1 Y_2) / P(Y_2) > P(Z_1)

P(Z_1 | Y_2) > P(Z_1)

由于 P(Z_1 Y_2) 的概率「异常地高」——也就是高于边缘概率默认指示的值——由此可知,观察到 Y_2 就构成了能够增加 Z_1 发生概率的证据。根据对称性推导,观察到 Z_1 也必定会增加对 Y_2 的预期。

既然至少存在某些 Y 的值能为我们提供关于 Z 的信息(反之亦然),那么这两个变量之间就必定存在互信息;因此你会发现——我对此充满信心,尽管我没去实际验算——计算 (Y, Z) 的熵所得到的总不确定性,将小于 YZ 各自独立熵的总和。也就是说,H(Y, Z) = H(Y) + H(Z) - I(Y; Z),其中所有变量必然都是正数。

(在这里我稍微偏个题:互信息表达式的对称性表明,平均而言,Y 告诉我们关于 Z 的信息量,必然等于 Z 告诉我们关于 Y 的信息量。至于这该如何与你在逻辑学课上学到的「如果所有的乌鸦都是黑色的,允许你推导 \text{乌鸦}(x) \Rightarrow \text{黑色}(x) ,并不意味着允许你反向推导 \text{黑色}(x) \Rightarrow \text{乌鸦}(x)」相调和,我把这个问题留给读者作为练习。贝叶斯那对称的概率流转,与形式逻辑那生硬断裂的跳跃相比,看起来是多么截然不同啊——尽管后者其实只是前者的一种退化形式。)

「但是,」你肯定想问,「所有这些数学推导跟如何正确使用词汇有什么关系呢?」

《空标签》[1]以及随后的《用实质代替符号》[2]这两篇文章中,我们见识了用定义去替换词语的技巧——那里给出的例子是:

所有 [必死的、\neg羽毛的、两足的] 都是必死的。
苏格拉底是一个 [必死的、\neg羽毛的、两足的]。
因此,苏格拉底是必死的。

那么问题来了,既然如此,你为什么还要给「人类」专门发明一个词呢?为什么不干脆每次都说「苏格拉底是一个必死的无毛两足动物」?

因为对于你经常遇到的事物,使用简短的词汇是很有帮助的。如果你用于描述单一属性的编码本身已经足够高效了,那么专门为了一个属性组合去发明一个特殊词汇(比如用「人类」代表「必死的无毛两足动物」),其实毫无优势可言——除非,在现实世界中,那些同时具备「必死」「无毛」「两足」属性的事物被发现的频率,远远高出了基于边缘概率的预估。

在高效的编码系统中,词汇的长度与其出现的概率相对应——所以,描述 Z_1 Y_2 的代码长度,理应刚好等于描述 Z_1 的代码长度加上描述 Y_2 的代码长度,除非 P(Z_1 Y_2) > P(Z_1)P(Y_2);只有在这种互信息大于零的情况下,代表这个组合的单词编码,才可以比其各组成部分的编码总和更短。

这也就完全对应了这样一种情况:当我们看到了事物的部分属性时,我们能够借此推断出它的其他属性。那么,那些「无毛且两足的」事物碰巧也是「必死的」概率,必定要高于默认情况。

当然,「人类」这个词实际上涵盖了成千上万种属性——当你看到一个具备人类外形、会说话、穿着衣服的实体时,你能推断出大量关于它的生化、解剖学和认知事实。如果我们想用对人类已知的一切描述来取代「人类」这个词,我们将不得不耗费无尽的时间来交谈。但这一切之所以成立,仅仅是因为一个无毛的、会说话的两足动物,不仅极大概率会被毒芹毒死,长有宽指甲,而且极大概率还容易过度自信。

只有在我们可以通过某些属性去推断其他属性的情况下,为一件事物专门创造一个词语(而不是罗列它的一堆属性),才是一种更紧凑的高效编码。(或许一些极其原始的词汇是个例外,比如「红色」,我们用它来传递关于我们感官体验的一种完全未压缩的描述。但只要你遇到了一只虫子,甚至哪怕是一块石头,你所面对的都已经是不那么简单的属性集合了,其层级远在原始感官之上。)

因此,为绿眼睛且黑头发的人专门发明一个词「wiggin[3]」(而不是每次都啰嗦地说是「绿眼睛黑头发的人」),只有在满足以下条件时才是有用的:

  1. 绿眼睛的人拥有黑头发的概率高于平均水平(反之亦然),这意味着我们可以从黑头发概率性地推断出绿眼睛,反之亦然;或者

  2. Wiggins(也就是这群人)还共享着其他能够以高于默认概率被推断出来的属性。在这种情况下,我们一开始必须分别观察确认绿眼睛和黑头发的存在;但是,在独立观察到这两个属性之后,我们就能概率性地推断出他们身上的其他属性(比如吃汉堡时爱挤番茄酱的怪癖)。

我们甚至可以把「定义一个词」的行为,视作包含着这层意思的承诺。当你告诉别人:「我把『wiggin』这个词定义为绿眼睛黑头发的人」时,通过格莱斯语用推涵(Gricean implication),你其实是在断言:「wiggin」这个词在某种程度上能帮你做出有效推断 / 缩短你的信息长度。

如果绿眼睛和黑头发共同出现的概率并不比默认概率高,而且也没有任何其他属性会以高于默认概率的频率与它们相伴出现,那么「wiggin」这个词就是一个彻头彻尾的谎言:因为这个词声称某类人值得被作为一个特定的群体单独拎出来区分,但事实并非如此。

在这种情况下,「wiggin」这个词不仅无助于我们更紧凑地描述现实——它并非由试图发送最短信息的理性存在所定义——而且在奥卡姆剃刀的「最简单解释」中毫无立足之地。同理,「wiggin」这个词在进行任何贝叶斯推断时,也无法为你提供半点帮助。即使你不把创造这个词的行为称为谎言,那它至少也是一个错误。

而「顺着现实大自然的关节进行切分」的真正方法,正是围绕着在事物空间[4]中存在着异常高概率密度的聚集区,来划定你的分类边界。


总目录:

《理性:从人工智能到僵尸》导读与目录

卷:

第三卷:灵魂中的机械

章节:

人类词语指南

上一篇:

熵与简短的编码

下一篇:

超指数级的概念空间与简单的词语
Thoughts Memo 汉化组译制
感谢主要译者 gemini-3.1-pro,校对 Jarrett Ye
原文:Mutual Information, and Density in Thingspace

参考

1. 空标签 ./2053166730122360454.html
2. 用实质代替符号 ./2054864033602393512.html
3. 夹带内涵 ./2055957959021171732.html
4. 事物空间 ./2050179140419072823.html

专栏:理性 & 克服偏见


← 返回目录