以下文章来源于中国计算机学会 ,作者陈云霁
中国计算机学会官方订阅号,为CCF会员及计算领域的专业人士服务。
新智元推荐1
《中国计算机学会通讯》授权转载
作者: 陈云霁
【新智元导读】对于什么是类脑计算机这一问题,目前学术界所提供的概念还不是很清晰。新智元智库专家陈云霁日前在《中国计算机学会通讯》2016年第4期《专栏》中发表文章《什么是类脑计算机?》,陈云霁认为,理想定义的类脑计算机在短期内并没有实现的可能性。如果我们执着于理想定义,那类脑计算机的研究就无法开展了。此外,他提出(类脑计算机)“合理的定义应该是采用神经网络处理方法的智能计算机”。
陈云霁
CCF专业会员、CCF青年科学家奖获得者。中国科学院计算技术研究所研究员。新智元智库专家。主要研究方向为计算机体系结构。
自20世纪40年代至今短短70年间,计算机以手机、笔记本电脑、云服务器、嵌入式设备等各种各样的形式,进入人们生活的方方面面,成为每个普通人脑力的延伸。
人每天的脑力活动实际上绝大部分都可以归在智能的范畴内:感知外界的信息,再结合记忆进行分析处理,然后形成语言(或者其他形式)的输出,并形成新的记忆。一个很自然的想法是,人脑本身就具备极强的智能处理能力。那么作为人脑延伸的计算机,可不可以采用类似人脑的方式,在一定程度上接近人脑的智能处理能力呢?对于这种计算机,我们可以称之为类脑计算机。近年来,随着智能应用和脑科学的不断发展,越来越多的研究者开始投身于类脑计算机的研究,国内外的各种脑研究计划也纷纷将类脑计算机作为关注的热点。例如,IBM研制的TrueNorth神经网络芯片登上了《科学》(Science)的封面,一个重要因素是它借鉴了人脑中神经元细胞的脉冲模型。笔者所在中科院计算所未来计算实验室研制了国际上首个深度神经网络处理器“寒武纪”,被《ACM通讯》(Communications of the ACM)评为研究焦点。
然而,作为一个新兴的方向,与类脑计算机相关的概念还不清晰。有很多重要的问题没有答案,甚至没有人尝试去给出解答。例如,类脑计算机是什么?有什么用?和传统体系结构(如冯·诺伊曼架构)有何关系?应该如何发展?在这篇文章里,我们将对这些问题阐述我们的观点。一方面,通过写作的过程,厘清我们的思路;另一方面,希望能抛砖引玉,吸引专家学者对我们的工作进行批评指正。
人脑是地球生命不断进化的伟大产物。35亿年前高温的原始海洋中出现了单细胞的细菌。8.5亿年前,生命开始具备一定的感知外界的能力。例如,领鞭毛虫等一些单细胞生物会释放和接受化学信号或者传递电信号。随着多细胞动物的出现,细胞的功能开始分化,细胞之间的协同工作变得越来越重要。
因此,6亿年前,一些动物细胞逐渐演变成具有特殊的传递信息功能的神经细胞,而且进一步演化出轴突,用以远距离传递各种电信号。这就是最初的神经系统。进一步地,在一些蠕虫类动物(脊索动物门、软体动物门和节肢动物门等各种现代动物的共同祖先)中,多个神经元组成了神经核团,这就是自然界最原始的脑。这种神经核团中的神经元数量虽然仅有几个到几百个之间,却不仅能传递信息,还可以对信息进行汇总和处理,使得动物能够对外界环境做出反应。
到了5亿年前的寒武纪,由于基因突变,脑开始分化出不同的脑区,采用不同类型的神经递质完成不同的脑功能。在大约2亿年前,哺乳动物的脑开始具有较小的大脑皮层,从而拥有复杂和多变的行为。6500万年前,为捕食昆虫和适应变化的环境,灵长目动物的祖先开始发展出复杂的大脑视觉皮层以及扩大的前额叶区。从进化上来讲,前额叶是最晚发展的皮质结构之一,主要负责高级认知功能,比如注意、思考、推理、决策、执行任务等。前额叶区使得灵长目动物可以获得更强的整合与处理信息的能力。
而人类的出现使得脑的进化迈向了一个新的高度。由于生理构造原因,近250万年以来,人类的颅骨在进化过程中不断增大,使得人类脑容量,尤其是大脑前额叶区域得以进一步增大。脑的进化提升了人的智能,利用更好的智能,人类能进一步改善生活(例如利用火),反过来又进一步促进脑的进化,最终产生了拥有语言和文化的智人。如今,人类的大脑已经是一个拥有1000亿神经元细胞、100万亿突触(神经元之间的连接)的庞大、复杂的网络,具有强大的智能处理能力。或许,人脑是这个宇宙中最奥妙的物体之一。
从这个漫长的历史过程中,我们可以深深地感受到,人脑的出现是如此的不可思议,以至于需要数十亿年的时间来进化出这个“万物之灵”。想要超越它,谈何容易!自然而然地,从一开始,计算机的设计者就在思考,如何借鉴人脑来设计计算机。
沿着时光之轴前行来到1944年。为了进行火炮弹道轨迹的计算,美国陆军军械部弹道研究所邀请宾夕法尼亚大学摩尔电子工程学院的莫克利(John Mauchly)博士和艾克特(J. Presper Eckert)研制一台拥有强大计算能力的机器,也就是后世所熟知的ENIAC(Electronic Numerical Integrator and Computer,电子数字积分计算机)。ENIAC理论上是一台通用计算机,但是让它在不同任务之间切换往往需要数周的硬编程:首先,程序员要在纸上画出新的电路连接图和开关设置,再由工程师对开关、电线进行手工操作搭连,这个过程通常就要很多天。更麻烦的是,手工操作很容易出错,需要工程师花更多的时间进行专门的电路连接验证和调试。这给ENIAC的使用者带来了巨大的负担。
为了解决ENIAC的编程难题,1944年到1945年间,时任弹道研究所顾问的冯·诺伊曼加入了ENIAC项目组的讨论,并撰写了那份改变了世界的技术报告“First Draft of a Report on the EDVAC”。报告全文分15章,描述了一种不需要繁琐的硬编程即可让计算机完成不同任务的新计算机体系结构。该结构将计算机要做的事(程序)放在内存中来取代硬编程,使得计算机方便易用。报告中描述的这种存储程序的计算机结构因而被世人称为“冯·诺伊曼结构”1(如图1所示)。从此之后,各种商业计算机产品开始不约而同地采用冯·诺伊曼结构。第1章和第2章是报告的核心。在第1章中,冯·诺伊曼开宗明义地给出了他的设计目标:可以自动地读入指令,完成各种不同任务。在第2章中,冯·诺伊曼描述了要实现上述设计目标,一个通用计算机应该具有哪些组成部分。首先,计算机必须能进行算术和逻辑运算。因此,需要有中央运算器(Central Arithmetical part, CA)。其次,通用计算机需要有一个逻辑控制部分来对它的操作进行适当的定序。这个部分被称为中央控制器(Central Control part, CC)。第三,需要一个部分来存放中间数据、指令、常数等,也就是内存(Memory part, M)。冯·诺伊曼明确指出,内存只是一个逻辑上的概念,物理上可以分成任意多份,采用不同的器件完成不同的功能。
冯·诺伊曼在报告中指出,中央运算器、中央控制器和内存合在一起,可以和人脑中枢神经系统对应。然而,除了中枢神经系统,人还有感觉神经采集视觉、听觉、嗅觉、触觉等输入,以及运动神经来控制我们的手脚以对外部世界进行输出。因此,通用计算机还需要有第四和第五个部分:输入(Input part, I)和输出(Output part, O)。这两个部分负责将数据在中央运算器、中央控制器、内存和计算机之外的外存(outside Recording medium, R)之间搬运。
作为实现这五个部分的基本单元,冯·诺伊曼定义了一种被他称为E-element的抽象器件(第6章)。令人惊讶的是,冯·诺伊曼的E-element不是某种逻辑门,而是一个人工神经元!E-element神经元能接收来自兴奋性或者抑制性突触的激励。E-element神经元接收到的激励一旦超过某个阈值,它就可以向下一级E-element放电。冯·诺伊曼指出,每个E-element神经元平均仅需要两个真空管,而它们之间的突触则可以由导线来实现。
进一步地,冯·诺伊曼详细阐述了如何用E-element神经元搭建出通用计算机的五个部分(第7~15章)。并且在假设所有E-element神经元具有同样延迟的前提下,冯·诺伊曼以极高的精度估计了各个部分的延迟和所需要的单元数。
很难用文字形容我首次看完冯·诺伊曼这份报告之后心灵所受到的震撼。从转述、转述再转述的大学教科书上,我们都了解到冯·诺伊曼曾经设计过这样一个通用计算结构。然而,很少有人知道,冯·诺伊曼设计这个结构背后伟大的雄心:他不是要设计一台电脑,而是要设计一台Electronic Brain(电子大脑)!
平心而论,冯·诺伊曼这样做有历史必然性。作为计算机的先驱之一,当时他几乎没有其他实物可以参照,只能和人脑神经网络结构进行对比并借鉴。这或许是为什么他会尝试用人工神经元作为实现冯·诺伊曼结构的基本单元的原因。因此,冯·诺伊曼可以被称为是类脑计算机探索的先驱。
到21世纪的今天,借鉴人脑来提升计算机智能处理的能力已经成为大家的共识。鉴于类脑计算机的潜在前景,类脑计算机的定义也就成为大家关心的问题。毕竟名不正则言不顺,科研必须要建立在准确的定义之上。
类脑计算机肯定要和人脑有类似之处。因此,宽泛地说,只要和脑有像的地方的计算机,就是类脑计算机(宽泛定义)。可是,脑的特性太多,随便找一台计算机,就能很容易地找到它与人脑相似的地方。例如,人脑外面有一个很硬的颅骨,把大脑的处理单元(神经元细胞)保护起来。类似地,计算机有一个硬铁壳机箱保护处理单元(CPU),按说这也是宽泛的类脑计算机。再比如,脑里面很多神经元在并行处理,而现在的并行计算机也是做并行处理,因此,并行计算机宽泛上说也是类脑的。显然,类脑计算机的宽泛定义过于宽泛,没有学术价值。
和宽泛定义相反,一个很严苛的定义是:类脑计算机是能准确模拟大脑的工作过程的计算机(理想定义)。这个定义看起来至少能把很多看上去确实“不类脑”的那些传统计算机剔除出去。很多科学家也在朝这个方向努力。但这个理想定义的问题在于太过理想,似乎大脑就是一本摊在我们面前的书,我们只要照着书抄,就能做出一模一样的计算机来。可惜现实远远没这么简单。人类大脑包含1000亿神经元细胞,精确模拟大脑至少要建立在能把每个神经元细胞都模拟清楚的前提下。目前公认的比较准确的神经元模型是霍奇金(Hodgkin)和赫胥黎(Huxley)提出的一个非线性微分方程组(HH方程),能很好地量化描述神经元细胞膜上电压与电流的变化过程。然而,HH方程没有解析解,只能采用一步步逼近的方法求得其近似解,因此计算量极大(现有的传统计算机同时处理百万个神经元的HH方程都是非常困难的)。
即便我们能把每个神经元都描述清楚,也不代表我们能准确地模拟出大脑的工作过程来。这是因为大脑是一个神经元-神经环路-脑区的多层次结构,每个层面上都有大量生物科学上的未解之谜。例如,即便是只具有30万神经元的小小的果蝇脑,复杂场景下的运动检测中神经环路如何运作,每个神经元起什么作用,每个突触起什么作用,依然没有人能完全说清楚。因此,我们看到欧盟“人脑计划”中很多计算机科学家对于准确模拟大脑很有热情,而神经生物学家却对此并不那么感兴趣。
再退一万步讲,就算我们能精确地模拟大脑的工作过程,也不代表我们能获得智能。即使是真正的人脑,一些基本的智能能力(例如语言)也必须通过有效的学习才能得到。如果没有把学习的机理搞清楚,类脑计算机学出来的很可能是个“白痴”大脑。而目前,神经生物学对学习的理解还非常肤浅。因此,理想定义的类脑计算机在短期内并没有实现的可能性。如果我们执着于理想定义,那类脑计算机的研究就无法开展了。
宽泛定义和理想定义对于类脑计算机来说都不合理。那么,合理的定义到底是什么呢?我们认为,合理的定义必须要突出以下两点:
必须面向智能。事实上,传统计算机在单纯的计算上超过人脑无数倍。借鉴人脑的机理来做单纯的计算毫无意义。人脑的优势在于智能处理能力强。因此,类脑计算机必定是面向智能处理的。
采用神经网络处理方法。智能是一个很大的范畴,除了神经网络,还有知识表示、演化算法、支持向量机、人工生命等内容。但是,生物脑的基本特点是神经网络。生物脑的进化过程实际上就是生物神经网络不断复杂化的过程,人脑是这个过程的巅峰。如果偏离了神经网络,那可以称为是“智能”,但确实不适合被称为“类脑”。
结合上面两点,一个比较合理、现实的类脑计算机的定义就呼之欲出了:采用神经网络处理方法的智能计算机(现实定义)。现实定义抓住了类脑计算机的根本目标和核心手段,同时又给结构设计者留下了足够的发挥空间。因此,下文的讨论中我们提到的类脑计算机都是指合理定义下的类脑计算机。
合理定义并没有限定类脑计算机具体采用什么体系结构。有的研究者认为类脑计算机的体系结构应当和人脑的结构完全一样,或者尽可能相像。但是这个思路是不现实的,问题在于,为了具备学习和适应环境的能力,人脑的生物神经元和突触是在人的整个生命周期中不断变化的。而硬件的器件和线是难以在制造之后进行调整的(可重构硬件也只是事先留下了冗余的器件和连线供选择)。这就意味着,永远不可能做到每个软件(或者说生物)神经元和突触都对应一个类脑计算机中的硬件神经元和突触。进一步地,为了在软件和硬件之间搭起一座桥梁,类脑计算机必须要有指令层或者具有类似功能的东西。
指令层似乎把类脑计算机与冯·诺伊曼结构的界限变得模糊了,因为冯·诺伊曼结构里面有指令。这里我们需要再次强调,类脑的目的绝不是突破冯·诺伊曼结构,而是提升智能处理能力,两者之间并不矛盾。事实上,冯·诺伊曼自己也开宗明义地提出,冯·诺伊曼结构是可以建立在人工神经元之上的。
还有一种说法是冯·诺伊曼结构带来了访存瓶颈,而类脑计算机是模仿人脑的存算融合机制。这种说法显然是不准确的。访存瓶颈并非冯·诺伊曼带来的,而是现有CPU的工艺和内存工艺不同导致的。而存算融合对类脑计算机来说也不是一个必需品。存算融合的计算机也不一定是类脑计算机。比特币矿机中计算和存储紧耦合在一个芯片上,现在的GPU也已经可以把内存和芯片封装在一起,但一个合理的类脑计算机定义显然应该把比特币矿机和GPU排除在外。
总而言之,类脑计算机必须有一个指令层来跨越变化的软件和不变的硬件之间的鸿沟。这也是我们为什么会提出国际上首个深度学习指令集DianNaoYu。具体结构上,完全可以采用冯·诺伊曼架构,或者量子计算机,或者流计算机等等,只要它能足够有效地进行神经网络处理。至于计算和存储是否在一个芯片上,指令集是什么样子,显然不是也不应该是类脑计算机的本质。
一个很现实的问题是,神经网络模型有很多种,类脑计算机显然不可能全部支持。那么类脑计算机应该采用哪种神经网络模型呢?这就要看我们的根本目标了。我们的根本目标是智能,因此评价标准应该是很明确的:应该支持智能处理能力最强的神经网络模型。或者说,神经网络模型智能处理能力越强,我们就认为它越接近脑,类脑处理器就越应该支持它。
例如,IBM设计了一款脉冲神经网络芯片TrueNorth,曾经引起了很大的轰动。脉冲神经网络有时域信息,每个神经元的输出是一串电脉冲。而深度学习用的人工神经网络中,每个神经元的输出则是一个数字。直观上看,脉冲输出确实比数字输出更接近生物神经元细胞。但是深度学习权威雅恩·乐昆(Yann LeCun)指出,TrueNorth所采用的脉冲神经网络“从未在任何有意思的(智能处理)任务上表现出与当前最好算法接近的精度”。在MNIST这样的基准测试集上,脉冲神经网络的精度(90%左右)甚至比不过20世纪80年代的浅层人工神经网络(95%以上)。由于TrueNorth没有实用价值,IBM也开始遣散这个项目组,自己掉头去做深度学习了。
事实上,脉冲神经网络模型看上去和生物神经元很接近,但却没有好的智能处理能力,这或许意味着,这个模型只是在一些对智能处理帮助不大的地方具备了生物神经元的“形”,而没有找到真正对智能有根本性影响的“神”。当然,我们也不排除在未来的某个时间点,通过生物和计算机的交叉研究,脉冲神经网络模型在智能处理能力上取得突破性进展,真正做到形神兼备。
类脑计算机的发展
类脑计算机最终的目标是在与人脑同样的体积和能耗下达到类似的神经元和突触的处理速度,从而具备较强的智能处理能力。达到这个目标需要多方面的努力。
在体系结构上,应当脚踏实地,基于现有成熟的CMOS(Complementary Metal Oxide Semiconductor,互补金属氧化物半导体)器件工艺,面向智能处理效果最好、应用面最广泛的神经网络模型(目前是深度学习)。通过设计专门的指令集、微结构、人工神经元电路、存储层次,有可能在3~5年内将深度学习模型的类脑计算机的智能处理效率提升万倍(相对于谷歌大脑)。提升万倍的意义在于,可以把谷歌大脑这样的深度学习超级计算机放到手机中,帮助我们本地、实时完成各种图像、语音和文本的理解和识别;更重要的是,具备实时训练的能力之后,就可以不间断地通过观察人的行为不断提升其能力,成为我们生活中离不开的智能助理。
在算法层面上,可以更开放地探索各种不同的神经网络模型,不仅仅是深度学习这样的人工神经网络模型,现在还不成熟的脉冲神经网络模型也值得探索。科学的发展路径往往会出人意料。在5年之后,或许最好的神经网络模型不再是今天的深度学习。到那时,类脑计算机的体系结构必须相应地进行调整(甚至革命)来支持新的最好的神经网络模型。
在器件层面上,忆阻器和ReRAM等新器件可能带来更高的存储密度,使一些新的类脑计算机体系结构成为可能。但是,这些器件的研究离成为市场上可以大规模广泛使用的成熟技术还有很大的差距,甚至有很大的风险。在历史上,已经有很多当时看上去很有希望的新器件,最终并未达到人们的期望,未能走向市场。因此,把当前类脑计算机的研究押宝在新器件上风险较大。一个比较稳健的策略是将忆阻器和ReRAM等新器件当作5~10年后类脑计算机研究的重要技术储备。
购书可扫二维码