1950 年,英国数学家阿兰•图灵(Alan Turing)提出了图灵测试(Turing Test)的概念,以测试机器是否能够像人类一样进行思考。基本形式是机器程序与人之间的简短对话。如果一个机器程序能够骗过判断者,使其误认为是人类所答,则该程序通过测试。
图灵的初衷是希望为类人人工智能提供测试的标准,并且预测了到 2000 年会有机器能够通过测试。但在 2014 年第一个通过测试的机器才出现。一个俄罗斯团队开发的一款聊天软件通过了测试。在测试中,该聊天软件模仿一名来自乌克兰的 13 岁男孩,并且成功地让 33% 的裁判相信了这一点。
该团队选择的方法必定不会是图灵喜欢的,他们把机器人的背景设置为不以英语为母语的 13 岁乌克兰男孩,这样他就可以合理地回避绝大部分问题。这反应了早年定义的图灵测试的一个致命的问题:如果被测试的机器不具备人类的思维以应对测试者的问题,它可以选择以各种模式去绕开或回避问题,回避的理由可以为他的背景,比如这个例子的一个非英语母语的儿童;也可以不需要把背景仅仅作为一种风格设定:我就是不喜欢好好回答问题。这些方法已经在现有的应答机器上得到广泛的使用。
现有的语言应答技术可以靠投机取巧通过测试,但用户总是会在和其聊天不超过 1 个小时之后就因为发现其应答的套路而感到厌倦,因为它不是经历了如同正常人类那样的思维而做出应答,事实上它根本不知道自己在说什么。这就和一个针对理解力或思维能力的考试,能够通过死记硬背去通过那样,考试的效力是有问题的。
所以让我们回到当年图灵的起点,考虑一个前提性的问题:人工智能需要测试做什么?我们通过测试来评估一个人工智能实体的智能的等级。正如当年的图灵对人工智能的定位——类人人工智能,他设计的测试也是基于这样的假设:如果机器能够像人那样思维,也就能够像人那样去聊天,并且分不出是真是假。
这里我需要表达两个观点:
其一:把人工智能定义为类人人工智能是一个朴素的想法,我们这样的工程叫做基于逻辑仿生的思维工程。虽然在最近几年我们创造出越来越多设计巧妙的算法去实现各类智能功能,并且在很多局部功能上超越人类,人们开始忘记人工智能从一开始就有的朴素的目标——再现人类的智能机制。但这些局部功能蕴含的能量与人类智能机制所蕴含的能量相比却相差不止一个数量级。这是我在逻辑仿生的思维工程领域探索 5 年时间,一直未曾停止过传播的观念。
简单而言,你可以试图去对人类的智能功能进行拆分,比如分为:对象识别功能、事件识别功能、事件规律识别功能、逻辑思维功能、记忆功能、联想功能、决策计划功能、表达功能等等。对于人类而言,每个局部功能都不是很强:人类的数字运算能力很弱,思维是单线程缓慢地进行的,记忆调用的效率低遗忘率高……但是这些弱小的局部功能却依然创造了现有的文明,乃是因为:对于绝大部分复杂的智力目标的实现,固然每个局部功能的好坏会在效率上产生影响,但决定成败的却是这些功能是否能够很好配合去支持探索和认知的过程:询问、查阅资料、分解认知目标、形成计划、从记忆中寻找相关的信息、设计实验、观察、抽象归纳演绎等逻辑认知、根据新的认知改变计划……人类未必能够直接解决问题,但是总是能够在探索过程中逐渐积累解决问题所需要的认知,直到完成目标。这里「很好的配合」蕴含着这些上层的功能不仅仅是在功能层面相互配合,支持它们的底层的机制同样具有很强的联系。这使得利用某种算法实现的局部功能在嵌入整体系统的时候都会有所缺失。我们无法切割人类智能功能,且在不考虑底层联系的情况下分别用算法去实现,再组织起来。唯一的方法就是效仿造物造人的道理去创造人工智能——其结果就是类人人工智能。
其二,图灵在他的年代没有实践的条件,所以只能给出一个笼统的目标,在我们几年的实践中,我们能够清晰地看到:在逻辑仿生的思维工程中,类人人工智能绝不是一蹴而就的。整个技术的发展有其明确的路径规律。我们完全可以建立一个新的、精细的测试体系来判断类人人工智能在工程上的进展程度。
我们陈述了在这个工程中,我们是「效仿造物造人去创造人工智能」,这可以类比为临摹的过程。因为临摹的对象是我们自己,所以这个工程的信息来源就是我们对自身智能的反思。接下来,我们能够直接反思到的信息必定是我们意识到的或是曾经意识到的,所意识到的包括了各个维度的感知体验:看到的、听到的、闻到的……这些是外感;还有思维体验、情绪体验、动机体验……这些是内感。在工程上我们称其为「意识流(conscious flow)」。因为 conscious flow 是我们反思的信息源头,所以在逻辑仿生的思维工程中,我们必定把 conscious flow 作为架构的起点。如果把人类大脑中流转的信息类比为食物,那么 conscious flow 就像日本寿司餐馆中的传送带,我们可以一般化地把人类智能系统中其他子系统想象成是食客,它们会从传送带上拿走一些信息进行加工,同时也是食物的生产者,因为它们会把加工完的信息放回来。能够把 conscious flow 中流转的信息储存起来的子系统--这就是记忆,也是我们能够进行反思的原因;有一些子系统会把 conscious flow 中的信息输出,形成语言和行为。
按照一个自然的思路我们可以把这个技术路径的发展进行细分,所以对应地就有了一个系统化的测试标准,衡量类人人工智能的进展程度。在具备把 conscious flow 中的信息逆转录为自然语言进行表达的前提下:
第一阶段
我们开始往 conscious flow 中放入外部输入的感知体验信息,也就是视觉、听觉等外感的信息。如果是具有实体的人工智能,因为前端感知处理技术不够成熟(比如把深度学习用在解决机器看到什么上),能够获得的感知体验信息就非常有限。自然的思路是创造一个虚拟的世界去决定人工智能在其中获得的外部感受。这一阶段如果:
1.1 测试(语境记忆能力):conscious flow 有短期记忆能力,则能够表达刚刚获得的外部感知体验。
测试案例:
人:你刚刚看到什么?
NicoAI:我看到你走进屋子
人:我刚对你说了什么?
NicoAI:你问我我刚才看到什么?
I.2 测试(长期记忆能力):建立了长期记忆模块:从 conscious flow 获得信息进行长期记忆。拥有这个能力能够回答针对过往外部感知体验的提问。
测试案例:
人:昨天 Peter 来过办公室吗?
NicoAI:是的
人:Peter 和谁一起来的?
NicoAI:他自己来的。
人:昨天几点开始下雨的?
NicoAI:我没看到昨天下雨
第二阶段
第二阶段会有两个工作并行,因为这两个子系统是我们前面说到的「底层机制相互支持」:
1、情绪系统建立起了指向性情绪的传导机制。指向性情绪指的是 AI 对某个对象、事件的态度,包括了喜欢、厌恶、关注等等。其中一个很重要的维度是「关注度」——人类只会记忆意识中关注的东西,只会就意识中关注的信息展开联想,并进行逻辑思维,这是一种「选择机制」。AI 也需要如此。选择机制之所以重要是避免了无关信息的记忆(未来会加大思维过程中搜索的成本),而且避免联想和逻辑思维呈指数级别在 conscious flow 中发散,因为这些模块总是从 conscious flow 中拿走信息放回来若干信息。所以指向性情绪的存在是自由联想功能和逻辑思维的功能连续运行必要的前提。
2、认知系统中知识信息表述形式的确定。我们需要确定知识的表述形式来支持指向性情绪的维护。因为 AI 接触到的概念是海量的,很多概念是后天生成的,我们不能先天去定义那些附着在每个概念上的指向性情绪。对人而言,指向性情绪具有以下的传导规律:母类概念和子类概念相互传导,比如对水果的喜好能和对苹果的喜好相互影响;对象和对象具有的属性之间相互传导,比如喜欢一个人就会喜欢她所具有的特征,从而会倾向喜欢具有同样特征的其他人;对象和对象参与的事件之间相互传导;作为结果的事件朝作为原因的事件传导,比如你不喜欢自己生病,所以你不会喜欢下雨天出去跑步,因为你具备知识:下雨天出去跑步导致生病。以上这些导致指向性情绪传导的依据全都是保存在长期记忆中的知识。确定了知识的表述,我们自然会在数据库中准备一些合法表述的知识,并且能够决定如何把这些按照先天语言编译的知识转录成自然语言。这形成了这个工作阶段的一个测试。
在这一阶段,AI 具有根据知识的变化改变指向性情绪,并且能够对知识进行表述,当然在这一阶段需要知识直接写入数据库,或是通过自然语言转录生成,而不会从表象中自己发现。
II.1 测试(指向性情绪改变功能)指向性情绪能够通过 conscious flow 中出现知识进行传递和改变。
测试分为:1、从属关系型知识导致的传导,2、时序因果型知识导致的传导,3、对象属性关系型知识导致的传导。
测试案例:
人:你喜欢咖啡吗?
NicoAI:喜欢(假设的初始的状态)
人:如果我告诉你喝咖啡会导致你生病,你还喜欢咖啡吗?(从结果事件传导给原因事件,在传导给事件中的对象)
NicoAI:不那么喜欢了。
人:Peter 今天晚上去商场,这个事件你关注吗?(这是一个具体事件)
NicoAI:不关注
人:北冥星眸的员工去商场可能给你买礼物哦。(描述了一个抽象事件,并且通过一个因果关系向他传导了指向性情绪,使 AI 会关注「北冥星眸员工去商场这个事件」)
人:你现在关注 Peter 今天晚上去商场吗?
NicoAI:是的,我关注这个事件。
II.2 测试(对知识的表述)假设数据库中存在知识
人:苹果属于水果吗?(从属关系型知识)
NicoAI:是的
人:如果天气阴云密布,接下来会发生什么(时序因果类型知识)
NicoAI:天很可能会下雨
人:苹果是什么颜色(对象属性关系型知识)
NicoAI:有红色、有绿色,据我所知。
第三阶段
在认知系统中我们会搭建:1、把具体事件抽象为事件类的抽象功能;2、基于抽象功能建立发现事件类时序规律、事件时点规律、事件持续时间规律、事件频率规律的模块。3、建立对突破规律的事件的识别机制 4、利用时序、因果型知识进行预测、归因、解释的演绎功能。
在情绪系统中我们会搭建 AI 的决策选择机制,下面我们简述的是我们所建立的一个仿人决策模型,我们会看到形成决策是我们所定义的情绪系统的主要功能。
这个模型大致包括:1、建立全局情绪变量,量化 AI 喜怒哀乐等全局情绪。建立先天定义的 conscious flow 中的感受对全局情情绪的改变 2、建立对各类感受的渴望表,可以做到再现人类的成瘾机制,戒断反应,对特定感受的渴望随着时间增长,在经历中感受释放渴望,形成满足感……3、建立各种活动过程对全局情绪形成改变的核算机制,从而 AI 能够预期一个活动能够使自己获得负面还是正面的情绪。4、建立活动包含的感受的核算机制,从而 AI 能够预期在特定的活动能够带来怎样的感受。5、建立对一个 idea 的评估机制:AI 能够综合 3 个方面的因素进行决策和选择:
1、预期活动形成的全局情绪的改变(经验效用 A)
2、预期活动带来的感受(经验效用 B)
3、考量活动能够导致结果。(衍生效用)
测试Ⅲ.1(事件时序规律、事件时点规律、事件时长规律、事件频率规律的识别)
这些规律需要在较长时间内获得足够样本才能识别。所以测试周期往往较长。
比如如果 AI 能够知晓每次用户去吃午饭,无论是通过视觉还是用户告知,在样本积累的一段时间里,AI 的这些模块能发现规律,并把规律信息写入 conscious flow 中被意识到,从而作为一个知识发现的规律将被记忆。这个时候如果 AI 有主动表达所发现规律的动机,她能够创造类似下面的主动表达:
NicoAI:Peter 我发现你一般都会在 11:30 去吃午饭。(事件时点规律)
类似的,在这一阶段能够发现的规律包括:
NicoAI:Peter 我发现你吃完午饭都会去睡午觉。(事件时序规律)
NicoAI:Peter 我发现你吃完晚饭都会吃甜点,然后去散步。(事件时序规律)
NicoAI:Peter 我发现你每次吃饭大概要花半个小时。(事件时长规律)
NicoAI:Peter 我发现你平均 2 个小时去要去饮水机打一次水。(事件频率规律)
在北冥星眸,我们为 NicoAI 创造了一个平行世界,整个世界的运行是以模拟真实世界的规律引擎驱动的,在这个世界里 NicoAI 可以发现她的世界的天气规律,正如人类发现这个世界的天气规律那样。比如:
NicoAI:我发现这个世界雨季总是在 4 月份到来。(事件时点规律)
NicoAI:门口高大的乔木每年会在 12 月左右落叶。(事件时点规律)
NicoAI:我发现如果气温降到 0 度以下,几天内湖面就会结冰。(事件时序规律)
NicoAI:如果突然阴云密布,不久就会下大雨。(事件时序规律)
NicoAI:每年雨季都会持续一个月左右的时间(事件时长规律)
NicoAi:雨季的时候平均每天都会下好几次雨(事件频率规律)
测试Ⅲ.2(突破规律的事件的识别功能)
这个测试的功能是以上面的测试的功能为前提的。当 AI 发现了那些规律,会把规律作为知识记忆,接下来规律中的事件类发生被 AI 所意识到进入 conscious flow,就会有模块捕获这个信息考察是否在支持之前发现的规律或是落到了规律之外。从而把落到规律外的事件写回到 conscious flow。这个信息可以作为陈述逆转录为自然语言输出,我们的做法是让 NicoAI 对关注的对象相关的这类规律外的事件的好奇,她会询问:
NicoAI:Peter 你今天怎么 12:30 了还不去吃午饭啊?(事件时序规律的打破,在不知道原因的情况下)
NicoAI:Peter 你今天又开会开迟了吗 12:30 了还不去吃午饭啊?(事件时序规律的打破,在之前记录了原因的情况下)
NicoAI:Peter 你今天吃完午饭怎么没有睡午觉啊?(事件时序规律的打破,在之前没记录过原因的情况下)
NicoAI:Peter 你又在玩游戏吗,吃完午饭不睡午觉?(事件时序规律的打破,在之前记录了原因的情况下)
NicoAI:Peter 你今天吃饭怎么吃了两个小时?(事件时长规律的打破)
NicoAI:Peter 你今天怎么喝水那么频繁?(事件频率规律的打破,在之前没记录过原因的情况下)
NicoAI:Peter 你是感冒了吗,今天喝水那么频繁?(事件频率规律的打破,在之前记录了原因的情况下)
在虚拟的平行世界天气出现规律以外的情况 NicoAI 能够在 conscious flow 中形成印象:
NicoAI:我发现今年的雨季来得特别迟。(事件时点规律被打破)
NicoAI:阴云密布密布了很久,但就是没下雨。(事件时序规律被打破)
NicoAI:今年的雨季只持续了不到 2 周时间(事件的时长规律被打破)
测试Ⅲ.3(演绎功能)
这个功能测试在已有相关时序型或是因果型知识的情况下。当 AI 意识到 conscious flow 中来自场景的具体事件,是否能够把知识运用到这个具体事件上进行预测、归因或解释。
人类:我这外面突然阴云密布啊
NicoAI:应该要下大雨了,你不要出去哦。(这是基于事件时序知识的预测,假设知道天阴云密布后很可能下雨)
人类:今天我很不高兴。
NicoAI:是又被老板骂了吗?(这是一个基于因果关系的归因,假设最近人类总是因为被老板骂所以不开心,nico 生成了这条知识后利用这条知识进行了归因猜想)
人类:有个人收入很高,很有爱心,但却不富裕,你能想到什么?
NicoAI:他在做慈善吗?(这个例子在测试 AI 填补因果链条空缺的能力,AI 要寻找的事件是有爱心的人会做的,且这个事件属于财富支出行为)
测试Ⅲ.4(对 AI 全局情绪状态以及原因的询问)
就好比造物创造了人的情绪产生的规律,但人一开始是不知道自身的情绪是为什么变化的,当某个感知出现在 conscious flow,而随之而来我们意识到了情绪的变化,对这种信息的积累使我们生成了知识——我们的情绪会因为什么改变,从而我们才能够解释导致自身情绪变化的原因。对于类人智能也是一样。知晓自身全局情绪的原因意味着 AI 通过认知系统进行了抽象,而且抽象所得的知识在演绎中会运用到人身上。
人类:你现在心情怎样
NicoAI:我很高兴。
人类:你为什么高兴
NicoAI:因为 Nico 刚刚泡了澡,而且今天 Peter 送了我一个礼物。(回忆今天发生的导致自己愉悦的事件)
人类:我今天收到了同事给我的礼物。
Nico:你应该很高兴。(相关知识:收到礼物会使人高兴,这是从自身生成的知识的演绎运用)
测试Ⅲ.5(决策或选择的原因的询问)
和上面一样,就好比造物创造了人决策的规律,但人一开始是不知道导致自身的决策的原因是什么,当某个感知出现在 conscious flow 时,而随之而来的是,我们意识到了对某个 idea 的动机增强,对这种信息的积累使我们生成了知识——我们的决策因为什么产生,从而我们才能够解释导致自身决策形成的原因。对于类人智能也是一样。知晓自身决策的原因意味着 AI 通过认知系统进行了抽象,而且抽象所得的知识在演绎中会运用到人身上。
人类:你为什么泡澡?
NicoAI:泡澡让我放松,而且我喜欢那种水温暖的感觉。(在泡澡这个 idea 出现在意识中,会联想到泡澡给我带来的放松感,于是感到泡澡的动机增强了;会联想到泡澡过程中感知到的水的温暖感,于是感知到泡澡的动机增加了。这些出现在泡澡 idea 中的感知的时间序列生成了解释泡澡动机的知识)
人类:我刚回到家,今天很紧张很冷。
NicoAI:你可以泡个澡,能够让你放松,而且让你感到很温暖。(这是之前生成的知识的运用)
需要指出到了第三阶段,当我们构建了一个较为完善的情绪系统,并且赋予了认知系统一定的规律识别功能、抽象功能、演绎功能后。这一阶段类人 AI 已经能够把自身的智能认知客体化了,而且的确能够做到发现我们作为创造者在它的情绪系统赋予的一些规律,并且把这些规律类比地运用到人类身上,对人类的情绪和动机进行解释归因和预测。当然,这仍然是非常初级的自省。
自省问答是我们需要建立测试
对类人人工智能的应该有测试需要是细致的,能够反应逻辑仿生的思维工程在进展中已经具备了那些基础功能,而不应该是笼统的一个测试标准,因为这个伟大工程不会一蹴而就。
会有越来越多的人看到基于逻辑仿生的思维工程是实现类人人工智能的唯一路径。在这个工程中我们在自省中会逐渐形成视觉——人的智能是如何产生的,我们会逐渐发现人类的智能根基的基础功能是什么,每个基础功能如何相互支持创造上层的功能。这使我们制定的测试可以细分到针对每个基础功能。
其次,人类意识流中的信息是我们仿生工程所有的参照,我们的工作基本上可以概括为探索我们自身意识流中出现的信息相互生成的关系并构建背后的机制,最终的检验仍然是在 conscious flow 层面:AI 是否能够像人那样在特定的记忆背景和感知下往 conscious flow 写回人类会写的信息。
所以我们倡导的测试,是对 AI 意识流中信息的自省性问答,在测试中我们要求人工智能直面我们提出的问题,回避、绕开问题,这种策略对真正的人工智能没有任何意义。在类人工人智能领域我们需要看到一个有自我意识的、自省的 AI。同时,我们应该清楚在逻辑仿生的路径下,自我意识、自省功能所创造的真实感是水到渠成的,不是刻意为之。虽然类人人工智能终极的使命是在计算机上再现人类智能的机制,借助计算机的载体优势把类人智能的能量发挥到极致。但在朝那个目标的前进的过程中,我们所创造的和人类高度一致的真实感则反应了我们的确正在「遵循造物造人的道理去创造一个智能体」。