哲学随笔3#

24 December 2022

人工智能与黑格尔:被忽视的对话

为学日益,为道日损。损之又损,以至于无为。 – 《道德经》

最近读的书有点杂,被封在家里,突然有了意料之外的时间来随意打发,就看了一些计算科学和人工智能的书,记录下一些感受。

某日,读到”框架问题”这个概念,突然感觉冥冥之中记忆深处某些熟悉又陌生概念在蠢蠢欲动。它说的那件事,我们每天都在替一台台机器承担,却很少有去想,它究竟有多难。假设晚高峰的路上,前车突然急刹。一辆自动驾驶的汽车要在一瞬间做决定——它既要预测刹车会带来哪些后果,好避开追尾,又要同时排除掉那些毫不相关的可能性,比如”我这一脚刹车,会不会影响三公里外某座山头的风向”。这两件事缺了任何一件,这辆车都谈不上真正在开。可我后来才慢慢想明白,真正难的并不是”预测后果”——那个再笨的系统也能硬算——而是”自动知道哪些可以忽略”。人和机器的分野,恰恰藏在这件谁都不在意的小事里。

在符号主义的人工智能(McCarthy & Hayes 1969)里,答案无外乎让程序员事先把”何者与何者无关”写成一条条框架公理。可你越写越会发现,这条路根本走不通:既然你能写下”这辆车刹车与那座山头的风向无关”,你马上就能再写”这辆车刹车与今夜上海的天气无关”,接着是”与楼下那盆多肉的光合作用无关”……无穷无尽。要么程序员在罗列时被磨穿了耐心,要么系统在检索时被拖垮了性能。如今连接主义的人工智能虽然不是这样一条条手写规则教出来的,它们是靠海量数据喂出来、让权重自己长出来的,但是框架问题的影子并没有因此消失:它只是换了个藏身的地方——从”程序员写下的规则”,钻进了”训练数据里悄悄学到的相关性”,藏得更深。看着这条小小的断头路,我忽然想起了塞尔那场关于”中国屋”的争论——机器只在句法层摆弄记号,够不着句法背后的意义,而”相关”与”无关”,偏偏是意义层面的判断。框架问题,原来是在用它的方式,替我们把那个陈年的疑问重新问了一遍:计算机在句法上的机械操作,到底怎样才能真正地规定出超越机械操作的语义内容?

这时候,那个熟悉又陌生概念就这么莫名地出现在我的脑海里:这种弯弯绕绕的问题,跟两百年前一个爱写长难句子的德国人有什么关系?我承认,一开始我是有点想笑的——黑格尔不是那种从”感性确定性”一路做加法、推到”绝对知识”的整体主义者吗?框架问题要的是做减法,向一位爱宏大叙事的哲学家求助,听起来就像向一位收藏家借橡皮。但仔细想想,黑格尔说的”绝对知识”,根本不是一本收罗一切经验事实的百科,而是一种关于”经验知识如何被组织起来”的知识,或者说:元知识。想到这一层时我顿了一下——是啊,一个系统真正缺的,从来不是更多的事实,而是那套把事实安排得服服帖帖的高阶规则。如果它能掌握这套元知识,它就更能灵活地安排经验、绕开无穷罗列的困境。对于如今的人工智能而言,黑格尔《逻辑学》的价值,因此不是一套玄秘的辩证法,而是一套”如何给相关性分派不同层面工具”的架构。

不过要消化这个说法,得先对记忆里《逻辑学》中的概念做一次祛魅。教科书习惯把黑格尔的”辩证逻辑”当成和康德的”普通逻辑”“先验逻辑”并列的第三条分支,这个印象我也有。但是,从人工智能的语义概念出发,这三者根本不在一个平面上:世界上只有一种逻辑,就是黑格尔自己的《逻辑学》,康德的两种逻辑不过是它在不同反思层次上的显现罢了。说实话,单凭直觉我不太信,可他的文本证据让我没法反驳——黑格尔在《概念论》里大段地讨论三段论,可三段论分明属于”普通逻辑”;他在《本质论》里又把康德的范畴表整个盖了一遍,那又分明属于”先验逻辑”。既然”辩证逻辑”能涵摄另外两种,它就不是一个并立的新门类,而是那个更根本的”语义逻辑”。所谓语义逻辑,是指它处理的不是真值表形式下的推理,而是意义之间的推理。有个例子我特别喜欢:假定你写下”这是一辆纯电动车,所以它不是烧汽油的”——这个推理直觉上成立,可它成立不是因为任何判断逻辑命题真假的真值表,而是因为”纯电”和”烧汽油”在意义上彼此排斥。框架问题需要处理的,正是这种能摸到语义相关性的逻辑。

