Neural Architecture Search: A Survey

深度学习可以自动学习出有用的特征,脱离了对特征工程的依赖,在图像、语音等任务上取得了超越其他算法的结果。这种成功很大程度上得益于新神经网络结构的出现,如ResNet、Inception、DenseNet等。但设计出高性能的神经网络需要大量的专业知识与反复试验,成本极高,限制了神经网络在很多问题上的应用。神经结构搜索(Neural Architecture Search,简称NAS)是一种自动设计神经网络的技术,可以通过算法根据样本集自动设计出高性能的网络结构,在某些任务上甚至可以媲美人类专家的水准,甚至发现某些人类之前未曾提出的网络结构,这可以有效的降低神经网络的使用和实现成本。

NAS的原理是给定一个称为搜索空间的候选神经网络结构集合,用某种策略从中搜索出最优网络结构。神经网络结构的优劣即性能用某些指标如精度、速度来度量,称为性能评估,结构的性能评估将被返回给搜索策略。这一过程如下图所示。

NAS流程

在搜索过程的每次迭代中,从搜索空间产生“样本”即得到一个神经网络结构,称为“子网络”。在训练样本集上训练子网络,然后在验证集上评估其性能。逐步优化网络结构,直至找到最优的子网络。

搜索空间,搜索策略,性能评估策略是NAS算法的核心要素。搜索空间定义了可以搜索的神经网络结构的集合,即解的空间。搜索策略定义了如何在搜索空间中寻找最优网络结构。性能评估策略定义了如何评估搜索出的网络结构的性能。对这些要素的不同实现得到了各种不同的NAS算法。

搜索空间

搜索空间定义了NAS算法可以搜索的神经网络的类型,同时也定义了应该如何描述神经网络结构。神经网络所实现的计算可以抽象成一个无孤立节点的有向无环图(DAG),图的节点代表神经网络的层(卷积网络中的特征图),边代表数据的流动(进行的操作:卷积、池化等)。每个节点从其前驱节点(有边射入)接收数据,经过计算之后将数据输出到后续节点(有边射出)。理论上说,只要是无孤立节点的DAG,都是合法的神经网络结构。按照不同的尺度,神经网络的结构定义包含如下层次的信息:

(1)网络的拓扑结构。网络有多少个层,这些层的连接关系。最简单的神经网络是线性链式结构,其对应的图的每个节点最多只有一个前驱,一个后续,类似于数据结构中的链表。早期的全连接神经网络,卷积神经网络都是这种拓扑结构。Inception、ResNet、DenseNet中的节点允许有多个前驱,多个后续,从而形成了多分支、跨层连接结构,它们是更复杂的图。在描述网络的拓扑结构时,一般采用前驱节点来定义,即定义每个节点的前驱节点,一旦该信息确定,则网络拓扑结构确定。

不同的拓扑结构

(2)每个层的类型。除了第一个层必须为输入层,最后一个层必须为输出之外,中间的层的类型是可选的,它们代表了各种不同的运算即层的类型。典型有全连接,卷积,反卷积,可分离卷积,空洞卷积,池化,激活函数等。但这些层的组合使用一般要符合某些规则。

(3)每层内部的超参数。卷积层的超参数有卷积核的数量,卷积核的通道数,高度,宽度,水平方向的步长,垂直方向的步长等。池化层的超参数包含池化核高度,池化核宽度,水平方向步长,垂直方向步长全连接层的超参数有神经元的数量。激活函数层的超参数有激活函数的类型,函数的参数(如果有)等。

为了提高搜索效率,有时候会搜索空间进行限定或简化。在某些NAS实现中会把网络切分成基本单元(cell),通过这些单元的堆叠形成更复杂的网络。基本单元由多个节点(神经网络的层)组成,它们在整个网络中重复出现多次,但具有不同的权重参数。另外一种做法是限定神经网络的整体拓扑结构,借鉴于人类设计神经网络的经验。这些做法虽然减少了NAS算法的计算量,但也限定了算法能够寻找的神经网络的类型。

由于描述神经网络结构的参数含有离散数据(如拓扑结构的定义,层的类型,层内的离散型超参数),因此网络结构搜索是一个离散优化问题。定义结构的参数数量一般比较大,因此属于高维优化问题。另外,对于该问题,算法不知道优化目标函数的具体形式(每种网络结构与该网络的性能的函数关系),因此属于黑盒优化问题。这些特点为NAS带来了巨大的挑战。

搜索策略

基于梯度的优化是目前的主流算法

