📄 ICLR 2017 · NAS 开山之作

Neural Architecture Search
with Reinforcement Learning

Barret Zoph, Quoc V. Le
Google Brain
arXiv: 1611.01578 ICLR 2017 被引 6000+ 次 搜索空间:CNN + RNN Cell
01

摘要

We use a recurrent network to generate the model descriptions of neural networks and train this RNN with reinforcement learning to maximize the expected accuracy of the generated architectures on a validation set.

本文提出了Neural Architecture Search (NAS)——使用一个循环神经网络(Controller RNN)作为控制器,通过强化学习(REINFORCE策略梯度)来生成和优化神经网络架构。不需要任何人类专家的先验知识,NAS从零开始搜索,就能在CIFAR-10上设计出媲美甚至超越人类最优设计的网络结构。

除了CNN,NAS还成功搜索出了全新的Recurrent Cell,在Penn Treebank语言建模任务上超越了经典的LSTM单元。

02

背景与动机

为什么需要NAS?

2016年,深度学习在图像识别(ImageNet)、语音识别、自然语言理解等领域已经取得巨大成功。但一个残酷的现实是:设计好的神经网络架构极度依赖人类专家的直觉和经验。研究人员需要经过数月甚至数年的试错才能提出比现有方案更好的架构。

这种"架构工程"是手工的、低效的、不可扩展的。与此同时,我们却看到:

  • 神经网络的拓扑结构本质上可以表示为一个变长字符串(sequence)
  • RNN和强化学习在序列生成任务(如机器翻译、对话生成)中表现优异
核心理念

既然架构可以表示为序列,为什么不训练一个RNN来生成这个序列,再用RL来优化它?这就是NAS的诞生——把架构设计从"手工匠人"升级为"自动化流程"。

03

方法核心:三幕剧

🎭 第一幕:Controller RNN —— 架构生成器

论文使用一个循环神经网络(Controller RNN)来"描述"一个神经网络架构。Controller逐时间步通过softmax分类器输出预测,每个预测对应架构的一个超参数:

  • 滤波器高度:{1, 3, 5, 7}
  • 滤波器宽度:{1, 3, 5, 7}
  • 滤波器数量:{24, 36, 48, 64}
  • 步长(Stride):{1, 2, 3}

重复上述过程,逐时间步生成多层卷积网络。每层预测的结果作为下一时间步的输入。

// Controller RNN 生成的网络结构示意 Layer 1: Conv(kernel_h=5, kernel_w=3, filters=48, stride=1) Layer 2: Conv(kernel_h=3, kernel_w=3, filters=64, stride=1) Layer 3: Conv(kernel_h=3, kernel_w=5, filters=36, stride=2) ... // 直到所有层生成完毕

🎭 第二幕:REINFORCE —— 架构优化器

Controller RNN 的参数记为 θc。生成的架构在验证集上的准确率 R 作为奖励信号。使用策略梯度(REINFORCE算法)来更新Controller:

// REINFORCE 梯度更新公式 ∇J(θc) = 1/m Σ (Ri - b) · ∇log P(architecturei | θc) // 其中: // m = 每批采样的架构数 // R_i = 第i个架构的验证集准确率 // b = 指数移动平均基线(降低梯度方差)

如果一个架构的准确率高于历史平均水平(R - b > 0),它对应的梯度权重为正(鼓励);反之则为负(抑制)。

🎭 第三幕:Skip Connection —— 搜索空间升级

单纯的卷积层堆叠表达能力有限。论文引入了Skip Connection(跳跃连接)机制,让Controller能够学习到层间的跨层连接:

  • 在第 N 层设置一个锚点(Anchor Point)
  • 通过 N-1 个content-based sigmoid来决定与之前哪些层建立跳跃连接
  • 如果一层没有连接到任何输入层,则使用原始图像作为输入
  • 最后将所有未被连接的层输出进行拼接(Concat)送入分类器
  • 不同大小的层输出自动补零对齐

🎭 Bonus:搜索Recurrent Cell

除了CNN架构,论文还展示了NAS可以搜索循环神经网络单元(RNN Cell)。Controller通过树形结构生成计算图:

  • 树中的每个节点代表一个组合操作(加法、乘法、sigmoid、tanh等)
  • 叶子节点代表输入 xt 和隐藏状态 ht-1
  • Controller逐节点预测使用的操作,组合成完整的Cell计算图
  • 最终找到了一个在语言建模上超越LSTM的全新Recurrent Cell
04

分布式训练:大力出奇迹

NAS的计算开销极大——每个采样到的架构都需要训练到收敛才能评估其性能。论文的解决方案是大规模分布式并行训练

S=20
参数服务器分片
K=100
Controller 副本
m=8
每副本采样架构数
800
并行 GPU 数量

800个GPU同时训练800个子网络——Controller异步收集它们的验证准确率并更新策略。每批处理800个架构采样,使得收敛速度大幅提升。

💡 计算成本:NAS从一开始就是一个"大力出奇迹"的方向。800 GPU-days的计算开销是它最显著的短板,也催生了后续系列加速方法(ENAS参数共享、DARTS可微分搜索、ProxylessNAS等)。
05

实验结果

CIFAR-10 图像分类

3.65%
测试集错误率
−0.09%
超越此前SOTA
1.05×
推理速度提升

NAS从零开始搜索,在CIFAR-10上达到 3.65% 测试错误率,比此前最好的人类设计架构还低0.09%。这是第一次自动搜索的架构在图像分类上超越人类专家设计。

Penn Treebank 语言建模

62.4
PTB词级PPL
−3.6
超越此前最优
1.214
字符级PPL(新SOTA)

NAS搜索到的Recurrent Cell在词级PTB上达到 62.4 Perplexity,比LSTM和其他手工设计单元低3.6。更重要的是,这个Cell可以迁移到字符级语言建模任务,同样取得SOTA(1.214 PPL)。

✅ 意义深远:自动搜索到的架构不仅可比拟人类专家的设计,还能在不同任务间迁移。NAS的泛化能力在此初见端倪,为后续NAS在各领域的广泛应用奠定了基础。
06

历史影响与后续发展

这篇论文定义了NAS的基本范式——"搜索空间 + 搜索策略 + 性能评估"的三元组框架,是整个人工智能自动化(AutoML)领域的里程碑。

2017 · NAS (Zoph & Le) 🎯
RL-based NAS开山之作。性能SOTA,但需800 GPU-days。
2018 · NASNet (Zoph et al.)
将NAS扩展到ImageNet,提出可迁移的NASNet搜索空间(Cell-based)。
2018 · ENAS (Pham et al.)
参数共享大幅降低计算开销——仅需1 GPU-day。关键词:权重复用。
2019 · DARTS (Liu et al.)
可微分NAS,将离散搜索空间松弛为连续优化。优雅高效。
2019 · ProxylessNAS (Cai et al.)
直接在目标数据集上搜索,无需代理任务。实用化再进一步。
2020~今 · One-shot / Zero-shot NAS
进一步降低搜索成本。NASBench基准、预测型NAS、LLM+NAS成为新趋势。

截至2026年,这篇论文已被引用 6000+ 次,开启了AutoML和自动化架构设计的全新研究领域。它最核心的启示是:

范式转变

与其手工设计架构,不如设计搜索架构的策略。这个思路贯穿了整个AutoML领域,也是当前LLM驱动的神经网络搜索(LLM+NAS)等前沿方向的根基。


论文:Neural Architecture Search with Reinforcement Learning (arXiv:1611.01578) · 整理:王小红 · 2026-05-18