把这部《逻辑学》对到人工智能上,三大板块就对应着三种由浅入深的相关性命中工具,这一层我越想越觉得通透,越想越觉得激动。

最简单的是”是(Sein)论”,处理最朴素的主谓判断——”S 是 P”,它的相关性考量只在乎主语和谓词之间有没有联系,最接近统计式、归纳式的智能。其次是”本质论”,它不满足于一个判断,而是对判断本身再判断:这个判断是必然为真、可能为真,还是偶然为真?它背后的根据是什么?于是牵出本质、现象、因果这些范畴,这部分最接近符号主义的一阶谓词逻辑。在这个意义上讲,传统符号主义人工智能比目前主流连接主义的统计学意义上的人工智能站在更高的哲学地位。

现在的大模型看上去好像能洞悉因果,理解现象,但骨子里是连接主义统计学那一路,对应的是“是论”那一层,甚至比它更”底层”,跟一阶谓词是完全不同的范式。要看清这一点,得戳破这层错觉——那恰恰是大模型最容易唬到人的地方。大模型它学的是相关性(我更喜欢用“共现co-occurrence”),不是因果结构。它的训练目标只有一个:给定上文,预测下一个 token 的概率。它从语料里学到的是一堆共现的统计——”灭火器”常跟”火灾”一起出现,”打雷”常跟”闪电”一起出现。它学的是”这些词经常挨着”,不是”A 导致 B”。因果(causation)需要的是干预和反事实——”如果我动一下 A,B 会怎么变?”——这需要真正在世界模型上做 do 操作(Do-Calculus,Pearl,1995),而统计共现它给不了。之所以大模型给人感觉好像能观察因果,是因为它的输出正好是顺料的流畅叙事,本质上不是推理(虽然术语叫做“推理”,但我更愿意叫它做“解码”)。 你问”花瓶为什么碎了”,它回答”因为小狗撞的”——语感上完全是因果句。但这是它见过无数句”因为…所以…”,练出了顺口的因果腔(因为它学习了共现),不是它先构建了一个”小狗撞→花瓶碎”的因果模型再推导。所以它能一本正经地编造错误的因果(幻觉,学习了错误的共现),你不细看根本发现不了。真正的因果推理它干不好。因为,因果和逻辑的试金石是反事实 + 域外泛化:问它”如果全世界公鸡都哑了,太阳还照常升起吗?”它大概率答得对(因为它见过太多”太阳与公鸡无关”的文本);可一旦问一个它没见过的组合、或要求它做严格多步的、不允许跳步的演绎,它就开始飘——逻辑谬误、算术算错、越推越离谱。一个真正的因果/逻辑模型应该能稳定处理这些,而大模型做不到,它 forward pass 就是一堆矩阵乘法 + softmax,最后输出一个始终固定的词表上的概率分布。这里面没有变量绑定、没有量词作用域、没有任何一条推理规则被”执行”、没有证明。它本质是 f(context) → P(next token),是统计函数,不是逻辑机。正因为 LLM 内核做不了硬逻辑和真因果,工程上才会把一阶谓词那类符号引擎挂在外面:让 LLM 写好一阶谓词公式、再丢给独立的定理证明器或求解器(neuro-symbolic 混合);或者让它调计算器、写代码、跑一个验证函数(tools calling / agentic)。这一步”外挂”恰恰暴露了内核不行、必须借外力——而不是它自己会一阶谓词逻辑。

最复杂的是”概念论”,它要对主体所处的整体形势做高阶评估,连”判断”“三段论”这种用来生产判断的工具本身都要被反思——这部分要用的,恰恰是处理”相关性判断”的元工具,只有那种会被问到宇宙学、神学与形而上学这类抽象难题的高级机器,才真正用得着。想到这里,我突然明白了框架问题的另一面:原来”相关性”这个词本身就太模糊,不同层面的相关性要用不同的工具箱,而黑格尔提供的,正是一整套分层的架构。

