文 | Giancarlo Frison
编 | 贾伟
如果你收到一封邮件,邮件内容全是你没有见过的符号;但你有一份中文版的说明手册,这个手册能够告诉你如何将这些符号连接起来。现在你的任务是,根据这个手册将这些符号连接起来,并回复给原邮件。
这个流程可以类比:邮件是一组问题,说明手册是计算机程序,回复的邮件是计算机输出结果。
同样你又收到另外一封邮件,这封邮件与第一份表达的是相同的信息,但内容却是用中文写的:顾客走进餐厅,点了份牛排,上菜后发现牛排烧焦了,顾客愤怒的离开了餐厅却没有付钱。问:顾客吃牛排了么?
在第一封邮件中,你可以根据手册非常精准地用“奇怪的符号”表达出正确的内容,虽然你并不理解这些符号的含义。
而在第二封邮件中,毫无疑问,你能够完全理解,也因此能够很好地回答问题。
但对于接受者来说,他很惊讶,因为两封邮件都回答”正确“了,因此他会认为你不光是精通中文,还同样精通那种奇怪的符号语言——尽管事实上你只是根据程序执行了给定的命令,而对这些符号语言一无所知。
以上便是“中文屋”的一个变体。
所谓“中文屋”,最早由美国哲学家John Searle于20世纪80年代初提出。这个实验要求你想象一位只说英语的人身处一个房间之中,这间房间除了门上有一个小窗口以外,全部都是封闭的。他随身带着一本写有中文翻译程序的书。房间里还有足够的稿纸、铅笔和橱柜。写着中文的纸片通过小窗口被送入房间中。
根据Searle,房间中的人可以使用他的书来翻译这些文字并用中文回复。虽然他完全不会中文,Searle认为通过这个过程,房间里的人可以让任何房间外的人以为他会说流利的中文。
这个实验其实是反驳了图灵测试,Searle认为理解才是一个智能生命的前提,而不是图灵测试中描述的那些无关的细节。
然而,尽管Searle的观点在直觉上无可辩驳,但什么才是真正的理解呢?它如何能够被简化或分解成更小的可实现的单元呢?以及获得「理解」这种能力的必要条件是什么呢?我们要深入到理解的过程当中,才能够回答这些问题。
1
理解的基础
“理解”(Understand)的同义词是“掌握”(to grasp),类似于日常对话中的“明白了”(got ti)和“领会”(catching it)。这个词出现在许多不同的语境里,例如
但所有这些「理解」归结起来只有两种,一种是反射性的理解,一种是“印刻”的理解。
我们以骑自行车为例,在最初学习骑自行车时,我们会进行有意识地、密集地、费力地练习,这个过程中你的大脑神经会不断进行调整,去「理解」骑自行车那种技能。最终这种技能会「印刻」在你的脑子里,再也不会忘记。当再次骑车时,这个理解模型就会运转起来。
同样的,对一门语言的理解也是相似的过程,我们需要进行大量有意识的学习,才能最终理解,能够流畅地应用这门语言。
理解的基础是大量学习后获得的模型。
2
理解是一个迭代过程
作为学生,有一种神话是我们应当放弃的,即存在所谓的天才,他能够迅速地理解一切,抓住核心要点。
正确的姿势应该是去相信所有人都是「渐进学习者」,若想理解一个概念,就需要花费时间,不断去练习,通过努力来持续不断地完善对这个概念的理解。
这个过程的本质就是不断地去创造(或清除)概念之间的认知路径,而这需要消耗能量,不断迭代才能完成。
我们以缝纫机实验为例:
我们每个人都知道缝纫机的用途,但它的工作原理大多数人并不清楚。在这个实验中,要求志愿者尝试去理解一台缝纫机的工作原理。
事实上这个理解过程是分层次和不断迭代的。
第一层次:你要理解「缝纫机」这个概念,明白这台机器的基本功能是缝线。这个过程对人来说难吗?对于成年人来说似乎显而易见,但对于一个第一次见到缝纫机的孩子来说就需要观察一段时间来理解这个概念了。但这只是理解的开始。缝纫机缝线的原理是什么呢?
第二层次:通过仔细的观察,我们会发现缝纫机在缝线时,有上下两个线程的循环。但奇怪的是,缝纫机通过何种方式做到两个线程之间拓扑结构的改变呢?拓扑的难题带领我们进入了第三层次的理解。
第三层次:我们通过如下的动画,终于理解了缝纫机是怎么改变两个不同循环的线程之间的拓扑结构,让它们连接在一起的:底部的线穿过了有缺陷的筒子。
这三个层次的理解过程充分说明了理解的模式:为了理解某个概念在级别 n 的机制,就必须理解它在前一个级别(级别 n-1 )的机制。
这种模式也正是所有科学发现的基本模式。当一个科学理论(例如牛顿力学)被发现以后,人们会对它提出质疑(莫雷实验),并继续深入到下一个层次的理解(相对论)。
重复的搜索-质疑-再搜索-再质疑,这个过程正是反事实模拟的核心思想,即通过提出“what-if-things-are-different”的疑问来不断搜索更为近似的理论。
这里需要强调一点,在整个过程中,对已有理解的批判(缝纫机缝线的原理是什么?)是进入下一阶段理解的关键一步——如果不是莫雷实验对牛顿力学提出的挑战,爱因斯坦也不会提出相对论。
3
理解,取决于层级
关于什么是「理解」,事实上取决于你所要求的层级。
还以缝纫机为例。对于大多数人来讲,理解了「缝纫机能够缝线」这个层次便已经足够了;但对于设计的工程师来讲,就必须理解缝纫机是如何改变两个线程的拓扑结构(或许还不止于此)。
同样,对于大多数人,理解了牛顿力学,便可以声称理解了世界运行的规律;但对于研究材料的人,就必须学习量子力学才能够说出「理解」;而对于物理学家,尽管他们的「理解」已经深入到原子核以下,但仍然认为自己还没有「理解」世界是如何运行的。
所以,如果理解一个思想意味着 agent 应该能够解释为什么它是这种情况,那么我们应该给理解限定一个层级。
在这种意义上,「理解」需要一个最终的解释。在数学中,这个最终的解释就是数学公理,它们是其他一切理论的前提和基础。它们的正确性并没有证明,人们公认它们是正确的,不需要再进一步证明。同样,在计算机程序中,程序给出运算结果,当我们不断深入「理解」时,最终,我们会有一个最终的解释:I did that because you asked me to。
4
理解就是压缩
理解本身是什么呢?
当给你一段随机数字序列,唯一能够对它的理解就是序列本身。这时候,我们能够说「我们理解了这个数列」吗?显然不会,这正像你用一堆数据来「理解」数据本身一样,你的理解与数据本身的信息量完全相同。
所谓理解,其本质就是在追求信息量的压缩。在科学中有“奥卡姆剃刀”的原则,即最简单的解释往往是最正确的解释。因此能够处理一项任务最小的程序,实际上也是对这项任务最佳的理解。
因此,我们完全可以说:理解就是压缩。
从这个意义上来讲,针对一个共同的任务,在保证效果的情况下,越小的模型,其「理解力」就越强。
5
理解的心智模型
在这篇文章中,我多次提到心智模型的本质,即某种记忆结构,agent可以在弹性性能范围内对它进行操作及修正。
首先,需要保证的是「弹性性能范围内」。对模型的操作和修正必须保证模型本身仍然可以正常运行。
当输入新的信息,agent会有两种不同的方式使用记忆结构:自下而上和自上而下。
1)在自下而上的方式中,来自现实世界的信息会与过去的记忆进行匹配,将当前的事件与已知的经验进行匹配;
2)这种激活,会引发一种自上而下所有可能关系的查询,并从中找到最为突出的可能性;
3)如果发现这种在已知的经验中没有找到这种最佳匹配,那么就推翻已有的基础假设,并重新构建一个,直到与输入数据保持一致。
这个模型中告诉我们,agent 应当超越实际的输入信息,在模型调整之前便已经有了相应的经验基础,它的解释包含有输入数据所不涉及的信息。
Via https://gfrison.com/2020/what-is-understanding