事物空间中的互信息与密度
Mutual Information And Density In Thingspace
❦
假设你有一个系统 X,它可以处于 8 种状态中的任意一种,并且这些状态在(相对于你当前的知识状态而言)都是等概率的;还有一个系统 Y,它可以处于 4 种状态中的任意一种,也都是等概率的。按照上一篇文章中的定义,X 的熵是 3 比特;我们需要问 3 个是/否问题,才能找出 X 的精确状态。Y 的熵是 2 比特;我们必须问 2 个是/否问题,才能找出 Y 的精确状态。这看起来也许很显然,因为 2^3 = 8 且 2^2 = 4,所以 3 个问题能区分 8 种可能,而 2 个问题能区分 4 种可能;但请记住,如果这些可能性并非全都等可能,我们就可以用更巧妙的编码来发现 Y 的状态,例如平均只需 1.75 个问题。不过在这里,X 的概率质量均匀分布覆盖它所有可能的状态,Y 亦然,因此我们无法使用任何巧妙的编码。
那么,联合系统(X,Y)的熵是多少?
你可能会忍不住回答:「要弄清 X 需要 3 个问题,再弄清 Y 需要 2 个问题,因此总共需要 5 个问题才能弄清 X 与 Y 的状态。」
但如果这两个变量纠缠在一起,以至于知道 Y 的状态会告诉我们一些关于 X 状态的信息呢?
具体来说,假设 X 与 Y 要么都为奇数,要么都为偶数。
现在,如果我们收到一条 3 比特的消息(问 3 个问题),并得知 X 处于状态 X5,那么我们就知道 Y 处于状态 Y1 或状态 Y3,而不可能是状态 Y2 或状态 Y4。于是,只需要再问一个额外的问题:「Y 处于状态 Y3 吗?」当回答「否」时,我们就知道了(X,Y)的完整状态:X = X5,Y = Y1。而我们总共只用了 4 个问题就学到了这一点。
反过来,如果我们用两个问题得知 Y 处于状态 Y4,那么只需再额外问两个问题,就能知道 X 是处于状态 X2、X4、X6 还是 X8。同样,只需 4 个问题就能得知联合系统的状态。
两个变量的**互信息(mutual information)**定义为:联合系统的熵与独立系统熵之和之间的差值:I(X;Y) = H(X) + H(Y) − H(X,Y)。
在这里,这两个系统之间有 1 比特的互信息:了解 X 会告诉我们关于 Y 的 1 比特信息(把可能空间从 4 种可能缩减到 2 种,体积减少了 2 倍);而了解 Y 会告诉我们关于 X 的 1 比特信息(把可能空间从 8 种可能缩减到 4 种)。
如果概率质量不是均匀分布,会怎样?例如在上一篇文章里,我们讨论过这样一种情形:Y 的四个状态的概率分别为 1/2、1/4、1/8、1/8。让我们把它当作 Y 在独立情况下的概率分布——如果我们只看到 Y,而看不到其他任何东西,我们就会预期看到这样的分布。再假设变量 Z 有两个状态 Z1 与 Z2,它们的概率分别是 3/8 和 5/8。
那么,当且仅当 Y 与 Z 的联合分布如下时,Y 与 Z 之间的互信息为零:
| Z1Y1 : 3/16 | Z1Y2 : 3/32 | Z1Y3 : 3/64 | Z1Y4 : 3/64 |
||
| Z2Y1 : 5/16 | Z2Y2 : 5/32 | Z2Y3 : 5/64 | Z2Y4 : 5/64 . |
这个分布满足如下规律
P(Y,Z) = P(Y)P(Z) .
例如,P(Z1Y2) = P(Z1)P(Y2) = 3/8 × 1/4 = 3/32。
并且请注意,只要看联合分布,我们就能恢复 Y 与 Z 的边缘(独立)概率:
| P(Y1) | = | Y1 发生的所有不同方式的总概率 |
||
| | = | P(Z1Y1) + P(Z2Y1) |
| | = | 3/16 + 5/16 |
| | = | 1/2 . |
因此,仅仅通过检查联合分布,我们就能判断边缘变量 Y 与 Z 是否独立;也就是说,联合分布是否可以分解为边缘分布的乘积;亦即,对于所有 Y 与 Z,我们是否有 P(Y,Z) = P(Y)P(Z)。
这一点之所以重要,是因为根据贝叶斯法则,
| P(ZjYi) | = | P(Yi)P(Zj) |
||
| P(ZjYi)/P(Zj) | = | P(Yi) |
| P(Yi|Zj) | = | P(Yi) . |
换成白话就是:「在你得知 Zj 之后,你对 Yi 的信念和之前完全一样。」
因此,当分布可因子分解——当 P(Y,Z) = P(Y)P(Z)——这就等价于「了解 Y 永远不会告诉我们任何关于 Z 的信息,反之亦然。」
因此你也许会(并且是正确地)怀疑,Y 与 Z 之间没有互信息。没有互信息的地方,就没有贝叶斯证据;反之亦然。
假设在上面的分布(Y,Z)中,我们把 Y 与 Z 的每一种可能组合都当作一个独立事件——于是分布(Y,Z)总共有 8 种可能性,其概率如表所示——然后我们像计算任何分布的熵一样来计算分布(Y,Z)的熵:
P(Z1Y1)log2(P(Z1Y1)) + P(Z1Y2)log2(P(Z1Y2)) +
P(Z1Y3)log2(P(Z1Y3)) + … + P(Z2Y4)log2(P(Z2Y4))
= (3/16)log2(3/16) + (3/32)log2(3/32) +
(3/64)log2(3/64) + … + (5/64)log2(5/64) .
你最后会得到与分别计算 Y 的熵再加上 Z 的熵相同的总和。两个变量之间没有互信息,因此我们对联合系统的不确定性,并不会比把两个系统分别看待时更小。(我没有展示计算过程,但欢迎你自己做;我也没有展示这条结论在一般情况下成立的证明,但欢迎你去 Google 搜索「Shannon entropy」与「mutual information」。)
如果联合分布不能因子分解呢?例如:
| Z1Y1 : 12/64 | Z1Y2 : 8/64 | Z1Y3 : 1/64 | Z1Y4 : 3/64 |
||
| Z2Y1 : 20/64 | Z2Y2 : 8/64 | Z2Y3 : 7/64 | Z2Y4 : 5/64 . |
如果你把联合概率相加以得到边缘概率,你会发现 P(Y1) = 1/2、P(Z1) = 3/8,等等——边缘概率与之前相同。
但联合概率并不总是等于边缘概率的乘积。比如说,概率 P(Z1Y2) 等于 8/64,而 P(Z1)P(Y2) 则等于 3/8 × 1/4 = 6/64。也就是说,Z1 与 Y2 同时出现的概率,比仅根据它们各自出现的概率所推断的更高。
这又意味着:
| P(Z1Y2) | > | P(Z1)P(Y2) |
||
| P(Z1Y2)/P(Y2) | > | P(Z1) |
| P(Z1|Y2) | > | P(Z1). |
由于 P(Z1Y2) 的概率「异常高」——这里所谓「异常高」,指它高于边缘概率在默认情况下所暗示的水平——因此观测到 Y2 就构成了会提高 Z1 概率的证据。而用对称的论证也可得,观测到 Z1 必然会支持 Y2。
既然至少有一些 Y 的取值能告诉我们关于 Z 的信息(反之亦然),那么这两个变量之间就一定存在互信息;因此你会发现——我很有把握,尽管我其实并没有亲自核算——计算(Y,Z)的熵会得到比 Y 与 Z 的独立熵之和更小的总不确定性。也就是说,H(Y,Z) = H(Y) + H(Z) − I(Y;Z),并且所有量都必然为正。
(我在此稍作离题,指出互信息表达式的对称性表明:平均而言,Y 必然告诉我们与 Z 告诉我们关于 Y 一样多的信息。我把一个练习留给读者:把这一点与他们在逻辑课上学到的东西调和起来——譬如,如果所有乌鸦都是黑的,允许你推理 Raven(x) ⇒ Black(x) 并不意味着你也被允许推理 Black(x) ⇒ Raven(x)。贝叶斯主义者那种对称的概率流动,与逻辑那种尖锐的突跳相比,显得多么不同——尽管后者只是前者的一个退化特例。)
「可是,」你问道,「这一切和正确使用词语有什么关系?」
在空标签以及后来的用实质替换符号中,我们看到了一种技巧:用一个词的定义来替换这个词——书中给出的例子是:
所有 [会死的,¬有羽毛,双足的] 都是会死的。
Socrates 是一个 [会死的,¬有羽毛,双足的]。
因此,Socrates 是会死的。
那么,你为什么还想要一个表示「人类」的词呢?为什么不直接说「Socrates 是一个会死的无羽毛双足动物」呢?
因为对你经常遇到的事物,用更短的词会很有帮助。如果你用来描述单个性质的编码已经足够高效,那么除非那些既会死并且无羽毛并且双足的事物出现得比边缘概率会让你预期的更频繁,否则就没有必要为这种合取(conjunction)——比如用「人类」来表示「会死的无羽毛双足动物」——再设一个专门的词。
在高效编码中,词长对应概率——因此,Z1Y2 的码字会和 Z1 的码字再加上 Y2 的码字一样长,除非 P(Z1Y2) > P(Z1)P(Y2);在这种情况下,这个词的码字就可以比其各部分的码字更短。
而这又恰好对应于这样一种情形:我们可以从看到某些性质推断出该事物的其他一些性质。无羽毛的双足事物也会是会死的,这种情况必须比默认情况下更可能发生。
当然,「人类」这个词实际上描述了更多、更多的性质——当你看到一个具有人形、会说话、会穿衣服的实体时,你可以从中推断出成整串的生化、解剖以及认知事实。要把「人类」这个词替换成对我们所知关于人类的一切的描述,会要求我们花费过量的时间来谈话。但之所以会这样,仅仅是因为:一个无羽毛、会说话的双足动物,比默认情况下更有可能被铁杉毒死,或拥有宽指甲,或过度自信。
为某个事物提供一个词,而不是只罗列其性质,之所以能形成更紧凑的编码,正是因为在那些情况下,我们可以从其他性质推断出其中的一些性质。(或许有个例外:非常原始的词,比如「红」,我们会用它来传递对感官体验完全未压缩的描述。但当你遇到一只虫子,甚至一块石头时,你面对的就已经是并不简单的性质集合,远远高于原始层级了。)
因此,用一个词「wiggin」来指称绿眼黑发的人,会比直接说「绿眼黑发的人」更有用,恰恰在以下情况下:
-
绿眼的人比平均而言更可能是黑发(反之亦然),这意味着我们可以以概率意义从黑发推断绿眼,或从绿眼推断黑发;或者
-
wiggin 还共享其他一些性质,而这些性质也会以高于默认的概率被推断出来。在这种情况下,我们必须分别观测到绿眼与黑发;但随后,在独立观测到这两种性质之后,我们就能以概率意义推断出其他性质(比如喜欢番茄酱)。
人们甚至可以把给一个词下定义的行为看作对此的一种承诺。你对别人说:「我把『wiggin』这个词定义为指绿眼黑发的人,」在格赖斯(Grice)含义上,等于断言这个词「wiggin」会以某种方式帮助你做推断 / 缩短你的消息。
如果绿眼与黑发在一起出现的概率不高于默认值,并且也没有任何其他性质会以高于默认的概率与它们同时出现,那么「wiggin」这个词就是谎言:这个词宣称某些人值得作为一组被区分出来,但事实并非如此。
在这种情况下,「wiggin」这个词并不能让我们更紧凑地描述现实——它并不是由某个人发送最短消息时所定义出来的——它在最简单的解释中没有位置。等价地说,这个词「wiggin」对你做任何贝叶斯推断都不会有帮助。即便你不把这个词称为谎言,它也无疑是一个错误。
而沿着现实的天然关节切开现实的方法,就是把你的边界画在事物空间(Thingspace)中那些异常高的概率密度的聚集处周围。