此前我谈到过 与
之间的互信息,记作
,它等于联合概率分布的熵
与边缘分布的熵
之差。
我举过一个例子:变量 有 8 个状态,从
到
;在尚未遇到任何证据之前,它们的概率相等。变量
则有
到
共 4 个状态,同样在尚未遇到任何证据之前概率相等。于是我们计算边缘熵
与
,会发现
的熵为 3 比特,
的熵为 2 比特。
然而,我们还知道 与
要么同为偶数,要么同为奇数;关于它们之间的关系,我们只知道这一点。因此在联合分布
中只有 16 种可能状态,且都等概率,所以联合熵为 4 比特。与
与
独立时的 5 比特相比,这里少了 1 比特的熵——这 1 比特的熵缺口就是互信息:也就是
告诉我们关于
的信息(或反之亦然),使得在已知其中一个之后,我们对另一个就不再那么不确定。
不过,假设还存在第三个变量 。变量
有两个状态:「偶数」和「奇数」,与
的奇偶性完全相关。事实上,我们就假设
只是这个问题:「
与
是偶数还是奇数?」
如果我们对 与
还没有任何证据,那么在已知信息下,
自身必然有 1 比特的熵。
与
之间有 1 比特的互信息,
与
之间也有 1 比特的互信息。而且,如前所述,
与
之间也有 1 比特的互信息。那么,整个系统
的熵有多少?你也许会天真地以为:
但事实并非如此。
联合系统 只有 16 种可能状态——因为
只是这个问题「
与
是偶数还是奇数?」——所以
比特。但如果你按刚才给出的公式去算,就会得到:
(3 + 2 + 1 − 1 − 1 − 1) 比特 = 3 比特 = 错了!
为什么?因为如果你已经有了 与
之间的互信息,以及
与
之间的互信息,它们可能已经包含了我们将要计算的
与
之间互信息的一部分。在这个例子里,知道
为偶数会告诉我们
为偶数;知道
为偶数又会告诉我们
为偶数;但这和
会告诉我们关于
的信息是同一回事。我们对知识进行了重复计数[1],于是算出了过小的熵。
正确的公式(我相信)是:
这里最后一项 的意思是:「在我们已知
的前提下,
还能告诉我们的关于
的信息。」在这个例子里,一旦我们已经知道
,
就不会再告诉我们任何关于
的信息,因此这一项为 0——而方程就给出了正确答案。怎么样,妙吧?
「不,」你正确地回答道,「因为你并没有告诉我如何计算 ,只是给了我一个口头论证,说它理应为 0。」
我们计算 的方法正如你所料。我们知道
,因此:
现在,我想,你会想知道如何计算条件熵?嗯,熵的原始公式是:
如果我们随后学到一个新事实 ,那么我们对
的剩余不确定性将是:
因此,如果我们将要学到一个新事实 ,但还不知道会是哪一个
,那么平均而言,我们预计在那之后对
会有如下程度的不确定性:
这就是计算条件熵的方法;进而,我们就可以得到条件互信息。
这里还有各种各样的辅助定理,比如:
以及
如果 且
,那么
,
但我不打算深入这些内容。
「但是,」你问道,「这跟词语的本性以及它们隐藏的贝叶斯结构有什么关系?」
对你能提出这个问题我高兴得难以言表,因为我本来就打算不管你喜不喜欢都要讲给你听。不过在此之前,还有几条预备知识。
你会记得——是的,你一定会记得——互信息与贝叶斯证据(Bayesian evidence)之间存在一种对偶关系。互信息为正,当且仅当至少有一些联合事件 的概率不等于两个事件各自概率的乘积
。而这又恰好等价于
与
之间存在贝叶斯证据这一条件:
如果你是对 取条件,那么只需相应地调整整个推导:
最后一行读作:「即便已知 ,学到
仍会改变我们对
的信念。」
反过来,就像我们最初那个 为「偶数」或「奇数」的例子一样,
会把
与
屏蔽开[2]——也就是说,如果我们知道
是「偶数」,那么再得知
处于状态
,并不会再告诉我们任何更多关于
究竟是
、
、
还是
的信息;或者,如果我们知道
是「奇数」,那么再得知
是
,也不会再告诉我们任何更多关于
是
还是
的信息。一旦得知
,
与
便条件独立(conditionally independent)了。
条件独立是概率论中极其重要的概念——就举一个例子:如果没有条件独立,宇宙将毫无结构可言。
不过在这里,我只打算谈一种特定的条件独立:当某个中心变量把围绕它的其他变量彼此屏蔽开来——就像一个中央躯体伸出触手那样。
假设有五个变量 、
、
、
和
,并且这些变量的任意一对之间,都存在相互印证的关系。比如你选取
与
,那么已知
,会告诉你一些关于
概率的新信息。
这岂不是一团理不清的推断乱麻?证据满天飞?未必。
也许 表示「会说某种语言」,
表示「两条手臂与十根手指」,
表示「穿衣服」,
表示「会被铁杉毒死」,
表示「红色的血」。现在,如果你遇到一个「现实中的某个东西」——它可能是苹果,也可能是石头——而你得知这个东西会说中文,你就很可能大幅提高对它穿着衣服的概率估计;而如果你得知这个东西不会被铁杉毒死,你就会略微降低对它拥有红色血液的概率估计。
当然,这些规则里有的强、有的弱。比如 Fred 因为一次火山事故少了一根手指;Baby Barney 还不会说话;还有 Irving 这个 IRCBot,它能输出句子,却没有血。所以如果我们得知某个东西「没穿衣服」,这并不能屏蔽掉「会说话」对「血的颜色」所能告诉我们的一切:如果某个东西不穿衣服却会说话,那也许它就是 Nude Nellie。
这就使得这个例子比「五个整数变量要么全为奇数、要么全为偶数,但除此之外互不相关」那种情况更有意思。在那种情况下,只需知道任意一个变量,就足以屏蔽掉第二个变量对第三个变量所能告诉我们的一切。
但在这里,依赖关系并不会因为我们仅仅知道一个变量就立刻消失,Nude Nellie 的例子就说明了这一点。那么,这会变成一种无法处理的推断麻烦吗?
别怕!因为也许存在某个第六个变量 :如果我们知道它,它就真的会把任意一对变量彼此屏蔽开来。可能存在这样一个变量
——即便我们不得不去构造
而不是直接观察它——使得:
也许,在已知某个东西是「人类」这一前提下,它会说话、会穿衣服、拥有标准数量手指,这几件事的概率就彼此独立。Fred 可能少了一根手指——但他并不比别人更可能是个裸体主义者;Nude Nellie 从不穿衣服,但知道这一点并不会降低她会说话的概率;而 Baby Barney 虽然还不会说话,但也并没有缺胳膊少腿。
这就叫作「朴素贝叶斯(Naive Bayes)」方法,因为它通常并不完全为真,但假装它为真就能把你的计算简单得出奇。我们不会单独追踪「在给定手指数量时,穿衣与否对说话能力的影响」。我们只用所有已经观察到的信息,去追踪这个小东西是人类(或者是别的什么,比如黑猩猩或机器人)的概率;然后用我们对这个中心类别的信念,去预测我们尚未观察到的任何东西,比如它会不会被铁杉毒死。
对 、
、
、
和
的任何观测,都只是作为中心类别变量
的证据;随后我们用
的后验分布,去对
、
、
、
与
中那些尚未观测到的变量取值做出一切必要的预测。
听起来耳熟吗?应该的:

