进化算法

神经进化正在复兴。主要的人工智能实验室和研究人员正在试验它,一丝新的成功点燃了更多的热情,能对于深度学习产生影响的新机遇正在出现。也许你在深度学习全部的激动人心的时刻并无听到过神经进化,但它只是潜行于表面之下,做为一个小的热情的研究社区的课题存在了几十年。如今它正伴随着大众对于它的潜力的了解而开始得到更多的关注。html

简单来讲,神经进化是人工智能和机器学习领域的一个分支。它力图触发一个和产生咱们人类大脑相似的进化过程,只不过这个过程是在计算机里实现的。换句话说,神经进化试图开发经过进化算法去寻找进化神经网络的方法。ios

当我在上世纪九十年代末期第一次开始人工智能的研究的时候,关于能够在计算机里去进化大脑的想法和我想冒险的感受产生了共鸣。在当时这仍是一个不寻常的、甚至是很含糊的领域。但我对这个思想很是好奇并且也颇有亲切感。结果就是我生命里的20多年都在思考这个主题,并和杰出的同事一块儿开发出了一系列的算法,好比NEAT、HyperNEAT和新颖性搜索(novelty search)。在本博文里,我但愿能带给你神经进化的一些激动人心的部分,并对这个主题给出一些洞见,但不会有科学文献里那些让人头晕的术语。我也会部分采用自传回顾的视角来把我在这个领域里摸爬滚打的经历讲述一下。我但愿我本身的故事能为更多的读者打开一扇探索在计算机里进化大脑的窗户。算法

深度学习的成功

若是你最近一直在跟踪人工智能或是机器学习领域,你能够已经据说了深度学习。要感谢深度学习,计算机已经在诸如图像识别和控制无人驾驶汽车(甚至是控制电子游戏的角色)这样的任务上接近或是有时超越人类的表现。这些成就已经帮助深度学习和人工智能从默默无闻的学术期刊里一跃出如今大众传媒上,并激发了公众的想象力。那么在深度学习的背后是什么使这一成功成为可能?编程

实际上,在深度学习的表面下是一个已经有几十年历史的技术的最新形式,它就是人工神经网络(ANN)。与不少AI领域里的思想同样,ANN也是来自生物学的灵感。对ANN来讲,它是模拟人类的大脑。咱们之因此选择大脑做为AI的灵感来源,是由于大脑是迄今为止惟一明确的智能载体。当咱们想实现人工智能时,在某种程度上,模仿大脑应该是一个讲得通的思路。大脑的一个关键组件就是神经元。它是一个很小的细胞,能够经过链接想其余的神经元发送信号。当很是多的神经元彼此链接造成一个网络(正如大脑里就是这样),咱们称之为一个神经网络。所以,一个ANN就是试图模仿相似神经元这样能够相互间发送信号的组件的集合。这就是在深度学习里面的“深度网络”背后的机理。网络

ANN的研究人员经过程序来模拟这些神经元以及在他们中间传输的信号,得到了一个比较模糊的模拟大脑里发生的事情的过程。固然,这二者间是有着很是多的不一样的。但真正的挑战是,仅仅只是简单地把一堆相似神经元的元素彼此相连并让他们相互间共享信号并不能产生智慧。相反的,智慧是精确地来源于神经元是如何链接的。架构

例如,一个神经元强烈地影响着另一个神经元被称为有一个很大的权重链接到它的伙伴。在这里,这个链接的权重决定了神经元是如何彼此影响的,从而产生了一个神经网络里神经激活的特定模式,来响应到达神经网络的输入(好比,来自眼睛的输入)。要想获得一个智能的网络,相应的挑战就变成了如何决定网络链接的权重的问题。app

一般,没人会经过手工计算得出链接的权重(考虑到现代的ANN通常都有上百万个链接,你就能明白为何手工的方法不现实了)。相反的,为某个任务找到正确的链接权重就被当作了一个学习的问题。换句话说,就是研究人员花费了大量的精力去发明让ANN本身去为特定的任务学习最佳权重的方法。最多见的学习权重的方法就是把ANN的输出(好比,那个看着像是条狗)和标准答案去比较,而后经过特定原则里的数学公式来改变权重,从而使下一次输出正确的可能性更大。机器学习

