太子爷小说网 > 文学电子书 > 智能简史 >

第5节

智能简史-第5节

小说: 智能简史 字数: 每页4000字

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 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)。在二维胞腔自动机上的每一个细胞都类似于棋盘上的一个方格,但是有两个不同。一个是这个棋盘有无限个方格,另一个是方格的颜色不仅限于黑色或白色,而可以是有限集�

返回目录 上一页 下一页 回到顶部 赞(0) 踩(0)

你可能喜欢的