事实上,如果你使用合适类型的神经网络单元,这个「神经网络」最终会与朴素贝叶斯在数学上完全、严格等价。中心单元只需要一个 logistic 阈值——一种 S 曲线响应——而输入的权重只需要匹配似然比对数(logarithms of the likelihood ratios)等诸如此类的量。实际上,这大概也是 logistic 响应在神经网络中常常如此好用的原因之一——它让算法在设计者不注意的时候,悄悄塞进了一点贝叶斯推理。
仅仅因为有人给你呈现了一个他们称之为「神经网络」的算法,上面贴满了「scruffy」「emergent」之类的流行词,并且还自豪地声明他们完全不知道学出来的网络是怎么工作的——你也别因此就以为他们的小 AI 算法真的「超越逻辑的疆界」。对于这种临时拼凑的范式来说,如果它能奏效,就会被发现具有某种贝叶斯结构;它甚至可能与某类所谓「贝叶斯」算法完全等价。
即便表面上看起来不像贝叶斯也无妨。
然后你就知道那些贝叶斯主义者会开始解释:这个算法究竟如何工作,它反映了哪些底层假设,它利用了哪些环境规律[3],它在何处有效、又在何处失灵;他们甚至会给已训练的网络权重赋予可理解的含义。
真令人失望,不是吗?
总目录:
《理性:从人工智能到僵尸》导读与目录卷:
第三卷:灵魂中的机械章节:
人类词语指南上一篇:
超指数级的概念空间与简单的词语下一篇:
作为心智画笔抓手的词语Thoughts Memo 汉化组译制
感谢主要译者 SAIWA,校对 Jarrett Ye
原文:Conditional Independence And Naive Bayes
参考
1. 虚假的因果 https://hpmor.xyz/ai2zb_33/2. 论证对权威的屏蔽效应 ./5712542671.html
3. 互信息与事物空间中的密度 ./2059600041661272639.html