在通过这样无数次的比对样例(可能会有上百万个)的训练后,神经网络就开始可以分配正确的权重来准确地回答各类各样的问题了。常常性的,神经网络的能力甚至能泛化到能够回答它没有碰到过的问题,只要这些问题和以前训练里看到的问题差异不那么大。到此为止,ANN基本上学会了去应对特定的问题了。一种常见的调整权重的方法就是随机梯度降低法,它是以前提到的深度学习里面很是流行的一个组件。最近几年的深度学习的实现基本上是对由很是多层的神经元(这就是为何叫“深度”的缘由)构成的ANN进行海量的训练。这也得益于近年来出现的强大的计算硬件的帮助。学习

但这里有一个我还没提到的问题,即咱们首先如何决定谁链接到谁?换句话说,就是咱们的大脑不仅是由链接权重决定的,它仍是由大脑内部的结构决定的。随机梯度降低甚至都无法去解决这个问题,而只是尽力去优化给它的链接。测试

这些链接是怎么来的?在深度学习里,答案就是:它们基本是由研究人员基于必定程度的经验来决定整个网络的架构是什么样的。与之相对的,天然界的大脑的结构则是经过进化造成的。咱们人类大脑里的100万亿个链接的架构是来自于数百万年的优胜劣汰的天然选择过程后进化来的。

咱们大脑的架构是超级无敌。毕竟绝不夸张地说,人类的智慧都集中在那里。这实际上就意味着天然界里的大脑的进化是迄今为止惟一已知的产生强智慧的过程。神经进化学的目标就是在计算机里触发一个相似的进化过程。从这个方面讲,神经进化学是人工智能专业里惟一的一个有着实际的概念证实(大脑确实是进化来的)的分支。咱们知道这是一条能够产生智慧的道路。

说的更清楚点,深度学习传统上关注于对ANN编程来学习,而神经进化则侧重于大脑网络自身的原始架构。它能够包括谁和谁来链接、链接的权重以及(有时)这些链接如何容许被改变。固然,这两个领域是有一些交叉的。好比ANN依然须要为特定任务进行学习,不管是否进化过。有可能进化获得的ANN能够利用深度学习里的方法(好比随机梯度降低)来得到恰当的权重。实际上,深度学习甚至能够被认为是神经进化的一个兄弟。它研究的是如何对于一个ANN(不管是进化来的仍是预先定义)的架构来学习链接的权重。

可是,学习机制自身是能够进化的观点也是可能的,从而让神经进化有着能超越或是更详细地说明传统的深度学习的潜力。简而言之,大脑(包括它的架构和如何学习)是天然选择的产物。而神经进化能够探索大脑出现的全部因素,或是借鉴深度学习的某些方面而让进化来决定其余的部分。

神经进化是怎么工做的

如今咱们对于什么是神经进化已经有了初步的概念,如今能够聊一聊它是怎么工做的。第一代的神经进化算法出如今上世纪80年代。在那个时候,一小批研究人员认为对于传统ANN里的训练算法(反向传播,随机梯度降低的一种形式)的一个可替代方案就是神经进化。在早期的系统里,神经进化研究人员会(就现在日的深度学习里那样)决定神经网络的架构,即哪一个神经元连哪一个。而后简单地让进化而不是随机梯度降低来决定权重的大小。由于总体的网络架构不能由进化来改变,这种方法被叫作定拓扑神经进化。

这样的系统和天然界里的神经系统有一些不同,由于定拓扑神经进化里的ANN的基因已经编码了它们的权重,从一“出生”就固定了。用这种方法,ANN一出生就知道了它们将会知道的事情,而不能在随后的“生涯”里进一步学习。这个场景有一点让人困惑,由于咱们一般认为咱们会在生命过程里学习一些新的东西。可是若是你仔细想一想,在这些系统里的繁衍过程其实就是在学习。由于当父母在生育能更好适应一个任务的后代时,在一代一代的繁衍过程当中学习就在发生。

相似这样的系统是如何真正地被设定的?如何进化一我的工的大脑来解决一个问题?实际上,这些都很是像动物的繁衍过程。设想你想进化一个神经网络来控制一个机器人行走。对于这种类型的任务,咱们一般已经有了不少的模拟器,由于神经进化会进行很是多的尝试,进行模拟会快不少且风险更小。所以咱们将从一个物理模拟器里的机器人开始。

