人类的大脑肯定拥有某种简洁的信息表示方式,同时还拥有某种十分有效的程序用以正确解释每个问题,并从存储的信息表示中提取正确答案。因此,为了通过迷你图灵测试,我们需要给机器装备同样高效的表示信息和提取答案的算法。
事实上,这种表示不仅存在,而且具有孩童思维般的简洁性,它就是因果图。我们此前已经看到一个关于长毛象狩猎成功因素的图例。鉴于人们能轻而易举地用点和箭头构成的图来交流知识,我相信我们的大脑一定使用了类似的表示方法。但就我们的目的而言,更重要的是让这些模型能通过迷你图灵测试,这是目前其他已知的模型都做不到的。让我们先看一些例子。
如图1.4所示,我们假设一个犯人将要被行刑队执行枪决。这件事的发生必然会以一连串的事件发生为前提。首先,法院方面要下令处决犯人。命令下达到行刑队队长后,他将指示行刑队的士兵(A和B)执行枪决。我们假设他们是服从命令的专业枪手,只听命令射击,并且只要其中任何一个枪手开了枪,囚犯都必死无疑。
图1.4 行刑队例子的因果图(A和B分别代表士兵A和B的行为)
图1.4所示因果图即概括了我刚才讲的故事。每个未知量(CO,C,A,B,D)都是一个真/假(true/false)变量。例如,D=真,意思是犯人已死;D=假,意思是犯人还活着。CO=假,意思是法院的死刑命令未签发;CO=真,意思则是死刑命令已签发,以此类推。
借助这个因果图,我们就可以回答来自因果关系之梯不同层级的因果问题了。首先,我们可以回答关联问题(一个事实告诉我们有关另一事实的什么信息)。一个可能的问题是,如果犯人死了,那么这是否意味着法院已下令处决犯人?我们(或一台计算机)可以通过核查因果图,追踪每个箭头背后的规则,并根据标准逻辑得出结论:如果没有行刑队队长的命令,两名士兵就不会射击。同样,如果行刑队队长没有接到法院的命令,他就不会发出执行枪决的命令。因此,这个问题的答案是肯定的。另一个可能的问题是,假设我们发现士兵A射击了,它告诉了我们关于B的什么信息?通过追踪箭头,计算机将断定B一定也射击了。(原因在于,如果行刑队队长没有发出射击命令,士兵A就不会射击,因此接收到同样命令的士兵B也一定射击了。)即使士兵A的行为不是士兵B做出某一行为的原因(因为从A到B没有箭头),该判断依然为真。
沿着因果关系之梯向上攀登,我们可以提出有关干预的问题。如果士兵A决定按自己的意愿射击,而不等待队长的命令,情况会怎样?犯人会不会死?这个问题其实已经包含矛盾的成分了。我在上一段刚刚告诉你士兵A仅在接收到命令时射击,而现在我却问你,如果他在没有接到命令的情况下射击会发生什么。如果你像计算机常做的那样,只知道根据逻辑规则进行判断,那么这个问题就是毫无意义的。就像20世纪60年代科幻剧《星际迷航》中的机器人在此状况下常说的:“这不能计算。”
如果我们希望计算机能理解因果关系,我们就必须教会它如何打破规则,让它懂得“观察到某事件”和“使某事件发生”之间的区别。我们需要告诉计算机:“无论何时,如果你想使某事发生,那就删除指向该事的所有箭头,之后继续根据逻辑规则进行分析,就好像那些箭头从未出现过一样。”如此一来,对于这个问题,我们就需要删除所有指向被干预变量(A)的箭头,并且还要将该变量手动设置为规定值(真)。这种特殊的“外科手术”的基本原理很简单:使某事发生就意味着将它从所有其他影响因子中解放出来,并使它受限于唯一的影响因子——能强制其发生的那个因子。
图1.5表示出了根据这个例子生成的因果图。显然,这种干预会不可避免地导致犯人的死亡。这就是箭头A到D背后的因果作用。
图1.5 关于干预的因果推理(士兵A自行决定射击;从C到A的箭头被删除,并且A被赋值为真)
请注意,这一结论与我们的直觉判断是一致的,即士兵A擅自射击将导致犯人死亡,因为“手术”没有改动从A到D的箭头。同时,我们还能判断出:B(极有可能)没有开枪,A的决定不会影响模型中任何不受A的行为的影响的其他变量。我们有必要重述一次刚才的结论:如果我们“看到”A射击,则我们可以下结论——B也射击了。但是如果A自行“决定”射击,或者如果我们强制“使”A射击,那么在此种情况下,相反的结论才是对的。这就是“观察到”和“实施干预”的区别。只有掌握二者差异的计算机才能通过迷你图灵测试。
需要注意的是,仅凭收集大数据无助于我们登上因果关系之梯去回答上面的问题。假设你是一个记者,每天的工作就是记录行刑场中的处决情况,那么你的数据会由两种事件组成:要么所有5个变量都为真,要么所有都为假。在未掌握“谁听从于谁”的相关知识的情况下,这种数据根本无法让你(或任何机器学习算法)预测“说服枪手A不射击”的结果。
最后,为了说明因果关系之梯的第三层级,我们提出一个反事实问题。假设犯人现在已倒地身亡,从这一点我们(借助第一层级的知识)可以得出结论:A射击了,B射击了,行刑队队长发出了指令,法院下了判决。但是,假如A决定不开枪,犯人是否还活着?这个问题需要我们将现实世界和一个与现实世界相矛盾的虚构世界进行比较。在虚构世界中,A没有射击,指向A的箭头被去除,这进而又解除了A与C的听命关系。现在,我们将A的值设置为假,并让A行动之前的所有其他变量的水平与现实世界保持一致。如此一来,这一虚构世界就如图1.6所示。
图1.6 反事实推理(我们观察到犯人已死,据此,我们提出这样一个问题:假如士兵A决定不射击,会发生什么?)
为通过迷你图灵测试,计算机一定会得出这样的结论:在虚构世界里犯人也会死,因为B会开枪击毙他。所以,A勇敢改变主意的做法也救不了犯人的命。实际上,这正是行刑队存在的一个原因:保证法院命令的执行,也为每个枪手个体减轻一些需要担负的责任,枪手可以(在一定程度上)问心无愧地说,并非他们的行动导致犯人的死亡,因为“犯人横竖都会死”。
看起来,我们刚刚像是花了很大一番力气回答了一些答案显而易见的小问题。我完全同意你的判断。因果推理对你来说很容易,其原因在于你是人类,你曾是一名三岁的儿童,你所拥有的功能神奇的大脑比任何动物或计算机都更能理解因果关系。“迷你图灵问题”的重点就是要让计算机也能够进行因果推理,而我们能从人类进行因果推断的做法中得到启示。如上述三个例子所示,我们必须教会计算机如何有选择地打破逻辑规则。计算机不擅长打破规则,这是儿童的强项。(穴居人也很擅长,不违背“什么头配什么身体”的规则,他们就不可能创造出狮人雕塑。)