本文是Ben Dickson是对AI research papers一部分的读后感
在上周发表在科学杂志《自然》上的一篇论文中,Google Brain的科学家介绍了一种用于平面布置的深度强化学习技术,即安放计算机芯片不同组件的放置过程。
研究人员成功地利用强化学习技术设计了下一代张量处理单元,即谷歌的专属人工智能处理器。
在芯片设计中使用软件并不是什么新鲜事。但据谷歌研究人员称,这种新的强化学习模型“自动生成的芯片平面图在所有关键指标上甚至优于人类生成的芯片平面图相媲美,包括功耗、性能和芯片面积。”而且它的生成时间只占人类所需时间的一小部分。
人工智能相对于人类性能的优越性引起了人们的广泛关注。一家媒体将其形容为“人工智能软件,可以比人类更快地设计计算机芯片”,并写道,“一个人类需要数月才能设计出来的芯片,可以在不到6个小时的时间内被(谷歌)新的人工智能构想出来。”
另一家媒体写道,“人工智能为人工智能设计芯片的良性循环看起来才刚刚开始。”
但在读这篇论文时,令我吃惊的不是设计计算机芯片的人工智能系统的复杂性,而是人类与人工智能之间的协同作用。
类比、直觉和奖励
本文这样描述这个问题:“芯片布局规划涉及将网络表放置在芯片电路板(二维网格)上,以便优化性能指标(例如,功耗、定时、面积和线长),同时遵守密度和路由拥塞的硬约束。”
基本上,研究人员要做的是以最佳方式放置组件。然而,像任何其他问题一样,随着芯片中元件数量的增加,寻找最佳设计变得更加困难。
现有的软件有助于加快发现芯片排列的过程,但当目标芯片变得越来越复杂时,它们就不够了。研究人员决定从强化学习解决其他复杂空间问题的方法中汲取经验,比如围棋游戏。
“芯片布局规划类似于游戏,具有不同的块(例如,网表拓扑、宏计数、宏大小和纵横比)、板(不同的画布大小和纵横比)和获胜条件(不同评估指标的相对重要性或不同的密度和路由拥塞约束),研究人员写道。
这是人类智力最重要和最复杂的方面之一:类比的表现。人类可以从解决的问题中提取抽象,然后将这些抽象应用到一个新的问题中。虽然我们认为这些技能是理所当然的,但正是它们让我们非常擅长迁移学习。这就是为什么研究人员可以将芯片布局问题重新定义为一个棋盘游戏,并且可以用其他科学家解决围棋游戏的方法来解决这个问题。
深度强化学习模型尤其擅长搜索非常大的空间,这在大脑的计算能力下在物理上是不可能的。但科学家们面临的问题比过去复杂得多。”在包含1000个单元的网格上放置1000个节点群集的状态空间大约为1000(大于10的2500次方),而Go的状态空间为10的360次方。科学家想要设计的芯片将由数百万个节点组成。
他们用一种人工神经网络解决了这个复杂的问题,这种神经网络可以将芯片设计编码为向量表示,并使探索问题空间变得更加容易。根据这篇论文,“我们的直觉是,一个能够完成芯片放置的一般任务的策略也应该能够在推理时将与一个新的不可见芯片相关的状态编码成一个有意义的信号。因此,我们训练了一种神经网络架构,能够预测新网表放置时的回报,最终目标是将这种架构用作我们策略的编码层。”
直觉这个词经常用得很松散。但这是一个非常复杂和鲜为人知的过程,涉及经验、无意识知识、模式识别等等。我们的直觉来自一个领域多年的工作经验,但也可以从其他领域的经验中获得。幸运的是,在高性能计算和机器学习工具的帮助下,测试这些直觉变得越来越容易。
同样值得注意的是,强化学习系统需要一个精心设计的奖励。事实上,一些科学家认为,有了正确的奖励功能,强化学习就足以达到人工通用智能。然而,如果没有适当的奖励,RL代理可能会陷入无休止的循环。
谷歌的科学家们设计了地板规划系统的奖励,即“代理线长度、拥塞和密度的负加权和”。权重是他们在强化学习模型的开发和训练过程中必须调整的超参数。
在适当的奖励下,强化学习模型能够利用其计算能力,找到各种方法来设计使奖励最大化的平面图。
策划数据集
采用有监督学习的方法,建立了用于该系统的深层神经网络。有监督的机器学习要求在训练过程中用标记数据来调整模型的参数。谷歌的科学家们创建了一个“10000个芯片放置的数据集,其中输入是与给定放置相关的状态,标签是对该放置的奖励。”
为了避免人工创建每个平面图,研究人员混合使用了人工设计的平面图和计算机生成的数据。关于训练数据集中包含的算法生成示例的评估,论文中没有多少信息涉及到多少人力。但是,如果没有高质量的训练数据,监督学习模型最终会导致错误的推断。
从这个意义上说,人工智能系统不同于AlphaZero等其他强化学习程序,AlphaZero在不需要人工输入的情况下制定了自己的游戏策略。在未来,研究人员可能会开发一个RL代理,它可以设计自己的平面图,而不需要有监督的学习组件。但我的猜测是,鉴于问题的复杂性,解决此类问题很有可能继续需要人类直觉、机器学习和高性能计算的结合。
强化学习设计VS人类设计
谷歌研究人员提出的工作的有趣方面之一是芯片的布局。我们人类用各种捷径来克服大脑的局限。我们不能在一大块时间内解决复杂的问题。但是我们可以设计模块化、层次化的系统来划分和克服复杂性。我们的自顶向下架构的思考和设计能力在开发能够执行非常复杂任务的系统中发挥了很大的作用。
我将举一个软件工程的例子,我自己的专业领域。理论上,您可以在一个文件中以非常大的连续命令流编写整个程序。但是软件开发人员从不以这种方式编写程序。我们创建的软件有小部分、函数、类、模块,这些模块可以通过定义良好的接口相互交互。然后,我们将这些片段嵌套到更大的部分中,并逐步创建组件的层次结构。你不需要阅读程序的每一行来理解它的作用。模块化使多个程序员能够处理一个程序和几个程序,以重用以前构建的组件。有时候,仅仅看一个程序的类架构就足以指出正确的方向来定位错误或找到适当的地方来添加升级。我们经常以速度换取模块化和更好的设计。
某种程度上,在电脑芯片的设计上也可以看到同样的情况。人类设计的芯片在不同模块之间往往有着清晰的界限。另一方面,谷歌强化学习代理设计的地板平面图发现阻力最小,无论布局如何(下图)。
我感兴趣的是,这是否会在未来成为一个可持续的设计模式,或者它是否需要在高度优化的机器学习生成的设计和人类工程师强加的自上而下的秩序之间做出某种妥协。
AI +人类智能
正如谷歌的强化学习芯片设计者所展示的那样,人工智能硬件和软件的创新将继续需要抽象思维、找到要解决的正确问题、开发关于解决方案的直觉,以及选择正确的数据类型来验证解决方案。这些技能是更好的人工智能芯片可以提高但不能取代的。
说到底,我不认为这是一个“人工智能比人类聪明”、“人工智能创造更聪明的人工智能”或人工智能开发“递归自我完善”能力的故事。更确切地说,这是人类找到办法利用人工智能作为支撑,克服自己的认知极限和扩展自身能力的一种表现。如果说有一个良性循环,那就是人工智能和人类找到更好的合作方式。