如今咱们须要一些ANN来开始。在刚开始,咱们并不知道如何解决这个任务。所以咱们就先产生一个随机ANN的群体(好比100个)。就定拓扑ANN而言,这个100个预先定义的神经网络个体的每一个的权重的都是随机的。如今咱们仅仅是须要进行选择。这意味着选择更好的个体来繁衍后代。

为了进化咱们的群体,咱们首先取一个ANN,并让它来控制模拟的机器人身体。咱们让ANN来指挥身体如何移动,这就是网络的输出。这个ANN也可能接收来自身体的反馈输入,好比感知到哪只脚触地了。而后计算机就仅仅是观察ANN的控制的表现。群体里的每一个ANN都被用这种方法测试过,并基于它们各自的表现,给一个叫“适应”的分值。

很清楚的是,初始群体里这些随机产生的网络是不大可能有好的表现。他们可能像其余东西同样更喜欢打来打去(毕竟它们的大脑是随机产生的)。这也没什么,由于这里的关键不是让一个ANN很是好,而是发现一些比其余的要好,甚至只是好那么一点点便可。也许某个网络能比其余网络让机器人往前多挪一点。驱动神经进化进步的引擎就是选择那些比其余的稍微强一点的网络做为繁衍下一代的父母。算法将会经过稍微地修改这些ANN(好比稍微改变它们链接的权重)来产生它们的后代。虽然有一些后代会比它们的父母表现要差,但某些将会再稍微好点(好比晃的少一点)。那么这些就又成为产生下一代的父母,并按这个逻辑持续下去。用这个方法,总体的策略就是持续的选择更合适的个体做为父母。实际上,这个神经进化的过程是一个ANN自动繁衍的农场,计算机基于它们的适应性选择父母来产生后代。

整个神经进化的核心思想是很简单的:它就是繁衍后代。但基于此之上的事情就变的有趣得多了。在第一代定拓扑神经进化算法出现后的几十年间,研究人员不断地被现实所打击。尽管这些算法能够产生新的可能性,它们进化出来的大脑与天然进化的相比还差的很是远。这个差距的缘由有不少,可是这个领域使人着迷的一面就是常常会出现对天然进化的新洞察,并带来神经进化算法的大幅度提高。很常见的是这些洞察通常是反直觉的,推翻了以前的一些假定并展示了天然界的神奇之处。伴随逐步地揭开这些秘密,咱们发现了如何为进化大脑来设计更厉害的算法。

复杂性增长

在神经进化学里取得进步意味着什么呢?通常而言,是意识到可进化的ANN的复杂性的局限,而后发明一个新的方法来客服这个局限。例如,上世纪八九十年代里的定拓扑算法的一个清晰的局限就是它与天然里的状况明显不一致:这些算法进化的ANN永远不能变大。相反的,天然界里的大脑在尺寸和复杂性上均可以沿多个谱系来增大。咱们祖先大脑的神经元数量比咱们现有的100万亿个神经元要少很是多个数量级。很明显,若是ANN的拓扑在一开始就固定了,这样的复杂度是不可能进化出来的。

所以,研究人员开始试验让ANN的拓扑和权重都进化(TWEANN,拓扑权重全进化人工神经网络)。在这个更灵活的变形版本里,父母ANN的架构(拓扑)能够在它们的后代上被稍微地改变,好比新增一个链接或是一个新的神经元。尽管这个思想是很简单的,但它带来的意义是巨大的,由于这意味着大脑能够进化的更大了。多种TWEANN算法在上世纪九十年代出现,尽管它所试图去解决的问题依然相对简单,好比对简单的数学或是控制问题给出正确的答案。但这个时代的使人兴奋之处并非它解决的问题自己,而是发现人工进化相似大脑的架构和权重的无限潜力。这种系统的局限当时还没有被发现,所以一切看起来皆有可能。