强化学习和遗传算法等方案低效的一个原因是结构搜索被当作离散空间(网络结构的表示是离散的,如遗传算法中的二进制串编码)中的黑箱优化问题,无法利用梯度信息来求解。

DARTS将离散优化问题连续化,称之为可微结构搜索,将网络结构搜索转化为连续空间的优化问题,采用梯度下降法求解,可高效地搜索神经网络架构,同时得到网络的权重参数。

DARTS将网络结构、网络单元表示成有向无环图,对结构搜索问题进行松弛,转化为连续变量优化问题。目标函数是可导的,能够用梯度下降法求解,同时得到网络结构和权重等参数。算法寻找计算单元,作为最终网络结构的基本构建块。这些单元可以堆积形成卷积神经网络,递归连接形成循环神经网络。

将网络单元定义为有向无环图,共有N个顶点,顶点x_{i} 为数据的潜在表示,如卷积神经网络的特征图,图的边(i,j)表示某种运算操作O_{i,j} ,对x_{i} 进行变换,然后将变换结果送入节点x_{j} ,典型的运算有卷积、池化、以及零运算(零运算是一种特殊的运算,它表示两个节点之间没有关系,即节点x_{i} 的值不会用来计算x_{j} 的值)。每个单元有2个输入节点,1个输出节点,对于卷积单元,输入节点为上两层的输出值。输出节点的值根据对所有中间节点进行约简运算(reduction operation,如concatenation)而得到。每个中间节点的值根据其所有前驱节点(编号更小的节点)计算得到,计算公式为:

x_{i}=\sum\nolimits_{j<i}o(j,i)(x_{j} )

接下来对问题进行松弛,转化为连续优化问题。对于某一网络结构,顶点x_{i} 到顶点x_{j} 的运算是确定的。将其概率化,表示为各种运算的概率叠加。假设O表示为所有候选运算的集合,o(\cdot )为作用于x_{i} 的某种运算,节点x_{j} 的值是各种候选运算的结果的概率叠加,而使用每种运算的概率用Softmax回归表示。计算公式为:

各种运算的概率叠加

其中,\alpha 为操作混合权重向量,维度为\vert O \vert ,用于计算使用每种运算的概率值,如果定义变量:

\alpha =[\alpha _{1,(i,j)},...,\alpha _{\vert O \vert,(i,j)} ]

则网络结构搜索问题可以转换为求解这些向量。得到这些向量的值之后即可确定网络解结构,在每个顶点处选择概率最大的运算作为该节点的运算:

o_{(i,j)} =argmax_{o\in O}\alpha _{o,(i,j)}

这些向量可以看做是网络结构的编码表示。在将问题进行松弛之后,接下来的目标是同时求解网络结构\alpha 以及所有混合运算所对应的权重w。算法的目标是最优化验证集上的损失,采用梯度下降法。

假设L_{train} ,L_{val}分别为训练集和验证集上的损失,它们不仅与网络结构有关,还与网络参数权重有关。结构搜索的目标是寻找最优的结构\alpha ^* 以最小化验证集损失L_{val}(w^* ,\alpha ^* ) ,而由此结构所决定的最优权重w^*通过最小化训练集上的损失来确定:

w^*=argmax_wL_{train}(w,\alpha^*)

因此该最优化问题是一个双层优化问题,\alpha 为上层优化变量,w为下层优化变量,因此该优化问题可以形式化地表述为:

min_{\alpha}L_{val}(w^*(\alpha),\alpha)\quad s.t. \quad w^*(\alpha)=argmin_wL_{train}(w,\alpha)

精确求解上面的优化问题成本太高,只要\alpha
有任何改变,都需要求解内层优化问题得到w^*(\alpha)。DARTS进行了梯度近似,梯度下降时交替优化权重和结构,在第k次迭代时,根据当前的结构\alpha _{k-1} ,通过将w_{k-1}向着使得训练误差L_{train}(w_{k-1},\alpha_{k-1})最小化的方向移动得到w_k,接下来固定w_k,最小化在验证集上的损失得到新的网络结构,这一步的哟花目标为L_{val}(w_k-\xi L_{train}(w_k,\alpha_{k-1}),\alpha_{k-1})

这里先对w进行一次梯度下降迭代,\xi 为学习率,根据复合函数的求导法则,上面的目标函数对\alpha 的梯度为

其中:

上面梯度计算公式的第二项为矩阵与向量的乘法,为了加快计算速度,用有限差分公式进行了近似。

算法流程:

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容