自然语言环境(中文)下的人工智能理论及其实践——关于智能实现的一些零散的构思
Eishn 于广州 2005 年 1 月 3 日
实现人工智能的途径,很多。包括神经网络;以及象专家系统或者知识库那样的基于数据挖掘的方法——它们都是用来实现通用人工智能的。而专用人工智能通常是为解决特定的问题(比如下棋)而设计的。
这里,通用智能似乎要更加引人入胜一些,科幻电影中的类人机器人(它们是可以与人交流的)给人的印象深刻。但是真的要去实现它,似乎要比专用智能麻烦好多。以至于所谓的“强人工智能能否真正实现”变成了一场辩论。当然(作者认为)没有一种智能是无法实现的(暂且抛开一些哲学的或者其他什么的思考),不过对于我们这些普通人来说,更有意义的,似乎是在一个简陋的的小屋子里,一台破旧的个人计算机中真正地去实现一个通用的人工智能——这个想法就像是科幻电影一样引人入胜。
回到前面所说的,通用的人工智能“实现起来似乎要比专用智能麻烦好多”。确实,专用智能可以使用许多漂亮的数学和技术。打开任何一本《人工智能导论》都可以得到一系列令人眼花缭乱的理论阐述,但是使用它们时要谨慎,因为这些理论和技术很可能会把你的人工智能变成专用智能下棋机器,或者一个数据仓库,一个专家系统。同样,一些新兴的编程工具可能会让你程序变得很聪明,但是也可能会使你的程序变得“永远如此聪明”:计算机思考逻辑被设定后,便停止了升级或者是只能进行非常有限的升级,在最糟糕的情况下它会对过去的行为守则过于偏执而无法适应新事物。
在整个设计开始以前,让我们来回忆一下人与机器的最大不同吧:人,有抽象思维,并且,会学习——实现了这些,通用智能便已经成功了一半。
抽象思维,换句话说就是“聚类”,把一些类似的东西整成一类,从大类到小类,形成一棵抽象树。任何的事物都可以在抽象树中找到一个最终位置,这个位置是该事物的所属类别,或者说是对它的一个精辟解释。
既然是树结构,自然可以很方便地在计算机中实现了。但是整个情况似乎并没有那么简单。事实上,我们在计算机上常用的树结构应该是主题树,主题树与抽象树的最大不同是——抽象树这种数据结构本身是具有智能的:抽象树具有自动聚类功能,这里的关键词是:“自动”——而主题树的关键词恰是“手动”。这造成了截然不同的两种风格:主题树具有所谓的“语义信息”,它对事物的分类是人所可以理解的,而抽象树的类别只有分类者“计算机”自己可以理解,这就体现了一个原则——谁分类,谁解释。
主题树用于专家系统。专家系统并不是自学习的机器人,它所知道的都是人告诉它的,本质上是一个人与人交流的媒介,需要由人来管理系统的知识库。知识库需要向人解释它的存储内容,所以每个数据项都有语义信息——这是主题树的特点。而自学习的计算机程序必然使用抽象树,它自己管理信息,存储的信息只要自己能懂就可以了,对人来说是没有语义信息的。抽象树,正是我们所需要的。
抽象树的核心,是自动聚类的实现。具体的方法下面再说。这里不妨让我们先来考虑一下这一切,在目前最具智能的计算机器“人”身上,是如何发生的。众所周知,人是键忘的,可能起先我们想记住所有的事情,但是实在是太困难了。于是可能只记得一个事物的特征——记得这个特征的原因无非是“它曾多次出现”而给人印象深刻罢了。所以最后我们可能会对擦肩而过的东西全部遗忘,而只剩下特征,成为表示它的工具。因为什么都不记得了,而只能用特征来表述事物,事物就因为特征或者说属性而被分类了(抽象思维,源于健忘)。
这里分类的依据是:属性。人获取事物属性的方法无非是用眼睛看,用手去摸,用耳朵听,用鼻子闻。所以可以想象,人类的一切分类都是基于视觉、听觉、触觉和味觉。在人有了经历之后,获取的事物属性与经历相混合,形成一个完整的基于属性的自动分类系统(将在后文中涉及)。也就是抽象树,它存储事物及其属性,并且不断地重新整理及组合类别。最后一件事情,我们把抽象树的结点进行命名,它可能是“大”、“小”也可能是“酸”、“甜”、“苦”、“辣”其中之一……当然,那是在语言被发明之后的事情了。它的合理性,体现在抽象树只需保存可以分类的事物的几个属性就可以了,而无需记下每件事情所有的细微特征(当然印象深刻的东西我们无需费力便能自动记下它的大量细节,这在神经网络系统中更是家常便饭),这就节约了存储空间。而抽象思维,也是学习的基础之一。
如果认识一个事物就是学习的话,那么抽象思维已经实现了学习的功能。不过智能除了要去认知之外,还需要知道该怎样去反馈。这是个做什么和怎么做的问题,还是要依*学习来解决。
一切行为的鼻祖,是条件反射。从哲学上讲人和生物其实并不神圣,他们与非生物所奉行的行为机制其实是同一套东西。非生物也有条件反射,就像是跷跷板,如果我们给它一个外力,它就会做出一个我们所熟知的动作(开始围绕轴心做上下运动),这也算是应激反射吧。好了,这就给我们的计算机智能的实现提供了一点哲学上的支撑。
从条件反射到高级的生物行为,其中经过了一个极为复杂的过程。模拟人类的行为似乎可以从对低等生物甚至非生物的模拟开始,而逐渐完善。一个不错的想法是首先创立一种简单生物,智能也不高(跷跷板级别的),然后给它提供一个类似于 DNA 的遗传结构,具有遗传和突变性(就好像后来的遗传算法),而使这些生物进行优胜劣汰,而变成高级生物,这种高级生物之所以能够留下来是因为它们能够学会在什么样的情形下做出什么样的行为来适应环境。这种学习能力正是我们所需要的。
这个想法如同围棋的思路一样:规则越简单,变化更无穷。生物遗传变异的设计,可以说真正是非常地简单。说穿了,就是设计一个能够自编程的程序,它能够修改自身的编码(这真的不难实现)。然后给出几套守恒规则,让程序去自适应。
好了,到这里这种思路的问题才开始真正体现出来。确实“自动编程机”实现起来并不困难,但是却忽略了一个因素,那就是环境的设计。比如各种守恒的设计。我们会发现最后的最优生命形式是与产生它的环境直接相关的,如果环境是一个二维“吃豆游戏”的场景,那我们很可能会把一个“具有扇形缺口的圆形生命(就像游戏的主角那样)”创造出来。那么如果需要创造出象人类那样的智慧呢?需要多少守恒和制约条件?环境该如何设计呢?也许,我们需要把整个现实世界都模拟出来,去作为这个生命游戏的场景吧……还有什么比为了创造一个生命,却创造了整个世界更为荒谬的事情呢。
现在让我们来回顾一下标题:“基于自然语言的对话环境”,也许是这个思路的救命稻草。把自动编程机放进对话环境,来创造出具有语言智能的生命。这同样能够达到目标,而且环境的设计被简化了,智能进化的起点,也提高了。我们可以把已有的抽象思维的算法和其他的技术应用于基础生命,让它去接受人类社会,而无需让它去适应原始的“吃豆游戏”的场景。
在这里,也许阻碍一台计算机真正具有智能,变得“人性化”的最大障碍是:它无法完全去理解人类的行为和想法,对之感同身受。计算机不需要吃饭喝水,就不知道它们的重要;计算机也不知道睡觉的好处。这样如何使它去了解人类的趣味呢?它会变得冷漠,你不能使他开心,也不能使它愤怒。一个明显的解决方案是:设计它的思考,告诉它吃饭喝水睡觉是好东西,让计算机去喜欢这些事物。但是“好(东西)”和“喜欢”又是什么呢?可能仅仅是个符号吧。
这就会使计算机变成美国好来坞的电影,不需要观众自己去判断好人或是坏人。又该反思了:我们自己是怎样开始懂事的呢……
回到人类的世界,人类刚开始其实也没有判断力,你不能指望三岁儿童去明辨是非,这需要有强烈的感情去支持。对智能来说,一切它喜欢的事物,便是“好东西”,反之便是“坏东西”。理智,其实来源于感情做出的判断。如果某种事物让智能痛苦,那么可以认为该智能便不会再去碰它了。如果智能记录下感情与事物的联系,那么它就可以判断该不该去做出某些行为,与直接的 IF/THEN 计算机式(或者跷跷板式)的思考比起来,这种智能是通过情感来抉择的。经历越丰富,感情便越充沛、然后依赖这些东西来进行决策。
为了让计算机的判断和做出的行为更接近人类,让计算机能够理解人类的喜怒哀乐,我们必须使它也具有感情:“人工感情”。那么人工感情应该如何设计呢?
人类的感情在初始化的时候,其实并不复杂。一开始只有“好”和“坏”(或者还有几种但肯定不多)等区区几种,这是通过生物进化直接向上继承而来的。这就象是浮游生物或者植物,它们知道阳光和养料是好东西,于是进行生物式的简单条件反射来获取它,而认为这些是坏东西的生物都被淘汰了。人类在最初也是这样,他只有非常少的判断和条件反射行为。
接着人有了经历,这些经历被保存下来,同时这个“好/坏”的判断符号被同时记录下来。对于人类而言这种判断符号与这次经历的一切是同时保存在一起的,包括肌肉运动的感觉、视觉印象、触觉、痛觉等等(持续而密集地神经运动,使它们在大脑中保留了相关性)。这些感觉和认知符号因此而联系,成为一种新的判断符号,又用来标示新的经历。这种符号体系不断庞大,形成感情。再联系到另一种大脑的记忆机制:抽象树,一些奇怪的事情渐渐地也就不那么扉疑所思了。
你也许已经忘记曾经在你还是非常年幼的时候,一只杯子从你手中滑落,它正好就跌落在你的脚上,这给了你很深的印象,你曾经觉得这很痛。多年以后你看见一瓶水,突然觉得有点郁闷。其实很可能是由于水联系到了杯子,而这又能联系到那个跌落事件……确实挺郁闷的。
这种无法回朔出原因的意识行为,更像是一种精神症状,但是请相信,这确实是人之常情。而且——它还告诉了我们实现人工情感的方法。
首先,智能能够保存经历。事实上经历只是各种事物,感觉和感情的一种联系。人确实试图按照时间轴保存整个事情的经过,但是最后往往只留下相关事物间的联系。这在计算机中是可以实现的(这个机制也是源于健忘)。
其次,另外一种机制也使事物相联系,那就是抽象思维。
因此一定要实现一个健忘系统。或者随机访问系统。计算机之所以是计算机,完全是因为它记性太好,你要访问一项数据它马上可以在内存中找到一个确定的地址。现在不行了,你告诉计算机假如要访问杯子,它就必须要顺着抽象树和经历建立起来的联系一路随机遍历下去,就像一只无头苍蝇一样,可能要找很久才能找到(这时计算机也许会表现出一幅恍然大悟的样子),也许你设定了遍历时间或者深度,它也可能找不到,这就产生了遗忘。在遍历中,可能会找到以前经历中的情感标示比如痛觉或者“忧伤的情怀”(这从一个侧面反映了前面那种精神症状其实也并没有那么可怕,一切都是随机的而不会总是这样,所以人类总是喜怒无常),所以我们和设计成这样的计算机一样总是思绪万千,并且感情丰富。
自从计算机有了感情之后,一切就变得容易了。刚开始,你只给它设计几套少得可怜的感觉和感情,几种简单的联系和环境感应。让它和你,和环境,及其他的计算机交互。不久它就变得丰富了。具体的设计这里就不表述了,但是你最起码应该给计算机以求知欲,就是当它深入理解某一事物或者知识库及经历链变得丰富的时候,你使它给自己产生一个愉悦的感情。人类自己其实并不需要被教授这套思想,因为人给自己以“认识事物的愉悦”作为对认知行为的奖赏,从而鼓励自己这么做,得以不断观察,获取食物躲避敌害——不这么做便要被淘汰。多年以后,人类似乎忘记了自己为什么这么喜欢观察,而陷入观察所带来的与生俱来的愉悦之中无法自拔——并给这种观察起名叫作:审美。所以,认真地说来许多生物,还有我们设计的智能,也有审美行为。从这点说来,人类,并不孤独。
回到那个“还有什么比为了创造一个生命,却创造了整个世界更为荒谬的事情呢”的奇怪命题,如果计算机的所有行为只是说话,输入也是文字,但是它能够模拟高级的人类思维,比如抽象思维和人工情感,那么它就能理解文字,将自然语言的空间作为真实存在世界。如果计算机语无伦次,你也可以告知以愚蠢,而使计算机郁闷,不久计算机就不会再说可能会导致自己郁闷的话了(你也可以淘汰过于愚蠢的计算机)。这,是实现人工智能的一个完整的途径。期间,比起自动进化的系统而言,人需要参与其中,就像教导儿童一样地去升级我们的计算机系统。
在这里,人工智能就是一个智能聊天系统。但是聊天系统未必就必须按照人工智能那样去设计。一个简单的聊天系统,往往就是一个专家系统。你提问,然后它从知识库种寻找答案。但是,简单的聊天系统正是实现人工智能的一种初步尝试,也是必经之路,它提供了一个骨架,它的各个组成部分与上述的各项科技相对应,但是却采用了更加容易实现的科技,当上述科技的某一局部完成时可以十分轻松地替换到现有的聊天系统中去,使机器人距离人类更进一步。同时,聊天系统中许多科技其实无须被最终替换,或者在某一设计阶段,机器人已经拥有了足够的智能以至于使我们得意于成果而踯躅于脚步了。