下面给出一些这个时代的ANN试图去进化并解决的问题。一个流行的基准问题就是所谓的杆平衡问题。这个问题是要控制一个模拟出来只能往两个方向运行的小车。小车上经过铰链和一个杆子相连。由ANN控制的小车能越长时间的控制杆子不倒,它的适应得分就越高。这个问题就相似于试图去平衡一个竖在你手掌里上的铅笔,它须要仔细地协调和快速的反应速度。随着学习方法的不断进步,ANN已经能够解决更加困难版本的杆平衡问题,好比同时平衡两个杆子。解决这样问题的成果标志着这这个领域的进步。研究人员能够宣称他们的算法是首个解决了一种或另一种变形的杆平衡的方法。

若是你对这一时期的算法的技术细节感兴趣,Xin Yao的这篇精彩的1999年神经进化算法的回顾论文是好的文献。大部分这个时期的创新工做都来自Stefano Nolfi和Dario Floreano。他们在2000年的经典著做《Evolutionary Robotics》(进化的机器人)里介绍了其中大部分的最佳思想。在世纪之交的另一本让进化神经网络流行的著做是由Fogel写的经典:《Blondie24: Playing at the Edge of AI》,Morgan Kaufmann出版发行。其中讲述了神经进化算法经过和人类比赛西洋棋来学到大师级水平的故事。

在1999年,做为德州大学Austin分校的Risto Miikkulainen教授的研究组里的一个低年级博士生,我开始严肃地思考研究神经进化这个课题。几个重要的定拓扑算法已经在这个研究组里被发明出来,好比David Moriaty和Faustino Gomez与Risto Miikkulainen发表的SANE和ESP。这些算法都已经很聪明了,已经在探索网络里的单个神经元能够在它们本身的子群体里和其余的神经元合做并进化,而后和其余子群体里的神经元共同造成一个更大的有用的网络。这个想法一般被称为“合做协同进化”。

当时我正是处在这些思想发展的中间,我被大脑的进化能够在计算机里发生这个想法深深地吸引。我很是欣赏和理解经过进化ANN来解决问题的重要性,可是我真正的兴趣是在用进化能够增长复杂性这个想法上的。我但愿能开发出一种算法,它能让ANN在计算机内部探索复杂性,就如同天然界里的大脑所发生的进化那样。由于某些缘由,甚至是已有的TWEANN算法也能经过对ANN的进化来改变架构。不过它们看起来仍是缺少我想获得的让复杂性显著增长的能力。

我用了不少时间来研究已有的TWEANN算法,并思考为何它们并无达到如它们可能有的表现。一些问题是已知的。好比竞争协定问题。它是指很难合并两个父辈ANN来产生一个后代,这个操做叫“交叉”。更具体一点,不一样链接权重组合出来的网络可能有着相同的功能,这使得很难了解如何合并父辈ANN才能得到好的后代。

我很快就碰到了另一个问题,但当时并无被发现。好比在一个群体里,新架构在还没有发现它的潜能以前就趋向灭绝。这种状况下,从上一代改变架构获得下一代所带来最初的影响一般多是负面的,虽然可能在通过多代的进化后,最终进化的结果是能够利用新获得的权重的。

在个人博士导师Risto Miikkulainen的帮助下,我搜寻一个更好的TWEANN算法的结果就是一个叫加强拓扑的神经进化算法(NeuroEvolution of Augmenting Topologies,NEAT)。这个算法很快就在神经进化界获得了认同并被普遍采用。NEAT算法吸引人的地方就在于它经过一系列的创新回避了TWEANN算法的一些问题,并能经过进化来提高ANN的复杂性。一些早期的算法(好比Inman Harvey的SAGA算法)已经提供了复杂性是能够进化的线索。而NEAT算法的亮点就是它给当时的神经进化所碰到的问题提供了明确的解决方案。例如,NEAT用一个叫“历史标记”的东西来标注基因,来确保交叉后的结果一致。它还实现了一个专门为TWEANN算法设计的特性,来让创新性的新架构有更大的繁衍机会,从而对从群体里灭绝一些未成熟的架构进行了优化。

NEAT算法得到了破纪录的杆平衡得分。但更重要的是它给出了经过进化在一代一代后得到从简单到复杂的潜力。这是这个算法的商标,并激发了我远超打破杆平衡纪录的想像空间。尽管NEAT算法是在“深度学习”这个词出现以前就已经被发明了,但它有着吸引人的能够进化出愈来愈深的网络的能力。

