Press "Enter" to skip to content

谷歌大脑:探索权重无关神经网络

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

文 / Adam Gaier 学生研究员 和 David Ha 研究员

 

Google Research

 

 

无论是图像分类还是强化学习,在通过训练神经网络来完成一项给定任务时,都需要对神经网络中每个连接的权重进行调优。

 

而在创建有效的神经网络时,另一种行之有效的方法是 神经架构搜索 (通过手工构建的组件,如 卷积网络组件 或代码块,来搭建神经网络架构)。研究表明,利用这些组件搭建的神经网络架构(如深度卷积网络)在图像处理任务方面具有很强的归纳偏置(inductive biases),甚至能在 随机初始化 权重的情况下执行这些任务。这种神经架构搜索提供的新方法虽然可用于为当前的任务域安排具有已知归纳偏置的人工设计组件,但对自动发现具有此类归纳偏置的  神经网络架构(用于各类任务域)则表现效果甚微。

 

注: 神经架构搜索

 

https://ai.googleblog.com/2017/05/using-machine-learning-to-explore.html

 

卷积网络组件

 

https://ai.googleblog.com/2018/03/using-evolutionary-automl-to-discover.html

 

随机初始化

 

https://arxiv.org/abs/1711.10925

 

我们可以以这些组件的先天和后天为例进行类比。在生物学领域,某些早熟性物种 (precocial species) 天生具有反捕食行为 (anti-predator behaviors),它们无需学习就能进行复杂的运动和感官活动。我们或许能以此构建无需训练就能出色完成任务的神经网络。显然这些自然物种(类比人工神经网络)通过训练可以进一步强化,但这种即使不学习也能执行任务的能力表明,它们包含非常适合这些任务的偏置。

 

在“ 权重无关神经网络 ”(Weight Agnostic Neural Networks, WANN) 中,我们踏出了专门搜索具有此类偏置的网络的第一步:使用随机共享权重执行各种任务的神经网络架构。这项工作旨在探索:针对给定任务,当不学习任何权重参数时,神经网络架构编码解决方案的表现如何。通过探索此类神经网络架构,我们提出一种无需学习权重参数就能在其环境中出色执行任务的智能体。此外,为促进此研究领域的交流,我们还开放了相关源代码,以便更多研究社区能够重现我们的 WANN 实验。

 

注:权重无关神经网络

 

https://weightagnostic.github.io/

 

 

左图 :经人工设计且拥有 2760 个权重连接的全连接深度神经网络。借助某种学习算法,我们可以求解出 2760 个权重参数的集合,使该网络能够执行  BipedalWalker-v2  任务。 右图 :仅有 44 个连接,但能够执行相同 Bipedal Walker 任务的权重无关神经网络架构。不同于全连接网络,此 WANN 无需训练每个连接的权重参数便能执行该任务。实际上,为简化训练,此 WANN 只会在每个权重连接的值相同或 共享时  执行任务,即使采用随机采样的共享权重参数也不受影响。

 

注:BipedalWalker-v2

 

https://gym.openai.com/envs/BipedalWalkerHardcore-v2/

 

搜索 WANN

 

我们从一组最小的神经网络架构候选对象开始(每个候选对象只有很少的连接),使用完善的 拓扑搜索算法 (topology search algorithm, NEAT),进而通过逐个添加单连接和单节点来演化架构。WANN 背后的核心理念是通过弱化权重的重要性来进行架构搜索。与传统的将所有权重参数都通过学习算法进行训练得到不同,我们采用了一种更简单有效的方法。在搜索过程中,我们先在每次迭代时为所有候选架构分配一个共享权重值,然后对其进行优化,以期通过更大范围的共享权值来获得更好的表现。

 

注:拓扑搜索算法

 

http://nn.cs.utexas.edu/?stanley:ec02

 

 

用于搜索网络拓扑空间的算子

 

左图:最小的网络拓扑结构,输入和输出仅部分连接。

 

中间图 :网络的三种更改方式:

 

(1) 插入节点:通过拆分现有连接插入新节点。

 

(2) 添加连接:通过连接两个先前未连接的节点来添加新连接。

 

(3) 更改激活:重新分配隐藏节点的激活函数。

 

