友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
八万小说网 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

智能简史-第4部分

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!



教迳闲业挠钪嬷饕骞勰睢�

  几年前,我给一些退休人员作关于人工智能辩论的讲座。结束后,一个出版商找到了我并问:“你考虑过写一本关于人工智能的书吗?”这个问题的答案就是您现在手中的这本书。

我的工作

  在这一节里,我将对我这些年所从事的工作进行更详细的阐述,重点介绍近十年的,因为这些和本书的主体最有联系。

  早在20世纪80年代晚期,我就开始利用一种模拟达尔文进化的软件形式,所谓的基因算法(Genetic Algorithm)来设计神经网络,并开始发表一系列的科学研究论文。到我获得博士学位时,我已经发表了20篇论文。

  神经网络可以被想象成由像枝节一样的纤维(叫做轴突(axon)和树突(dendrite))连接起来的三维大脑细胞矩阵。来自神经元的信号由轴突发送出去。树突将信号传入神经元。当一个轴突和一个树突相连,形成的联系叫做神经键(synapse)。

  在一个真正的生物大脑中,每一个神经元或者大脑细胞拥有上万个神经键。也就是说,它可以被上万个来自其他神经元的信号所影响。这些神经信号同时到达一个神经元,被加强或者加权,然后相加。如果总的信号大于神经元激活阀值,神经元就会被激活,也就是说,它会顺着自己的轴突发送电子脉冲信号,信号的频率决定于总的信号强度大于阀值多少。轴突的脉冲发送到神经键,进一步影响其他的神经元。

  一系列神经元图片

  神经元(人脑细胞)有许多不同的存在方式。

  这种生物神经网络可以用程序模拟。在20世纪80—90年代,一个典型的神经网络里的神经元数目大概有10余个到100个不等。当时我的博士研究工作,每个神经网络通常最多拥有16个神经元。这和我现在工作中使用近1亿个神经元形成了强烈的对比。

  下面几页对我的工作进行了更为详细的描述,并且技术性更强。我希望你能够坚持下去,但是如果理解起来确实有困难的话,跳过此节也不会太影响对本书总体的了解。同时在这里提醒您一下,本书最后有一个术语表,可能会对阅读有所帮助。

  神经网络,许多神经元相互连接起来形成复杂的神经网络,也就是人脑

  CBM演化出来的神经网络的二维图像

  基因算法

  基因算法(Genetic Algorithm)是一种达尔文进化的程序模拟形式,用来优化任何被进化的性能。实际应用中,我把基因算法用于神经网络的进化。具体通过以下的方式来模拟神经网络的运行。首先要考虑如何描述神经网络本身。我使用16个神经元并且让它们和自身以及其他神经元连接,因此,总共有16×16=256个连接。输入信号的强度,以普通的十进制数字来表示,例如10。47,再乘以一个权值,例如0。537,然后相加。作为这个概念的一个例子,想象一个非常简单的只有两个神经元的网络,因此,有4个连接。神经元1输出的信号通过连接或形成神经突起C11发送到自身,并且通过连接或形成神经突起C12发送到神经元2。神经元2输出的信号通过连接或形成神经突起C22发送到自身,并且通过连接或形成神经突起C21发送到神经元1。假设在某个时刻的强度是S1和S2(例如,10。54和7。48)。

  每一个连接Cij(或者形成神经突起)拥有一个相应的权值Wij,用来和通过该连接输入的信号强度相乘。因此,输送到神经元2的信号总强度应该是(W12* S1 + W22* S2 )。对于神经元1计算也类似。总共有4个这样的权值。假设每一个权值的范围在–1到+1之间。因此,每一个权值可以用二进制小数来表示,比如说8个比特 (二进制数字,0或者1)。4个这样的数字可以用4×8=32个比特来表示,可以排列成有32个比特的一行。对于16个神经元,我们将用一个有16×16 ×8=2 048个比特的行或串来表示我将用来进化的神经网络的16×16个权值。

  如果我知道2 048个比特的值(0或者1),我将可以计算所有的256个权值,并且可以通过它们建立一个完全连接的神经网络。相反,如果知道所有的权值,并且知道输入信号的初始值,我们就可以计算出每一个神经元发射时候的信号强度。如果知道了每一个神经元是怎么发射的,就会知道整个神经网络是怎么发射信号的或是怎么运转的。我们可以提取某些神经元的信号,并且把这些信号当作控制信号,来控制一些活动,比如说,通过控制