深入”是论”,有两处让我反复回味。为什么要从”是”这个系词开始?早期维特根斯坦会说,这个字太暧昧,把”同一性”“属于”“存在”三种意思混在了一起,理应拆成不同的技术谓词。这个说法我一开始也觉得挺有道理。可是:你说要拆开“是”,其实已经预设了存在一种一次性能把所有基本谓词界定清楚的终极方案——这正是海耶斯想用一阶谓词逻辑整编全部人类常识的天真梦想,到头来被麦克德默特一句话点破,说会导致”基本谓词膨胀”,因为你这辈子都列不完一份足够完整的基本谓词表。黑格尔的做法,是反过来化繁为简:与其一开始就穷举谓词,不如先看这些谓词共享的那个”统一性”功能——把不同表象凝成一个整体的功能——而再没有比”是”更能承载这个凝合动作的了。我试着用自己的话感受了一下:说”这杯咖啡是冰的”,”是”把”这杯咖啡”和”冰的”凝成了一种状态;说”这杯咖啡就是这杯咖啡”,”是”把左右两个记号在类型上合成同一个东西;说”这杯咖啡存在”,这个变身成”存在”的”是”又把主语和一连串没出口的支撑谓词——比如”它是在楼下那家店现磨的”“它刚被付过钱”——暗中勾连了起来。三种完全不同的用法,靠的却是同一个”凝合”功能。更有意思的是,我忽然想到,连那些反对黑格尔的技术方案,其实都在悄悄预设他要讲的东西:贝叶斯网络里连接事件的那个箭头,向量空间模型里衡量语义距离的那个度量,说到底都是把这个”凝合”谓词换了个量化的方式而已。

但真正让我后背一凉的,是”变(Werden)”这个范畴。在”是论”里,”是”“否”“变”是前三个范畴——”是”肯定,”否”否定,而”变”是两者的统一:说”甲在变”,既肯定了甲的”是”(它存在),又否定了甲的”否”(它旧的状态)。我一开始只觉得这概念真漂亮,但一联系到目前的人工智能,我整个人就不好了:符号主义人工智能和目前主流的连接主义人工神经网络,骨子里都是”无时间”也”无变化”的。人工智能系统的结论,其实在演绎之前就已经蕴含在前提里,前提从不会被实质地修改;一阶谓词逻辑里,”Werden(x)”和”Sein(x)”在句法上长得一模一样,根本分不出谁在变;神经网络只在训练时变,一训练完成,它只会按固定的模式把输入映射成输出——一个能认出”下雨”和”天晴”两个状态的视觉模型,却认不出”从晴转雨”那一段过程,它压根没有”正在变”这个范畴;贝叶斯网络能改边的权重,却改不了自己那张有向无环图的拓扑结构。顺带说一句,这个”变”并非德语的私货,日语一个”なる”把”变成”“即将如何”“被怎样”拢进同一个词里,处处透着对象自身经历的流转,不似中文的”变”那样只盯着结果的差别。正因为主流人工智能如此”无变化”,框架问题才格外棘手——任何理想的方案,都得让智能体有能力用”变”这个范畴,知道语境甲里 A、B 不相关,换到语境乙里它们就相关了。而这个”语境变迁”,恰恰等于”时间流逝”加上”范畴变化”,偏偏是主流人工智能都做不到的。

想到这里,我忍不住问了自己一个问题:那我在网上看到的那种”AI 生成一张人脸从年轻变到年老”的视频,是不是就算处理了”变”?想了半天,我觉得不算——那是”变”的影像,不是”变”本身。那类生成模型在推理时权重是冻结的,它不过是拿同一个固定的映射,把不同的年龄参数过了一遍,输出一张张脸。它是一段无状态的纯函数,一点都没变,更谈不上自我修正。更重要的是,视频里相隔几十年的两张脸,生成器并不知道那是同一个人;把这不同的帧串成”同一个人在变老”的,是我这个坐在屏幕前的观看者。而”认出跨时间片段的碎片仍旧是同一个主体”,恰恰是黑格尔式的”变”最看重的那一层。一个只会描绘变化、却不具备”变化”这个范畴的系统,并没有真的处理”变”。

那么今天这套一轮轮迭代大模型的 RLHF 后训练机制,是不是终于碰到”变”了?我承认它比视频进了一大步——它确实在改系统本身,而不是改系统输出里的内容,这点它跳出了”内容变”的陷阱。可仔细一想,它仍然不是黑格尔意义上的”变”,而且缺的正是那三样东西。第一,RLHF 的动力是外部的:梯度来自人类偏好或者奖励信号,从始至终都是由外部的目标函数在推着权重走,而不是系统自己在推理里撞见矛盾、觉得不对劲,然后主动想拧过来。推动”是—否—变”运转的那个认知野心,来自欲望与生命;而 RLHF 是被”推”着变,不是自己”想”着变。第二,改动发生在训练回合之间,而不是推理过程中:一旦部署,推理时的权重依旧冻结。框架问题恰恰需要系统在运行的那一刻,发现语境变了,当场调整自己的相关性判断,而 RLHF 产出的依然是个部署后就不再动的静态函数,只不过是被调优过罢了。第三,RLHF 调整的是概率,不是范畴:它在一个固定的词表、一个固定的架构里,重新分配那些早就存在的潜在概念的权重,它没法在运行时因为撞到矛盾,就发明出一个此前不存在的中介谓词。说到底,RLHF 是”系统被人在一次次训练里变得更好”,而黑格尔要的”变”是”系统自己在运行时发现不对而改变”——前者是外部迭代,后者是内部生成,后者恰恰落在框架问题所在之处。想通了这一层,我反而对现在的大模型少了几分敬畏,多了几分清醒。