NEAT算法已经被我本身和其余人应用在了无数的应用里(包括控制机器人和控制电子游戏代理)。它还被发现了在计算性创新里的一方天地。例如在中佛罗里达大学我本身实验室里的例子,它进化出的网络变成了艺术品(好比这个Picbreeder)和音乐(好比这个MaestroGenesis)。对它创新性的应用还扩展到诸如Galactic Arms Race这样的电子游戏。它的存在迫使这个游戏开发商去开发新的内容。

在它诸多重要的影响里,NEAT一个值得骄傲的应用就是被做为优化的方法来在Tevatron粒子加速器上去发现迄今为止最精确的夸克的质量估计(这里能够查看主要结果,这里是对NEAT应用的更多细节)。这个由YouTube明星Sethbling最近录制的视频帮助教育了超过四百万观众。它经过进化一个超级玛丽游戏的控制器来介绍了NEAT的内部工做机制。

间接编码

听起来NEAT像是神经进化的最终结果了。但这个领域的魅力之一就是每次重大的突破常常会伴随着发现以前不知道的局限或缺陷。而这些局限的发现相应地又带来了新的问题并促成了新一代的算法,这个循环一直在继续。事实上,长此以往咱们一步步地揭开了一些大天然的秘密——大脑是如何进化出来的。这一过程充满了无尽的惊喜。

例如,逐步占据我大脑的NEAT算法的一个局限就是它使用了一种叫作直接编码的“人工DNA”。这意味着ANN里的每一个链接都被基因组里的一个单独的对应基因所描述。在你只有百这个数量级的链接的时候,这没什么事。但若是你想获得的是更大的大脑,它就开始变得不易操做了。举个例子,人类大脑里有100万亿个链接,在NEAT里就须要有100万亿个基因来编码。换句话说,尽管NEAT确实能经过进化增长链接和神经元数量来扩展ANN的尺寸,增长100万亿个链接意味着进行100万亿级别的变形。即便能想办法来每秒进化一次增长一条链接(意味着每秒繁育一代),在100万亿级别的大脑能够被进化出来好久以前,太阳就已经湮灭了。所以,NEAT算法一定是忽略了一些天然界里存在的特性。这些特性致使了能在相对短的时间里进化出巨大的脑结构。

为了应对这个挑战,神经进化研究人员已经探索了另一类不一样的基因编码方法,叫作间接编码(相对于直接编码)。用这种方法,基因的数量能够比神经元和链接的数量少不少。换而言之,DNA是大脑的一种压缩表现形式。由Josh Bongard、Greg Hornby和Jordan Pollack等开创的间接编码(包括对ANN和实际大脑的编码)工做帮助展现了间接编码能进化出使人印象深入的更像天然界中的大脑结构的威力。这些工做包括:进化出来的人工创造物展现了天然界有机体全部的规律响应性(Bongard的一些做品展现在这里),以及一系列来自Brandeis大学的Hornby和Pollack创造(论文在这里)的使人惊奇的进化出来的带有有趣结构模式的桌子(那种带有抬高的平面结构)。间接编码里最能捕获眼球的(在此以前是在神经进化领域获得关注)展现是Karl Sims的虚拟创造物。这里是20年前拍摄的视频,但依然极具震撼和使人难忘。

相比于NEAT算法这种直接编码,神经进化里的间接编码(如今专一于编码ANN)已经让能进化出更大的ANN成为可能。最流行的间接编码算法之一是被叫作组合型模式生成网络(compositional pattern-producing networks ,CPPNs)。它是在我所在的实验室——中佛罗里达大学的进化复杂性研究组发明的,用来应对相似NEAT这样的直接编码的局限。CPPN基本上是采用规则性和对称性来把一个模式压缩成相对小的一个基因集合的方法。这个想法是容易理解的,由于天然界里的大脑就有着大量的规则的模式(像重复的图案),好比在视觉大脑皮层上的接收区域里。CPPN网络能够编码相相似的链接模式。

