• 问答
  • 技术
  • 实践
  • 资源
神经网络架构搜索进展综述
论文速递

神经网络架构搜索(NAS)——前言

那么问题来了,神经网络架构搜索(NAS)究竟是什么?为什么我们要了解NAS呢?(这一部分是为了去年完全没有跟进领域内进展的人准备的)

NAS的核心思想是使用搜索算法来发现用于解决我们的问题所需要的神经网络结构。回到“博士生下降”的话题:假设你是个希望解决问题A的导师,你会让你的学生来想一种该问题的最优架构——那么,你的学生就是你的搜索算法(听起来似乎更像奴隶?)。

如果你并不是那种泯灭人性的导师(当然也可能你就是那个学生),你可能会首先定义一种搜索空间,这种搜索空间包含定义神经网络架构的基本构建模块(block)。通常地,每一种配置字符串(configuration string)描述一种架构——比如说,给定三个层(分别用0、1、2表示)和两种block(分别为A:1x1卷积和B:3x3卷积),那么字符串“0A1A2B”表示“x->1x1卷积->1x1卷积->3x3卷积”的网络结构。你可以天马行空地凭想象定义这个搜索空间,但别忘了,搜索空间越大,你的搜索算法需要运行的迭代次数就越多,用到的GPU算力也就越多。

搜索算法有哪些可供我们选择呢?早期的一种算法是进化搜索——网络架构的种群(population,比如可以是随机初始化的一些架构)基于适应度(或“收益”,通常即给定架构在特定问题上的验证指标)不断地被训练和突变(mutate,比如对架构的某些部分进行混合)以达到好的验证指标。另一种方案是基于强化学习,让智能体(有时候称作“控制器”)去发现网络架构的最优配置。这种智能体通常是用循环神经网络实现的,它的目标是寻找能够获得更高收益的神经架构。其他的搜索算法还包括基于梯度的优化(所有可能的架构组成一个巨大的图,每条边有一个可学习的实值,代表每个block被使用的概率)、贝叶斯优化(搜索空间由某种启发函数贯穿,这种启发函数可以是用于预测采样模型准度的代理损失函数)等等。

Auto-DeepLab:语义分割的分层神经架构搜索熟悉语义分割领域的研究者应该对DeepLab团队都不陌生吧?他们不断提出新的思路、新的模型,不断推进语义分割模型的性能提升。这次,作者使用NAS来寻找语义分割问题的最佳模型。Auto-DeepLab:语义分割的分层神经架构搜索

本质上讲,这篇工作是对DARTS的一种适应性改进。如果你不了解DARTS,下面是对它的一点简单说明:DARTS(可微架构搜索,Differentiable Architecture Search)是一种基于梯度的随机优化方法,它将所有可能的架构一次性初始化,并且在优化网络权重参数的同时还优化混合概率(即模型选择每一条边的概率)。Auto-DeepLab的作者则更进一步:为了搜索适合语义分割的模型,作者还让NAS算法去优化stride运算——也就是在网络架构图中的各处是要下采样特征图,或是保持尺度不变,还是进行上采样。使用一块P100 GPU,作者运行神经架构搜索3天后得到了与DeepLab-v3+性能大致相当的网络结构。

用单GPU四小时搜索出健壮的神经网络架构

这篇论文中,作者结合了ENAS和DARTS二者的最佳实践,从而提出了GDAS(Gradient-based search using Differentiable Architecture Sampler)方法。DARTS的定义上文已经提到;ENAS是Pham et. al提出的一种基于强化学习的神经架构搜索方法,它在一开始同样初始化了一个巨大的图——但与DARTS在每个边上添加权重的方式不同,ENAS使用基于强化学习的控制器来决定选择哪一条路径。

这里,作者显式地采取了一些路径并进行优化。因为这个采样是离散的,作者借助了Gunbel采样技巧来实现反向传播。作者原文写道:“我们在前向传播时使用argmax函数……而在反向传播时使用了softmax函数……”。总体上,该方法在用于图像分类的CIFAR-10数据集和上用于语言建模的Penn Tree Bank (PTB)数据集上实现了快速搜索。

  • 0
  • 0
  • 425
收藏
暂无评论
18342

大连交通大学 · 其他

大连交通大学 | 本科

  • 1

    关注
  • 0

    获赞
  • 0

    精选文章
文章专栏
  • 367