把”辩证逻辑”放在这个背景下重新看,它的真面目才算露出来:它根本不是和形式逻辑并立的一种新逻辑,而是对认知主体探索真理的基本步骤的一种概括。你可能也会像我一样想——那所谓矛盾,不过是时间在捣鬼,比如”这家餐厅以前很好吃,现在难吃了”,把两个时刻的谓词分开看不就没事了?我以前也这么觉得。可对人工智能来说,这种”祛辩证法”反而让框架问题更重:为了让”好吃”和”难吃”不打架,你得给每一个判断强行标上一个时间坐标,而系统要记的信息量就因此暴涨,在有限的时间预算里更难做出”什么相关”的取舍。黑格尔干脆不让时间显形,直接说”这家餐厅既好吃又难吃”,句子精简了,却把矛盾留下来当推动认知前进的火种。顺着这个思路,他把”是—否—变”的推演还原成一段可以画成流程图的宏观策略:先有观察得出”S 是 P”;新的观察又给出”S 非 P”;主体发现矛盾,于是努力找一个中介谓词 Q,好让两批证据都能成为”S 是 Q”的依据;可到了更高一层,新的证据又支持”S 非 Q”,于是重启找词的步骤……直到找到一个能调和一切矛盾的超级谓词,构成”绝对知识”。这几乎就是纽厄尔与司马贺的”通用问题求解器”里那套”目标—手段”进路。到这里我忽然有点感慨:黑格尔不是给人工智能送来一套神奇的逻辑,而是送来一套”如何一步步逼近真理”的认知流程。它朴素得不像一个哲学家该有的样子,却又扎实得让人服气。

教科书一直说,《逻辑学》是认识论、形而上学与逻辑学的统一,它本身就是形而上学。可按现代的标准,形而上学的核心是关于”何物存在”的本体论承诺,那你很难在《逻辑学》里找到一个清晰的本体论承诺——一个温和的唯名论者,为什么不能用”是”“非”“变”这些范畴,而不去设定它们对应的外部对象存在?黑格尔没有给出答案;真要硬把这些范畴当成外部对象,他的整个哲学反而会显得荒诞。况且量子力学和场论这些发现,对贯穿《逻辑学》的主谓式思维也并不友好。于是唯一能救《逻辑学》的办法,就是承认它是一部关于”认知主体如何理解世界”的认知逻辑,而不是一部关于”世界自身如何存在”的形而上学。我起初觉得这个说法太矜持,可转念一想,人工智能和认知科学恰好是重述它的合适平台——它们和认知逻辑一样,都是给主体而不是给世界建模;同时,正因为一阶谓词逻辑深深塑造了主流人工智能,它就成了一个完美的对照物,既能暴露那种思维方式的缺陷,又能反衬黑格尔式逻辑的相对魅力。所以这场对话,不单是替人工智能把脉,也是在替黑格尔洗去蒙尘的名声。

绕了这么一圈,我想留给自己的,是一点比知识更沉的东西。我们总觉得智能的增长,是往大脑里塞进越来越多的事实;可真正难倒机器的,从来不是事实太少,而是它不知道什么该被忽略。老子早在两千多年前就把这层悖论点破了——”为学日益,为道日损。损之又损,以至于无为。”学,是越攒越多;道,却是越舍得放下越多。人工智能像个不知疲倦的学子,一心”日益”,恨不得把人间所有真理都囫囵吞进去;可它偏偏缺了那个更难的功夫——”日损”,知道什么可以放下。而”什么该被忽略”这件事本身就是活的:它随着世界的流转、语境的迁移而变化,昨天还无关的,今天可能就切中要害。黑格尔用一个”变”字,把”相关性自身也在流动”这个真相点破了。”损之又损,以至于无为”,在老子那里是修道者抵达的极致;放到今天的机器面前,却成了它离真正的智能还差的那一步——不是学得不够多,而是放得还不够干净。这句两千多年前的经典,却对着一个他做梦也想不到的”机器是否聪明”的问题,留下了今天最值得我反复咀嚼的一句话。人工智能和黑格尔,这对被主流学术史放在两条不相干轨道上的名字,原来从始至终都在谈同一件事:如何让一个只知道摆弄符号的东西,懂得什么是真正要紧的。

后记:本文写于 2022 年疫情上海居家隔离期间,后来就换了电脑,老电脑上存了不少之前写的随笔,最近在慢慢整理中,顺便补充一些最新的理解和感悟。


Fork me on GitHub