使用CPPN来生成进化中的ANN的链接模式所用的算法(也是来自我所在的实验室)就叫作HyperNEAT(基于超立方的NEAT算法,Hypercube-based NEAT,由我和David D’Ambrosio和Jason Gauci共同发明)。之因此叫超立方,是由于按照一种数学性的解释,CPPN能够被理解为对于表明一个ANN的链接性的超立方的内部进行描绘。利用这一技术,咱们开始能够进化具备几十万到几百万链接的ANN。通过间接编码的ANN已经被证实是有用的,特别是对于进化机器人的步伐。由于他们的规则性的链接模式更容易去支持涉及走和跑的移动的规律性。其余实验室也探索了神经进化领域的间接编码技术,好比Jan Koutník、Giuseppe Cuccu、Jürgen Schmidhuber和Faustino Gomez研究的压缩网络方法。

新颖性搜索

如今你已经开始看到神经进化思想发展的轨迹了。神经进化这个领域从定拓扑网络开始,走向了复杂化的网络,而后开始关注于间接编码的网络。这些视角和能力的跃进将会伴随着咱们对复杂性的进化得到更多的洞察而继续下去。另一个近年来具备影响的思想(一样是来自于咱们的实验室,同时也从Jean-Baptiste Mouret和Stéphane Doncieux的有影响的研究中获得了响应)就是父母不该该老是按照它们的客观表现来被选择,而是应该基于它们的新颖性来被选择。换一种说法,有时可能有些使人惊讶,仅仅只是基于父母当前的适应性来选择对长远的成果实际上是有害的。例如,考虑进化一个ANN来用于机器人行走。你可能会认为为了获得最好的行走者,目前表现最好的行走者应该被选为产生下一代的父母。可是,事实上却不是这样的。

事实上,在早期进化行走能力时,控制行走者最好的ANN可能仅仅是依赖于不靠谱地向前一跳。可能其余的候选ANN干了一些有趣的事情,好比规律性地摆动机器人的腿。但假设这些有趣的机器人都摔倒了,按照咱们的设定规则,咱们应该会更选择那些走了更远的候选ANN,而把能摆动腿的排除出后续考虑。但问题是:有多是更有趣的概念(好比摆动腿)比目前最好的策略(好比前跃)更有可能发展出行走的机器人。可是适应性并不偏好摆动,仅仅是由于在当前阶段它的表现不那么好。换一种说法就是,目前使用的评估最佳行走者的进阶石具备欺骗性。对上面的例子来讲,从当前表现最好的里面选择父母ANN有可能把咱们带进死胡同。

这一洞察(与其余考虑结合在一块儿)引导我提出了新颖性搜索这个思想(和个人博士学生Joel Lehman一块儿发现的)。新颖性搜索是一个选择模式,它选择最具新颖性的ANN做为父母而不是基于最适应的这一思想。

这一思想一开始可能听起来有些怪,所以咱们先按下不表。在进化里,有两种主要的影响进化效果的因素:一个就是表现或是编码,这在天然界的对应物就是DNA。提高复杂性和间接编码的工做均可以落入这一类别里。另一个大的影响因素是系统如何决定谁繁衍后代,即天然选择。几乎全部的进化计算学的选择的重点都放在基于适应性作选择。但这并不意味着咱们必须或是仅仅使用它来选择,由于这会快速地榨干群体的多样性,但这也确实意味着更适应者比不太适应者有更多的机会得到繁衍。

新颖性搜索直接扭转了这个适应性驱动的范式,在它的选择模式里彻底放弃了经常使用的适应性的定义(例如行为的质量)。相反的,如今计算机关注每一个候选者(例如行走机器人)的表现,而后比较它们的行为和上一代的行为。在新颖性搜索里,若是一个新的候选者的行为显著地不一样于它的前辈,它就有更多的机会被选来繁衍后代,而无论它的适应性如何。

这一思想带来了一些争议,由于你们更喜欢基因而否成功这个标准来选择,这能够用适应性来衡量。但很难忽略新颖性有时也能有用这一事实。即有时候你能够经过选择新颖的来比使用适应性在更短的时间里得到更好的解决方案。想一下行走机器人的例子。和基于适应性的进化不一样,新颖性搜索更可能选择摆腿但摔倒的那个做为父母,这仅仅是由于它作了一些新鲜的东西。而基于适应的搜索则几乎必定会由于它很快摔倒而忽略它。但就如咱们讨论的,事实是摆腿是让机器人能行走的一个本质的进阶石。所以,尽管是反直觉地(由于适应性的欺骗性),最好仍是忽视你的客观而简单地选择新颖性而不是去提高客观表现。