右图:支持的激活函数(线性函数、阶跃函数、正弦函数、余弦函数、高斯函数、正切函数、Sigmoid 函数、反函数、绝对值函数、ReLU 函数)

 

除了探索各类权重无关神经网络之外,我们还必须寻找能满足所需的复杂网络架构。为此,我们利用多目标优化 (multi-objective optimization) 技术同时优化网络的性能和复杂度。

 

 

权重无关神经网络搜索以及用于搜索网络拓扑空间的相应算子概览

 

训练 WANN

 

与传统神经网络不同的是,我们只需找到单个最优性能的最佳共享权重参数,便能轻松训练 WANN。如下例所示,在使用恒定权重执行 swing-up cartpole 任务时,我们的架构可以发挥一定作用:

 

注:Swing-up Cartpole 任务

 

http://underactuated.csail.mit.edu/underactuated.html?chapter=acrobot

 

在不同权重参数下执行 swing-up cartpole 任务 WANN,以及使用微调权重参数的 WANN

 

如上图所示,虽然 WANN 可使用一系列共享权重参数来执行任务,但其性能通常仍无法与学习每个连接权重的神经网络相比。

 

如果想进一步提高其性能,我们可以先使用 WANN 架构和最佳共享权重, 然后像神经网络的常规训练方法一样, 通过学习算法微调每个连接的权重。这种先使用网络架构的权重无关特性,然后通过学习微调其性能的方法有助于为研究 动物的学习方式 提供有参考价值的类比。

 

注:动物的学习方式

 

https://www.nature.com/articles/s41467-019-11786-6

 

 

 

通过针对性能和网络简单性使用多目标优化,我们找到了一种适用于 像素赛车任务 (https://gym.openai.com/envs/CarRacing-v0/)的简单 WANN,该网络无需显式权重训练即可出色执行任务

 

使用随机权重的神经网络架构不仅能执行任务,而且还具有其他优势。例如,通过使用相同 WANN 架构的副本,但为 WANN 的每个副本分配不同的权重值,我们可以为同一任务创建多个不同模型组成的集合。相较于单个模型,此类集合通常具有更好的性能。为证明这一点,我们给出下方 MNIST 分类器使用随机权重的演化示例:

 

注:MNIST

 

http://yann.lecun.com/exdb/mnist/

 

 

MNIST 分类器使用随机权重的演化过程

 

传统随机初始化的网络在 MNIST 上的精度约为 10%,但针对 MNIST,这种使用随机权重的特殊网络架构却能实现精度高于随机初始化网络(高于 80%)。当使用 WANN 集合并为其中每个 WANN 分配不同的共享权重时,精度甚至能够升至 90% 以上。

 

即使不使用集合方法,我们也可将网络中权重值的数量压缩为 1,从而能够快速调整网络。在持续的终身学习中,快速微调权重的能力也有助于智能体在整个生命周期内获得、适应和转移技能。这使得 WANN 特别适合鲍德温效应 (Baldwin effect),这种 进化压力 会倾向于学习有用行为的个体,避免陷入“学会学习”这个代价高昂的计算陷阱。

 

注:进化压力

 

http://www.cs.toronto.edu/~hinton/absps/maynardsmith.pdf

 

结论

 

我们希望以此项工作为基石,促进发现更多新的基础神经网络组件,如卷积网络,其发现和应用已为深度学习领域做出巨大贡献。自发现卷积神经网络以来,研究领域可用的计算资源有了显着增加。如果此类资源的增加能促进网络架构的自动发现并有望实现网络架构的革命性改进,我们认为,使用新的构建块(而不仅仅是其安排)进行搜索也值得一试。

 

如果您有兴趣了解这项工作的更多相关内容,欢迎阅读我们的 互动文章 (或离线阅读  pdf 版本的论文)。除了将这些实验面向研究社区开源之外,我们还公开了一个名为  PrettyNEAT 的通用 Python 实现,旨在帮助有兴趣的读者从基本原理开始了解神经网络。

 

注:互动文章

 

https://weightagnostic.github.io/

 

pdf 版本论文

 

https://arxiv.org/abs/1906.04358

 

PrettyNEAT

 

https://github.com/google/brain-tokyo-workshop/tree/master/WANNRelease/prettyNEAT

 

Be First to Comment

发表评论

邮箱地址不会被公开。 必填项已用*标注