现代机器智能建立在模仿自然的基础之上——这一领域的主要目的是在计算机中复制人类通过生物方式具备的强大决策能力。
30 年的发展取得了一些优秀成果,大多数脑启发人工智能技术的进展都围绕着「神经网络」,这一术语借用自神经生物学,其把机器思考描述为被称作「神经元」的互相连接的数学函数中的数据流动。但是自然界也有其他好想法:现在计算机科学家正再次踏入生物进化这一研究领域,希望通过在人工智能中植入生物进化元素的方式开发出更智能更有效的算法,恰如数十亿年来生物进化塑造了人类大脑一样。
但是,首先让我们回到中学的生物课本上。简单地说,进化(evolution)这一概念表述了有机体基因组中的随机变化会为其生存带来了优势或劣势的结果,该思想最早由查尔斯·达尔文据此提出,后人又对其进行了不断的完善。如果有机体的基因突变使其获得了生存和繁殖的机会,则该突变一直传递下去;如果没有,则该突变会随有机体一起消亡。在算法的世界,这被称为神经进化(neuroevolution)。人工神经网络是为了复制生物学习单个概念的过程,而神经进化则是试图再现构建大脑的部分过程——即适者(强大的或聪明的)生存的过程。
尽管神经进化在 20 世纪 80 年代左右就已被提出,但随着研究者在机器学习的不同视角上对其进行研究,它也正获得新的关注。上个月,谷歌大脑和非营利性组织 OpenAI 分别就神经进化这一主题发表了还未经评议的论文,谷歌的论文是关于神经进化原理在图像识别上的应用,而 OpenAI 的论文则是关于使用工作器(worker)算法让一个主算法学会实现一个任务的最好方法。
为本已复杂的人工智能研究领域引入生物进化的思想不免使人困惑。因此,如果想解决困惑,就把算法看作马吧。马一生之中都在学习,但是它们只在几个不同的指标上进化,例如奔跑的速度。图像识别的精确度不难获得,只是一个数字而已,马跑一圈所需要的时间量也是如此。但是真正使马跑得更快的东西却极为复杂——这是一个基于 DNA 的巨大网络,它能赋予马生长肌肉、持久奔跑甚至思考的能力。这种复杂性是算法底层参数的真实写照——即一个图像识别算法究竟是如何表现得好(或坏)的。如果你在本文之中的某处卡住了,做个深呼吸并想象一下马吧(这也是一个好的人生建议)。
为了这一研究,谷歌团队生成了 1000 个图像识别算法,这些算法使用了现代深度神经网络来训练以识别一组特殊的图像;接着,250 台计算机中的每一台选择 2 个算法,并通过一张图像的识别任务来测试算法的精确度。具有更高精确度的算法会被保留,表现欠佳的算法则被删除。接着保留的算法被复制,并生成稍作改变的克隆算法(或「孩子」),就像人类 DNA 在生育期间随机改变一样。但是这次突变改变的不再是蓝眼睛或是红头发,而是新算法解读训练数据的方式。接着,把训练亲代算法的相同数据用来训练克隆算法并将克隆算法放回到那 1000 个算法之中,并再一次开始这一过程。
谷歌的研究者通过神经进化培育出了一个精度高达 94.6% 的算法,并且在 4 次重复实验中都取得了类似的结果(尽管并不完全等同)。能够提升该算法的图像识别技能的突变被保留(即这些算法存活),而引起了算法性能降低的突变则会被清除。正如自然界的情况一样。
谷歌进行的 5 次实验之间的不同也表明了一个持续存在的问题。谷歌研究者及该论文合作者 Esteban Real 说,该算法常常会在运行到一半时卡住,似乎不确定是要继续进化还是停止突变重新开始。Real 说自然界里翅膀的进化是这种情况的一个类比:一只翅膀不会带来太多帮助,但是一对翅膀可以使你飞翔。
现在谷歌的团队正致力于使进化模型更全面地(为了打造一对翅膀)探索不同的突变。但是这有点棘手。这个团队只想要算法以一种限定的方式突变,这样能使该算法不会获得一大堆无用的额外代码。Real 解释说:「最坏的情况是我们得到很多的单只翅膀。」
通过主要聚焦于图像识别,谷歌不仅测试了神经进化解决那些生物大脑所擅长事情的能力,还测试了其解决现代问题的能力。另一方面,OpenAI 则使用了一种更纯粹的进化形式来承担一个不同的任务。
OpenAI 没有训练数以千计的算法以更好地解决一件事情,而是希望使用「工作器」算法来训练一个主算法以完成一项未知的任务,比如玩一个视频游戏或在一个 3D 模拟器中行走。这一技术并非教机器如何做决策的主要方式,但却是一种教机器更有效地学习特定知识的方式,OpenAI 研究者和论文合作者 Tim Salimans 解释说。这种进化算法能够监控工作器的学习方式,并且从根本上学会学习——即,从相同量的数据中提取更多的知识。
为了进行研究,该 OpenAI 团队设定了 1440 种工作器算法来玩 Atari 游戏。这些工作器会一直玩下去直到 Game Over,结束后这些工作器算法会向主算法报告各自的得分。生成最好得分的算法被复制下来(和谷歌的研究一样),复制版本随机进行突变。突变后的工作器然后继续重复上述过程——有益的突变被奖励,坏的突变被淘汰。
这种方法也有自己的局限性,最主要的是工作器算法只返回一个数值(高分)到主算法。有最佳得分的算法保留下来,但要让主算法意识到任何明确的成功行为(move)将需要大量的计算能力。(可以类比为生物上的蚁群:工蚁出去寻找最优的解决方案,蚁后是信息中心。)换言之,OpenAI 学习的东西大都是关于成功的,零碎的其它东西则学得很少。
时间倒回到上世纪 80 年代,那时候神经进化和神经网络研究领域的大小还差不多。中加州大学的副教授兼 Uber 人工智能团队的成员(Uber 收购了他联合创立的 Geometric Intelligence)Kenneth Stanley 说:
很少有人思考过大脑是如何出现在世界上的,而大脑是智能在自然界中唯一的概念证明。一些人认为也许创造智能的最直接方式应该是在计算机中创造一种可以进化的、达尔文式的过程,使其成为小型的人工大脑。
神经网络的腾飞始于三位计算机科学家。1986 年,David Rumelhart、Geoffrey Hinton 和 Ronald Williams 发表的一篇论文《Learning representations by back-propagating errors》描述了一种可以增强网络从其错误中进行学习的能力的算法——反向传播(backpropagation)。这个研究成果极大地提升了人工设计的神经网络的效率,但一次即将到来的人工智能冬天抑制了其进一步的发展——那时候因为人工智能技术缺乏进展,研究资金被削减了。直到后来 Hinton 等人发表的论文使神经网络变得太有诱惑力之后,更广泛的计算机科学社区才放弃抵抗。他们的研究表明反向传播能让神经网络实现极大的增长,反过来又使得这样的神经网络能理解远远更加复杂的概念。这种网络被冠以「深度」之名——即「深度神经网络(deep neural networks)」,且已经发展成了目前最受欢迎的人工智能技术。
Stanley 说:「因此,对于类比大脑进化的神经进化这条线,人们的了解就出现了一些缺失。」
2002 年的时候,Stanley 的事业刚刚开始,他就写出了 NEAT 算法,该算法可以让神经网络随时间进化成更大和更复杂的版本。根据谷歌学术的数据,他的对应性论文《Evolving neural networks through augmenting topologies》已经被引用了至少 1600 次,而且自发表以来,就一直不断地被深度神经网络设计和神经进化方面的研究所引用。在 2006 年,Stanley 发表了一种可以实现更大规模的神经进化的算法 Hyper-NEAT,该算法的灵感来自于 DNA 的编码能力——DNA 仅需大约 30000 个基因就能编码带有数万亿个连接的数十亿个生物神经元。(Hyper-NEAT 的全称是 Hybercube-based NeuroEvolution of Augmenting Topologies。)今天,Stanley 说他很欣喜地看到自己的研究又回归成为了时代的思潮。
和 Stanley 一样,OpenAI 和谷歌也正在研究来自这个领域的两种不同的思想。谷歌的混合方法将经典的神经进化和反向传播等技术结合到了一起,从而实现了现在非常强大的深度学习:教一个算法如何在世界中采取行动,让其进化,而该算法的「孩子」将具有大多数积累的知识。OpenAI 的方法更类似于生物的进化方式。该团队在每一代仅允许随机突变来主宰该网络提升或失败的方式,也就是说其提升是完全通过随机进化创造的。这两项研究都有非常明确的目标——识别图像或在游戏中获得高分(即使马跑得更快)。该算法将如何实现目标就要看造化了。
以下是对谷歌和 OpenAI 的这两项研究的摘要介绍:
谷歌论文:图像分类器的大规模进化(Large-Scale Evolution of Image Classifiers)
链接:https://arxiv.org/abs/1703.01041
神经网络已被证明能有效地解决困难问题,但它们的架构的设计难度可能非常大,甚至只是对单独的图像分类问题也是如此。进化算法(evolutionary algorithm)是一种能用于自动发现这些网络的技术。尽管进化模型(evolving model)有显著的计算要求,但我们的研究表明今天已经可以使用进化模型实现媲美大型的人工设计的架构了。我们在前所未有的规模上使用了简单的进化技术来发现用于 CIFAR-10 和 CIFAR-100 数据集的模型,并且是从简单平常的初始条件开始的。为了实现目标,我们使用了全新的和直观的突变算子(mutation operator),其可以在大型搜索空间中寻找方向。我们要强调:一旦进化开始,其就不再需要人类的参与了,然后其会输出一个完全训练好的模型。在这项研究中,我们特别强调了结果的可重复性、输出结果的可变性和对计算的要求。
OpenAI 论文:用作强化学习的可扩展替代的进化策略(Evolution Strategies as a Scalable Alternative to Reinforcement Learning)
链接:https://arxiv.org/abs/1703.03864
我们探索了进化策略(Evolution Strategies/ES)的使用,这是一类黑箱的优化算法,可作为 Q-学习和策略梯度等流行的强化学习方法的替代。在 MuJoCo 和 Atari 上的实验表明 ES 是一种可行的解决策略,其可以很好地扩展到多个可用的 CPU 上:通过使用数百到数千个并行的工作器(worker),ES 可以在 10 分钟内解决 3D 人形行走的问题,而且在一小时的训练之后可以在大多数 Atari 游戏上实现很有竞争力的结果。此外,我们还突出强调了作为一种黑箱优化技术的 ES 的几个优势:动作频率和延迟的奖励对其不会产生影响、能包容非常长的时间、不需要时间贴现(temporal discounting)或价值函数近似(value function approximation)。