这一洞察又一次跃升了咱们如何思考神经进化,并引领了一个全新的研究领域叫“质量多样化”或者有时也叫“启示算法”。这一新类型的算法一般是由新颖性搜素演化出。其主要目标不是要发现一个单一的最优解,而是阐明针对一个任务的可能性的全部高质量的变化所带来的普遍的交叉部分,就如那些对于一个四足机器人有效的全部的步态。这种算法的其中一个(叫MAP-Elites,由Jean-Baptiste Mouret和Jeff Clune发明)出如今近期的《天然》杂志的封面上。由于它发现了很是大量的这样的机器人步态的集合。这些步态能够在机器人出现损坏的场景下被选择性地使用。

若是你仔细地想一想这一切,新颖性并非要去解决一个特定的问题,而是去发现搜索空间里全部存在的有趣的可能性。事实是它可否给你一个最前沿的解决方案仅仅是这整个过程里的一个吸引人的反作用。质量多样性算法(超越新颖性搜索的下一步)把适应性的定义又引入回来,但用的是一个很是当心的方法,从而不会损害对新颖性的探求。其结果就是一类算法,它们能够在搜索空间里发散开,同时还能找到可能最好的东西。

这个新方向对于神经进化很重要,但更有趣的是注意到这已经超越了神经进化、机器学习或甚至是计算机科学的范畴。思考一下:有时取得一些值得的东西的最佳方法是避免直接去得到这它们。这个原则是如此通用,以致于它能够被应用到咱们的生活和社会里的不少方面。例如,最佳的提升学生成绩的方法可能并非给予持续的考试。事实是这一来自神经进化的洞察具备如此潜在普遍的影响并非偶然的——很天然(也很使人兴奋)的,你们协调一致地试图去加强算法的能力来探索全部可能性将会带来对于创新和进步的普遍的洞察。

换句话说,当咱们试图去揭开神经进化的谜题的时候,咱们不只仅是学习到了计算机算法,还了解到了这个世界是如何在深层次的基础层面上运做的。这就是我和合做者Joel Lehman要写《Why Greatness Cannot Be Planned: The Myth of the Objective》(为何伟大不能被计划出来:客观的秘密)这本书的缘由。咱们但愿经过这本书来和大众分享咱们这个领域发展所带来的一些更普遍的影响。咱们相信这些影响确实是对计算机科学界之外那些关注发明和创新的领域很是重要的。

复兴

我在这篇文章的开头宣称神经进化已经复兴,但这确切是什么意思?在现实里,这个领域历来没有真正地消失,不少主力研究人员都一直奋战在科研的第一线。然而,深度学习的兴起必然会把以前不少流失的注意力又带回了神经进化。如今这一切已经开始改变了。

深度学习取得成功的缘由之一就是近几年计算机硬件处理能力的提高。ANN已经从能力在近期取得爆炸性增加的并行计算(好比在GPU上)里获益。不少人认为深度学习里ANN和强大的硬件的联姻是惟一且偶然的。其实在神经进化领域的某些故事也是处于这种状况的尖端。这就是,和传统的深度学习同样神经进化也是能够从海量硬件投资里获益,甚至是更多。与全部进化算法同样,神经进化的优势就是ANN的群体自然地能够被并行处理,并且很容易实现。若是你有100个ANN和100个处理器,你就能够同时评估全部100候选网络。所花的时间和评估一个是同样的。这一速度的提高能够急剧地提高和扩展神经进化这一方法的潜力。

一种结果就是那些可以使用大规模计算集群的实验室发现他们可能正坐在神经进化的金矿上面。这会带来新一代的研究人员和下一代的神经进化的试验,可能倒是从在传统的深度学习上进行了投资的实验室里产生。实际上在这些实验室里已经存在着对于可能会错过一些重要的事情的担心存在了