机器人腿的角度来让它行走。

 为了解释基因算法是怎么运用于此的,想象一下产生了100个随机的比特串,每个长2 048个比特。从每一个比特串我们可以构造一个相应的神经网络。对于每一个网络都采用同样的初始信号来让网络的信号传输启动。提取其中的某些输出信号并且使用它们,比如,通过控制构成棍形腿的4个线条的角度来让棍形腿走路。我们可以测出在一定时间内腿的走动距离。

  那些走更长距离的神经网络的比特串,可以存活到下一代。那些走的距离短一些的比特串则会死亡,这就是所谓的达尔文定律,即“适者生存”。比特串越适应,即具有更高性能分数或“高适应值”的就越会复制自己,产生所谓的“孩子”或后代。然后,这些孩子和它们的父辈一起被“变异”,也就是说,每一个比特有一个很小的概率来改变相应的值 (0变成1,1变成0)。两个比特串可以“交配”,即一个称为“特征交换”的过程。它有很多方式。一个简单的方式就是,选取两个父比特串或者通常所谓的 “染色体”,在同样的位置把它们分成两部分,然后交换相应的部分。这等价于性,基本上来说就是混合来自父辈的基因来产生后代。

  越适应的父辈就拥有越多的后代。每一代基因算法拥有一定的总体数量,例如100。大多数的变异和特征交换会让染色体拥有更低的适应值,所以它们将被从总体中清除。偶尔的一次变异或一次特征交换则会增加一点染色体的适应值,以至于在某个时候它会把自己的父亲或者其他低适应值的染色体挤出总体。通过对这样的过程循环几百次,就有可能进化出性能更好的神经网络,或者任何需要进化的目标。

  神经系统进化

  当我在布鲁塞尔攻读博士学位的时候,研究如何进化出可以随时间变化输出信号的神经网络。据我所知,在此之前没有任何人做这样的事情。在此之前,曾经有人把基因算法应用到神经网络进化中,但这些应用都是静态的,也就是说,输出的信号不会随着时间而改变。我觉得这些限制是不必要的。基因算法应该能够解决随时间改变信号的问题。当我想通了这一点后,就开始研制可以让棍形腿走路的神经网络。我成功了。这需要一些小技巧来让它进化,它确实实现了。

  这个发现,说明动态进化(和静态相对应)的神经网络是可以实现的,这个发现给我打开了一个崭新的世界,并且产生了一个新的被称作“神经系统进化”的研究领域。我开始考虑下一步的工作。我产生了一个新想法,那就是如果我用一个神经网络进化出一种行为,那么我就可以用第二个神经网络,也就是说,用一套不同的权值,进化出一个不同的行为。权值设置决定输出信号的动态性。

  于是我充满信心,不再局限于二维平面的简单的棍形腿试验,而是开始进行我称作“Lizzy”的三维生物模拟行为。如果我能成功地进化出一种行为,那么就可以进化出一系列的行为,而每一个神经网络对应于一个行为。现在我就可以更换行为,让Lizzy先走,然后改变方向。为了使行为转换更平缓,唯一必要的就是先停止“向前走”行为生成网络(或者是我所称作的模块)的输入,然后输入行走模块。模拟试验显示动作转化很平缓,这非常好。现在我知道我可以让类似四脚生物的Lizzy展示行为库里的所有行为。

  现在产生的问题就是:什么时候改变行为。也许这样的决定来源于环境的刺激。我开始试验是否可以进化出探测器模块,例如,信号强度探测器、频率检测器、信号强度差异探测器,等等。是的,这是可能的。另一个逻辑步骤就是试着进化决策类型模块,例如这样的类型——“如果输入1的信号强度大于S1,并且输入2的信号强度小于S2,那么采取An 行为”,也就是说,刺激信号可以传送到执行An行为的模块。

  综合所有的三种模块,也就是行为产生(或行为模块)、探测模块和决策模块,看起来好像可以开始制造人工神经系统的工作了。如果有很多这样的模块,那么我认为可以很合适地称这样的集合为一个“人工大脑”。就是在这样的阶段上,我信心满满,开始朝着人工大脑先驱者的方向前进。
  FPGA技术的应用

  困难依然存在,我在20世纪80年代晚期和90年代初期所使用的计算机对于我所构想的任务来说简直慢得“不可救药”。当我开始试用十几个进化的模块时, Lizzy在计算机屏幕上的模拟速度显著变慢。每当我加上另一个模块的权值后,模拟速度就会变得更慢一些。很显然,这不是一条正确的路。怎样才能解决这个问题呢?

  这个时候,也就是1992年,我已经完成了博士学位,开始了在日本的博士后工作。那年夏天,我和我所合作的、在维吉尼亚的乔治 ·梅森大学的一个电子工程师朋友进行了一次交谈。我问这位熟人怎样才能使我的神经网络模块的进化速度通过电子技术得到提升。讨论了半个小时后,他提到了一个称作FPGA(Field Programmable Gate Array可编程门电路序列)的技术。因为我不是电子工程师,所以我从来没有听过这样的东西。“什么是FPGA?”我问。他告诉我这是一种可编程的特殊芯片,也就是说,我们可以用一个比特串来指令芯片里的电路怎样去自我连接(或者用术语来说,就是自我“设置”)。

  我顿时兴奋无比。一个构想闪过我的脑海。既然在过去的几年里我一直利用基因算法来进化神经网络,我现在的倾向是把设置比特串想象成基因算法里的染色体,因此,在芯片里进化硬件的想法看起来是可行的了。我开始不断地“拷问”我的朋友,问这些设置比特串可以无数次的发送吗?他想了一会,回答说,如果芯片是基于RAM(就是计算机内存)的话,那么就像任何计算机里的普通内存一样,可编程芯片可以被无限制地重新编程。

  我非常高兴,因为这意味着可以通过发送随机的比特串,来随机地设置或者连接可编程芯片,并产生复杂的随机电路。如果有另外一个被编程的用来测试随机程序芯片的性能电路,那么就可能在硬件上以硬件速度执行基因算法。

  我为这个构想而激动不已,以至于我一回到日本的研究组就马上为我的想法作了一次研讨会,并且开创了所谓的“可进化硬件”的研究领域。并发表关于这个想法的论文,向同事宣扬,在会议上作演讲,等等。可进化硬件(Evolutionary Hardware 或者 EH),现在已经是个确立的研究领域了,每年都会在美国、欧洲和日本举行研讨会并出版相关的学术期刊。作为该领域的先驱,我常常在自己的日常工作中试用它的基本思想。

  紧接的那一年,即1993年,我转到日本京都的研究实验室从事人工大脑的制造工作。我相信,可进化硬件是一个使人工大脑制造变为可能的有效工具。

  我开始写论文,声称我打算在2001年前制造一个拥有10亿神经元的人工大脑。在1993年,宣布这样的计划常常会招来不信任的眼光。因为在那时,大部分的神经网络研究者仅仅使用几十个或者上百个神经元。就像我早几年一样,突然听到某个人说要使用上十亿个神经元,简直是非常可笑的。为此我被嘲笑、奚落。

  但是,我坚信我的想法是可行的。如果某个人制造一种基于可进化硬件原理的特殊计算机,那么,其电子性的进化速度将会使大脑制造成为可能。我用数学进行了推理,证明在2001年前制造出拥有十亿个神经元的人工大脑是可行的。我和日本实验室有一个7~8年的合同,因此,我想我有足够的时间来实现我的梦想。

  我的第一个任务就是选择一种可以设计和进化神经网络的媒介。我选择使用胞腔自动机(Cellular Automata 或者简称为CA)。在二维胞腔自动机上的每一个细胞都类似于棋盘上的一个方格,但是有两个不同。一个是这个棋盘有无限个方格,另一个是方格的颜色不仅限于黑色或白色,而可以是有限集合里的任何颜色。每个方格在每个单位时间里可以改变其颜色而成为集合中其他的任何一种颜色。一个特定方格所要改变的颜色决定于它现在的颜色和其邻接方格的颜色。举个例子,如果北边方格是红色,东边方格是黄色,南边方格是蓝色,西边方格是绿色,并且中间的方格是棕色,那么在下一个时刻,中心方格将变为紫色。

  通过适当地选取几千个这样的规则,我就可能让这些胞腔自动机像神经网络一样生长和进化。举个例子,我可以生成一个三个细胞宽的路径,通过它我可以发送生长细胞,让它们在路径的中间向前移。当生长信号到达生长路径的尽头时,它可以让路径向前延伸、左转、右转、分裂,等等,这些决定于生长信号的颜色。通过改变胞腔自动机路径中间生长信号的顺序,我能够进化基于胞腔自动机的神经网络。

  这个过程有两个步骤。第一个是生长阶段。经过几百个单位时间后,生长达到饱和。再没有三个细胞宽的胞腔自动机路径会生长了。这些路径就是神经网络的轴突和树突。当生长阶段一完成,也就是说生长控制细胞从网络里被清除后,生长的神经网络可以被随后的信令阶段所使用。输入信号会被施加,并且会扩散到整个网络。这些信号就像我早些年进化出的神经网络中的信号一样。它们可以在输出点被提取出来,并且可用来控制那些适应值(fitness)或性能可以被测量的过程。这个适应值就是整个网络的适应值,而网络是依次产生于一系列生长指令的,也就是一个含有6个(所有的数字)整数的随机串。

  我所做的就是让神经网络和胞腔自动机结合起来。这些据我所知没有前人做过。之所以这么做是因为我认为胞腔自动机是一个可以拥有几十亿个胞腔自动机细胞的合适媒介,归于十亿个神经元是足够了。这对我来说是可实现的。当时的工作站(比个人电脑强大一些的计算机)的内存大概有十亿字节。内存是很便宜的,因此,既然我可以在一个字节(8位)上存储胞腔自动机细胞的状态或颜色,并且我的工作站可以拥有十亿字节的内存,那么我将可以存储十亿个胞腔自动机细胞的颜色,十亿个!这是很多的,足够在其中放入一个拥有大量神经元的人工大脑。空间将不会是问题。那时候的技术允许这样做,这是可实现的。

  我花费了一年的时间去写所有的这些规则(北-东-南-西-中的类型规则)来证明二维版本的基于胞腔自动机的神经网络是可以运行,可以进化的。我不得不手工编写(有软件工具来帮助我)大概11 000个这样的命令来让它工作,结果它工作了。我成功地进化了振荡器电路、信号强度探测电路、直线运动探测电路,等等。是时候去研究拥有完全不同拓扑结构的三维版本了。在二维结构里,电路会相互碰到,它们不能跨过另一个电路。然而在三维结构里,胞腔自动机路径可以通过第三维相互交叉。三维电路的动态性和进化性比二维电路要丰富很多。仅仅两年后我就让三维版本开始工作了,这个版本有大概60 000个命令。

  但是,这个时候我在日本过得非常郁闷。我们组的顶头上司有一个政策,就是每一个人负责一个项目,这让我觉得非常孤独和智力空虚。我没有一个可以真正交谈的人。在给他们施加了一些压力后,我终于在1996年得到了一个硕士生助手—— 一个年轻的德国人。

  我向我的助手解释,三维版本已经基本上完工了,并且我对一直使用的胞腔自动机模型已经越来越清楚。我向他介绍了我想直接在电路上以电子速度产生和进化基于胞腔自动机的神经网络的梦想。我觉得应该简化胞腔自动机模型,让它可以适应于当时的新想法,即1996年的电子技术。他聆听了我的一系列愿望,然后消失了两个星期。当他回来的时候,带来了一个崭新的、更加简化的神经网络模型,它保持了我的旧模型里的大部分特征,但是加了一些新特征,使它变得可以直接实现于电子装置。这个新模型被称为“CoDi”。

  大概在这段时间,也就是1996年下半年,一个美国电子�
返回目录 上一页 下一页 回到顶部 赞(1) 踩(2)
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!