可能有的同学会说:我知道,这个就叫仿生学。那说到仿生学,我要先给大家讲一个例子。
人类很早以前就想像鸟儿一样飞,于是致力于根据鸟造出能飞翔的机器,这是最早的仿生学尝试。但是很长一段时间里,人类都走在一条死胡同上。我们总想简单地模仿鸟扇动翅膀就能飞起来的现象,设计了很多类似的机器。
演讲 | 余山
我想请大家思考一个问题,从生物大脑的特点和生物智能的特性来讲,它们的底层原理是什么呢?
线虫是一种体长大概1毫米左右的动物,生活在土壤里。它的大脑非常简单,只有300多个神经元。而果蝇有10万个神经元,小鼠有数千万神经元,猴子猩猩有数十亿神经元,人的大脑有数百亿神经元。大脑的规模叫做复杂度,线虫和我们之间差了很多很多个数量级。
那么,这些复杂度跨越几个数量级的智能体有哪些共同的特性呢?假如你回家时买了水果,但忘记吃了,你会发现过段时间之后,家里开始飞小果蝇了。这时候,你可能觉得这些果蝇还挺聪明,因为它自己知道能在什么地方找到食物和水,在哪里可以繁殖,所以就能很快乐地生活着了。
但是,它之前从来没去过你家,为什么能做到这些呢?这说明我们的生物智能具有很强的适应环境的能力。在智能领域,这叫做对开放动态环境有很高的适应性。
什么叫开放动态环境呢?这是我们对于环境复杂程度的一种描述。
相比之下,封闭环境就是指你要做的事情和将要面对的挑战以前都受过训练。比如大家考试时遇到的那些题都是老师平常讲过的,这就是一个封闭的环境。开放环境就是指你要去做的是以前没有训练过的事情。
假如要在封闭环境里做一个面部识别系统或者字符识别系统,它最后能学会识别的东西还是在训练集范围当中的。但是如果在开放环境中训练一只机器狗,在不同的地面训练它,最后让它在从来没有训练过的场地走路也是可行的,这就是开放的环境。我们当然希望人工智能的系统能从适应封闭环境走向逐渐适应开放环境,这是我们衡量环境复杂度的第一个维度。
第二个维度是环境静态和动态的程度。
静态环境是什么意思?就是我学会了一条规则或者掌握了一个窍门后,就可以一直运用这个窍门,不需要去改变,这就是静态环境。识别面部的系统和识别手写体字符系统也是这样的,这个字就是这个字,我看到这个字,把它识别成这个字就好了。
动态的环境更为复杂,没有一个能一直适用的、一成不变的单一规则。比如下围棋或者做其他游戏时,必须要根据对手的情况和当前的局势灵活地选择规则,需要随机应变地应对当前的局势,这就是动态环境。
如果我们用两个轴来表示这两个维度,做成类似于坐标轴的图。可以看到现在做得比较好的人工智能还是在静态封闭的环境,也就是左下角的这个区域。可能有的系统可以做到开放,但是比较静态;有的系统能做到动态,但是比较封闭。
那么现在,我们希望能把智能的水平不断地从左下角的区域往右上角这个区域演进,最后能做出真正像人一样高度智能的系统。未来真正的人工智能系统或者生物智能系统,一定是适应动态开放的环境的,能够不断适应新情况,同时灵活地随机应变,把学会的知识加以应用。
让我们一个方面一个方面地来考虑。首先我们看看如何从封闭环境到开放环境。
目前人工智能领域常用的方式就是持续学习。我们人类为什么能适应开放的环境?为什么能适应从来没学过的东西?就是因为我们能够不断地学习,就像那句老话说的,叫“活到老学到老”。每个人都要不断学习新知识,这就使得大家能适应越来越复杂、越来越丰富的环境。遇到不会的,学就好了。
当时做这个研究之前,我们也是这样想的,觉得让人工智能持续学习应该不是个问题,系统遇到新的挑战,学就好了。
但事实上,这是一个非常困难的问题。在人工智能里面这个问题甚至有个专门的名字,叫“灾难性遗忘”。
假如我们想训练一个用来做智能任务的人工神经网络,比如训练它来识别什么叫做狗。你给它很多图片,它就可以去识别什么是狗。在学习识别小狗的过程中,神经网络内部的权重会做出调整,这些调整把关于狗的知识存储起来了。因此,在训练完成之后给它一张狗的图片,它就能识别这到底是不是狗,这是第一个任务。
学完了识别狗的任务之后,我们再去训练它做一个识别小猫的任务,它通过同样的过程也可以学会识别小猫。学会了第二个识别小猫的任务以后,我们让它回头再做第一个任务,看它还能不能识别小狗。
这时候我们会发现,它把第一个任务忘掉了。为什么呢?因为在学习第二个任务的过程中,它内部的权重重新做了调整,关于第一个任务的知识就被“擦”掉了,这是所谓的“灾难性遗忘”。
所以说,由于这个本质上的困难,人工智能神经网络很难像我们人一样不断学习新的知识,适应新的场景。那我们就要想办法让它能够具有这样的能力。
我们提出了一套叫做正交学习的办法。这张图是两个集合,蓝色这个椭圆形的区域叫做第一个任务的解空间,任何一个系统或者神经网络如果位于这个空间内就能完成任务一。
任务二的解空间是棕色区域。如果它学会了任务一之后我们再给它任务二,就会从这个绿色的点沿着这条轨迹跑到任务二去了。最后的结果就是它可以做任务二,但是忘掉了任务一,这就是刚才说的“灾难性遗忘”。
如果大家学过集合的数学概念就可以想到,我们该怎么设计一套方法,让它在学了任务一之后学任务二,最后能够同时会做任务一和任务二呢?
其实一个很简单的办法就是,最后我们把系统的解放到这两个集合的交集当中,它就可以在学了新任务之后不忘记旧的任务,同时完成任务一和任务二。
那么大家再想想,怎么能够做到这一点?怎么能够找到这两个集合的交集呢?其实也比较简单。比如说从绿色的点开始,先训练它学会任务一。在训练它学习任务二的过程中,控制它不要跑出任务一的解空间,也就是说只在蓝色区域中寻找解决任务二的可能性。如果它最后能找到这样一种可能性,它就必然位于这两个集合的交集,也就能够在学习新任务过程中不忘记旧的任务。
▲Zeng G*, Chen Y*, Cui B and Yu S. 2019
这个原理怎么去设计,怎么用数学方法去实现?就是靠左边这张图。简单来说,我们设计了一种叫正交投影的方式,把一个新的学习的向量投影回原来的解空间。具体的数学细节我就不讲了,可能要在大学学完线性代数之后才能理解这个原理。
大家可能会问,我们的大脑为什么没有灾难性遗忘呢?大脑也是神经网络,为什么在学习新知识的过程中不会忘记旧知识呢?其实很多神经科学家发现,我们的大脑也是用所谓正交的方式来避免信息的相互干扰的。
右:Xie et al, 2022
这是两个最近的研究,它们都发现我们的大脑在编码不同信息的时候,特别是在你希望这两种信息不要互相干扰的时候,往往会用正交的方式。
这对我们也是个很好的启发:我们在研究人工智能的过程中得到的一些发现、认知和经验,有可能反过来启发我们对大脑工作机理的认识。而且这不是单向的启发,而是脑科学和人工智能之间双向的相互促进。
提出来这样一种正交学习的方式之后,我们就要对这个原理做验证。它到底管不管用?到底能不能让一套系统不断地去学习新的知识呢?为此,我们做了一个人工智能跟人的连续学习能力的简单对比。
Handwriting Databases[J]. NLPR, 2011.
大家在小时候都需要学汉字。学汉字是一个很困难的需要持续学习的任务,每个人在小学时期大概要学3000多个汉字,这是汉字一类字库。我们要花好几年的时间,还要反复不断地去复习,才能学会这几千个汉字。
我们就用这套系统做了两种测试。一种测试是让它一次性学习3000多个汉字,另外一种是让它一个字一个字地学,就像我们人一样,最后看效果怎么样。
我们做了比较发现,如果让它一次性学会所有汉字,正确率是97%;如果让它一个字一个字学,最后正确率是93%。虽然正确率大概下降了4个百分点,但是实际上它获得了非常巨大的灵活性的提升。
因为如果你一次性学的话,学会的就只有这3000多个字,其他的字还是不会。但如果你能够一个字一个字地学的话,就可以学习更多新的它不知道的汉字,还有一些新知识,让自己本领越来越强。这就是我们提出来的解决从封闭环境到开放环境的办法。
第二个维度就是从静态环境到动态环境。
神经网络其实是从输入到输出的映射,比如给它一把刀,它看到刀就认为这是危险信号,知道要逃避。网络是能够学会这个的,但是学会之后这个反应就固定下来了。每次你给它呈现一把刀时,它就会做出躲避的反应。
但我们不是这样的,人类没有这么刻板,可以随机应变。比如你给别人看一把刀,别人的反应会取决于这把刀是在厨房做菜的场景还是在犯罪现场的场景,不同场景下我们会有完全不一样的反应。这就是人类大脑一个非常灵活的机制。
在我们大脑当中也有一些底层的映射,看到什么就倾向做什么。比如口渴的时候看到有杯水,我们会倾向于喝水。但是我们不会总是在看到一杯水时就拿起来喝,还会考虑其他的很多因素,比如这杯水是不是刚烧开的一杯烫水,这杯水卫不卫生,或者这杯水在商店里卖得贵不贵,这杯水是别人的还是我自己的,等等。很多因素我们都会加以考虑,最后来调控底层的映射,决定看见这杯水要不要喝。
神经科学家们把这样的一个机制做了抽象,叫做认知控制。也就是说,我们有很多的感觉输入,也有运动输出,跟神经网络一样。我们在感觉输入和运动输出之间有很多映射,但是我们并不是机械地执行这些映射,还有认知控制的层面。
就好像我们的大脑里有一个模块,它在随时随地监控着我们的环境、状态和任务,用这些因素来调控底层映射到底应该怎么去执行。就像铁路上的扳道工一样,一辆列车过来,认知控制机制可以决定这个车是应该沿着上面这条路走,还是扳下道岔把它换到下一条路上去。
大脑中执行这个任务的区域叫前额叶,就是这张图上标黄的区域,在我们额头的后面。神经科学的研究告诉我们,人类就是用前额叶做认知控制,不断地观察周围的环境,即情境信号,用情境信号来调控底层映射的。
因此我们就希望把这个发现用到人工神经网络当中去,让它也能获得这种随机应变的能力。我们设计了这样的系统,这个系统中有很多不同的底层映射,再通过情境处理模块来根据环境、任务、条件等情境信号,调控底层映射下面复杂的网络结构。
我们还做了一个简单的验证。用来验证的数据集叫Celeb A数据集。是由一些国外明星面孔所组成的数据集。每张面孔都有很多个不同的属性,比如这张脸它到底是男是女、年纪大还是年纪小、头发长不长、戴不戴眼镜、颧骨高不高等等,共有40多个不同的属性。
传统上要判断这40个不同的属性就要设计40个不同的系统,我们觉得这就不是一个能随机应变的、有高度适应性的系统,而是一个静态的系统,因为它每次都在做同样的事情。
于是,我们用情景化学习的方式构建出了一套人工智能系统,这一个系统就能做这40个任务,只要告诉它现在要做哪个任务,它就能做哪个任务。
很有意思的是,这还可以跟我刚才说的连续学习的功能结合在一起。我们让这套系统一个一个去学习这40个任务,让它像我们一样不断学习,让自己的知识更丰富,本领更强大,像我们一样越来越知道在什么情况下应该做什么样的事情。
我们希望人工智能有类似这样的能力,一方面能够通过持续学习的办法,从封闭环境走到开放环境,一方面能通过情境化学习的办法,从静态环境走到动态环境。最后能把这两个方面结合起来,让智能系统从左下角区域逐渐朝着右上角适应动态开放的环境去演进,在演进中首先达到人的智能水平,从原理上说,它最后甚至可以超过人类的智能水平。
如何克服一本正经地胡说八道
这就是我们之前做的一个工作,展示了如何从大脑得到启发,来设计更好的、更新的、更强大的人工智能系统。
最近大家可能关注到了大模型,这是目前非常热门的领域,不知道大家有没有用大模型来帮助自己学习过?我想说,大家在用大模型的时候,一定要小心:大模型有时候会有幻觉。
什么叫做大模型的幻觉?这是我自己测试的一个很有名的大模型,我问他中国类脑智能专家有哪些,它就给我列了下面这段回复。
它说中国类脑智能领域有很多专家和研究机构,以下是其中一些知名的类脑智能研究专家。第一位是田刚,中国科学院自动化研究所研究员,人工智能领域的知名专家,主要研究方向是类脑智能和认知计算。
大家听着是不是觉得特别靠谱?它知道我要问什么东西,也给出了看起来很权威的答案。但是问题是什么呢?因为我就是自动化所的科研人员,我知道我们所没有这样一位叫田刚的科学家。这就是大模型的幻觉,它在一本正经地胡说八道。
为什么会是这样呢?我们要理解它背后的机制。大家知道大模型是怎么训练的吗?是把很多互联网上的语料放在一起训练,所以大模型最后学会的只是这些语料符号之间的统计关联。所以对于大模型来讲,田刚是一个完全合理的名字,自动化所里完全有可能有一个叫田刚的科学家在研究类脑智能。
但是,它不知道这不对应我们现实的生活。对大模型来讲,它没有区分虚拟和现实的能力,而这不符合我们真实的人脑认识这个世界和使用语言的规律,我们要克服的就是这样的东西。
我们也在做相应的工作,这跟刚才前额叶的底层映射模式是一样的,用的是同样的架构。我们希望未来的人工智能系统不光有一个符号层面,它的符号层面能和真实世界理解层面有机地联系在一起。就像人的大脑一样,可以做语言的处理,也知道语言符号所对应的真实世界的产物是什么。我们希望类似的研究能够有一天帮助我们制造出真正像人一样智能,而不是一本正经胡说八道的智能体。
我今天跟大家讲了一些关于大脑和人工智能的故事,还讲了我们是怎样从脑科学中得到启发来设计更好的人工智能系统的。同时非常重要的是,对人工智能的研究反过来可以帮助我们更好地认识大脑。
我觉得未来这个领域还有很多有趣的事情还有待于我们发现,很多重要的事情有待于我们去实现,这都有赖于在座的各位同学。