例如,Google Brain(谷歌大脑,谷歌内部的人工智能实验室)已经发表了使用几百个GPU去试图进化深度网络架构的大规模试验。其基本想法是神经进化可能能够进化出使用随机梯度降低训练法的最佳的网络架构。实际上,这个经过神经进化来进行架构搜索的想法已经在2016和2017年吸引了业界的主要企业的注意力,包括谷歌在内的Sentient Technologies、MIT Media实验室、Johns Hopkins大学、卡耐基梅隆大学,这个名单还在变长。点这里和这里能够查看这一领域的一些初期的成果。

另一个神经进化复兴的领域就是加强学习。加强学习专一于控制问题和决策问题(好比让计算机去玩Atari游戏或是控制两足机器人)。近期OpenAI的一个团队报道了一个实验,实验对一系列的基准测试任务进行了比较,其中包括被广为报道的谷歌DeepMind AI智库最先用深度学习方法征服的Atari游戏。结果显示一个神经进化的变形方法取得了和基于传统深度学习的加强学习同样的表现。

神经进化领域也一样沿着它本身独特的路径前进着。例如,过去几年到如今的不少研究依然关注于如何进化可伸缩的ANN(Plastic ANN)。这些网络的链接权重能够在网络的生命周期里发生改变。即这种场景下的进化不只决定架构和权重,还决定指导如何和什么时候权重发生改变的规则。这样产生的网络理论上更像是随着生命过程改变的生物大脑。我对于可伸缩神经网络的不少的想法都是受Dario Floreano的早期工做以及后来Andrea Soltoggio的神经调节思想的影响。神经调节容许一些神经元来调整其余神经元的伸缩性。

另一个很是合适神经进化研究的有趣的也是我最爱的题目是开放式无结束的进化。即持续地进化来增长复杂性和有趣的行为而不结束。地球上不少有关的进化都是开放式无结束的,而从发生在计算机里的类似场景的视角去看则带来了独特的灵感。神经进化的一个伟大的挑战就是经过真正的无结束过程所产生的逐步增长复杂性的大脑的产物。如这里所述的,一个模糊但正在扩大的研究社区也正在推动无结束算法的边界。我感受开放式无结束的进化将会和人工智能一块儿成为计算机科学界的最伟大的挑战之一。

电子游戏依然是一个流行的应用,不只仅只是为了控制游戏里的角色,而是为了进化出新的内容。若是你思考地球上全部的生命的多样性,你能够发现进化算法能成为生成新的多样内容的天然驱动力。Malta大学的Georgios Yannakakis和纽约大学的Julian Togelius都是他们本身领域的先锋。在他们的新书《Artificial Intelligence and Games》(人工智能和游戏)里他们展现了不少应用神经进化(和其余人工智能算法)在游戏界里的综述。

参与进来

若是你有兴趣进化神经网络,好消息是从神经进化开始相对容易一些。有大量的软件可用(点这里查看),并且对不少人而言不用很高深的专业知识。繁衍的基本概念是符合直觉的,从而让掌握神经进化的主要思想比较容易。实际上,神经进化有着这样的荣誉,可让不少业余爱好者在本身家里的电脑上成功地进行试验。若是你在YouTube上搜索“neuroevolution”或“NEAT neural”,你能看到不少这样的例子。另一个例子,NEAT算法的最流行和优雅的软件包之一(“SharpNEAT”)就是由一个独立的软件工程师开发的。而他没有什么学术联系或是受过专业培训。

考虑到进化是迄今为止咱们惟一知道的真正能产生人类级别智能的方法,神经进化领域将来发展的潜力是巨大的。而伴随着今日计算能力的增长,产生新洞察的潜力也是巨大的。

在这里能够下一份免费的报告来探索深度学习、无监督学习和其余人工智能的前沿成果。

This article originally appeared in English: "Neuroevolution: A different kind of deep learning".

Kenneth O. Stanley

Kenneth O. Stanley是中佛罗里达大学计算机科学的副教授。在这里他领导着进化复杂性(EPlex)研究组。他也是Uber人工智能实验室的资深研究科学家。能够经过邮箱kenstanley001@gmail.com或是推特帐号@kenneth0stanley联系到他。

转自:一个方向——进化算法   网址为: https://blog.csdn.net/yzxnuaa/article/details/79723737

此方向跟本人研究领域有关,本博客仅仅保存笔记,供往后研读,如有侵权,联系删除,谢谢

相关文章
相关标签/搜索