神经网络结构搜索前沿综述

2024-01-20 02:21杨木润曹润柘李垠桥朱靖波
中文信息学报 2023年10期
关键词:网络结构神经网络评估

杨木润,曹润柘,杜 权,李垠桥,肖 桐,朱靖波

(东北大学 自然语言处理实验室,辽宁 沈阳 110819)

0 引言

目前,深度学习已经在机器翻译[1-3]、图像识别[4-6]、语音处理[7-8]等多个领域得到了广泛应用,并取得了十分优异的成绩。在传统深度学习方法中,研究人员需要设计大量的特征来描述待解决的问题,即“特征工程”。而在深度学习时代,神经网络模型可以完成特征的抽取和学习,但网络结构却需要人工设计。网络结构设计不仅消耗了大量人力和算力资源,而且在很大程度上依赖于研究者的先验知识和经验,由于知识的局限性,很难跳出原有的思维范式,设计出更优秀的模型。而神经网络结构搜索是一种让计算机自动地找到最适用于当前任务的神经网络结构的技术,它的出现将研究人员从设计模型结构的工作中解放出来。

神经网络结构搜索(Neural Architecture Search),在神经网络模型中有时也被称作神经网络架构搜索或简称为网络结构搜索,是自动机器学习中一个必不可少的环节。20世纪80年代,研究人员已经开始使用进化算法对神经网络结构进行设计[9],之后的很多工作也是基于此对网络结构搜索进行探索[10-12]。近些年,随着深度学习技术的发展,网络结构搜索技术在越来越多任务中受到关注,在图像分类[13-14]、语义分割[15]、语言建模[16-18]等任务上取得了很好的结果。

图1展示了神经网络结构搜索方法的主要流程,其中包括三个主要部分: 设计搜索空间、选择搜索策略以及进行性能评估。

图1 神经网络结构搜索的主要流程

设计搜索空间如图1所示搜索空间中包含了ai、bj等子结构(如Transformer[2]中的Attention模块)以及类似a1、b3、c2的组合等局部结构(如Transformer[2]中的Encoder层)。理论上来说,搜索空间应包含所有潜在的模型结构,但如果不对搜索空间进行限制的话,搜索空间会十分巨大。因此,在实际应用中往往会针对特定任务设计搜索空间,之后的搜索过程将会在这个空间中进行。

选择搜索策略在设计好搜索空间之后,结构搜索的过程将选择一种合适的策略对搜索空间进行探索,找到最适用于当前任务的模型结构。不同于模型参数的学习,模型结构之间本身并不存在可以计算的属性,所以很难通过传统的最优化算法对其进行学习。因此搜索策略往往采用进化算法[14,19-20]、强化学习[13,21-22]等方法间接地对模型结构进行设计或优化。

进行性能评估如图1所示,在搜索到模型结构A后,需要对A的性能进行验证,评估当前时刻模型结构性能的优劣。之后进行迭代搜索并调整网络结构,得到性能最优的网络结构A′。但是对于结构搜索任务来说,搜索的过程中会产生大量中间模型结构,如果对所有可能的模型结构都进行性能评估,将花费大量的时间和计算资源。因此研究人员尝试从数据以及超参数调整[13-14,23-26]、现有参数的继承及复用[19,27-29]、模型性能的预测[30-32]等方面降低性能评估的成本,更快速获取模型的性能评估结果。

本文也将参考图1网络结构搜索的主要流程进行说明。对搜索空间、搜索策略和性能评估三部分的原理和经典工作进行介绍。同时,根据深度学习不同任务的特点,分析如何在特定任务中使用网络结构搜索方法。最后结合深度学习其他领域的前沿方法,对当前网络结构搜索中存在的问题提出可能的解决方法,以及未来的发展方向。

1 搜索空间

对搜索空间的建模是结构搜索任务中的基础部分,搜索空间定义了组成网络的基本操作单元,通过组合不同的操作单元能够产生不同的网络结构。为了使搜索策略在特定任务上可以高效地找到性能优异的网络结构,合理的搜索空间必不可少[33]。以自然语言处理任务为例,最初的网络结构搜索工作主要集中在基于循环神经网络构成的搜索空间[16,21,34],而最近几年,在Transformer模型的基础上进行结构搜索也引起了研究人员的广泛关注[35-38]。这些工作中使用的搜索空间大致可以分为两类:

第一类离散搜索空间: 离散搜索空间指的是在建模结构时,将候选神经网络看作搜索空间中彼此孤立的点,包括对整体框架进行设计的全局搜索空间和基于单元的搜索空间;

第二类连续搜索空间: 连续搜索空间指的是通过参数在候选结构之间建立联系,整体相似的结构在搜索空间中会更接近。

1.1 全局搜索空间

离散搜索空间中一个相对简单的全局搜索空间是链式结构的搜索空间(图2(a)),网络中除了唯一的输入层和输出层之外,其余各层仅与其前后相邻的两层连接,并且网络中没有跨层连接或分支连接,式(1)为链式网络中节点k的形式化表示。

图2 不同搜索空间示例

n(k)=o(k)(pk-1),n∈N,o∈O

(1)

其中,N代表网络中的所有节点,O代表节点之间操作的候选集合,p代表节点k的父节点。

Baker等人[22]在链式结构的搜索空间中探索了卷积神经网络的自动化建模,设置了卷积、池化、全连接、平均池化等操作,扩展了操作候选集合O,并且为了防止模型结构过于复杂,还对网络层数、操作个数进行了限制。Zoph等人[21]在链式结构的基础上增加了跳跃连接(图2(c)),扩展了链式结构搜索空间大小,式(2)为该网络中节点k的形式化表示。

n(k)=o(k)({n(k-1)}∪{n(i)|i

(2)

与Zoph等人[21]将节点之间的合并操作固定为级联操作不同的是,Xie等人[39]用求和代替了级联操作,使得搜索空间的网络结构不再是顺序的,并且将网络空间划分为顺序连接的多个段,每一段由多个节点组成。然而随着研究的不断深入,网络层数不断加深,链式结构的网络在训练过程中容易出现梯度消失、梯度爆炸等问题。

为了缓解梯度消失、梯度爆炸等问题,研究人员设计了多分支结构,它允许网络中的层可以和前面任意一层或多层进行连接。Szegedy等人[40]设计的GoogLeNet首次在神经网络中引入了多分支网络结构的概念(图2(b)),设计了Inception模块来减少网络参数,提升网络的表示能力。在跳跃连接的基础之上,Huang等人[41]在2017年提出了DenseNet(图2(d)),该网络中的每一层与前面所有的层都存在连接,并且网络更窄,参数更少。这种连接方式使得特征和梯度的传递更加有效,网络也更容易训练。式(3)为DenseNet中节点k的形式化表示。

n(k)=o(k)({n(k-1)}∪concat(n(k-2),…,n(0)))

(3)

1.2 基于单元的搜索空间

人工设计网络架构时通常会重复使用相同的模块,通过不同的组合来构建不同的网络。而在网络结构搜索中,通常称这些模块为单元(Cell),基于单元的搜索空间也会被看作一种广义的离散搜索空间。由于单元的组成往往较为简单,所以基于单元的搜索空间大小相较于全局搜索空间大大减少。除此之外,通过使用不同结构的单元、不同数量的单元和不同的单元间连接,可以更容易地调整网络结构以适应不同的数据集合任务[13,16,34]。

Zoph等人[13]最早对基于单元的搜索空间进行了探索,并提出了NASNet的搜索空间。图3左侧展示了NASNet中基于单元的网络结构,该网络中主要包含两种单元结构,分别是不改变输入特征图大小的Normal Cell和使输入特征图长宽减少为原来一半的Reduction Cell。图3右侧展示了Reduction Cell的一种内部结构,它由多个Block组成,并且Block内部结构也是不同的。式(4)为Blocki的形式化表示。

图3 NASNet中基于单元的网络结构

n(Blocki)=o(i1)({n(i1)})+o(i2)({n(i2)})

(4)

因此,通过设定不同的Block内部操作以及组成Cell的Block数量,就可以对搜索空间进行调整,使网络结构适应不同的数据集合任务。

在NASNet提出的搜索空间基础上,之后出现了很多基于单元的搜索空间的工作。Liu等人[20]设计了神经网络的层次化表示方法,该方法第一步在基础操作集合中搜索得到不同的单元,之后将第一步搜索得到的单元作为基本单元进行搜索得到最终的分层网络结构。Tan等人[42]设计了MNAS方法,并提出分解层次搜索空间。在该搜索空间中,每个单元都有不同的结构,包含不同数量的Block,但同一单元内的Block结构是相同的。这种方法不仅保证了网络结构层与层之间的多样性,而且在模型性能和延迟上保持了一定的平衡。Real等人[43]从搜索单元的颗粒度入手,将更小的搜索粒度如矩阵乘法、张量缩放等基本数学运算作为搜索单元。也有研究者设计了更大粒度的搜索单元,包括常见的激活函数(ReLU、Sigmod等)以及局部结构(如注意力机制)等[17,44-45]。不过目前针对搜索颗粒度的问题研究较少,针对不同任务并没有有效的自动优化方法。

1.3 连续搜索空间

虽然网络结构搜索仍处于探索阶段,但不可否认,网络结构搜索这一思想被认为是网络结构设计的一次革命。但是,传统的基于离散搜索空间的搜索方法对计算的要求非常高。例如,NASNet[13]在CIFAR-10和ImageNet数据集上使用强化学习的搜索策略需要花费上千个“GPU·天”来获得最优结构。而这些基于贝叶斯优化[46]、强化学习[13,21-22]、进化算法[14,19]的主流搜索方法效率低下的主要原因是它们将网络结构搜索看作是在离散空间中的黑箱优化问题。

为了解决上述问题,DARTS[16]对离散空间进行松弛得到连续的搜索空间,进而使用梯度优化的方法进行搜索。DARTS沿用了NASNet[13]的基于单元的搜索空间,但是它将网络结构看作是一个有向无环图(Directed Acyclic Graph,DAG)。图4(a)为一个单元的初始网络结构,其由N个有序节点组成(图中N=5),每个节点n(i)和边e(i,j)分别表示一个特征张量和一个操作,式(5)给出了任意节点n(j)的计算方式。

图4 DARTS[16]的主要流程

(5)

DARTS为了使搜索空间连续,将对候选操作的选择松弛为对所有可能操作的Softmax结果,式(6)是对节点n(i)进行混合操作后的形式化表示。

(6)

其中,Lval和Ltrain分别代表网络在验证集和训练集上的损失。

在得到最优的α后,再进行离散化得到最终的网络结构,图4展示了DARTS的主要流程。

与ENAS[34]通过参数共享加快搜索速度不同,DARTS为所有可能的操作赋予权重,通过训练,不断优化各个节点之间操作的权重大小,最终权重最大的操作会被保留,得到最优的网络结构。针对DARTS提出的连续搜索空间,研究者们进行了多个方面的研究。Jiang等人[18]设计了I-DARTS,与DARTS中Softmax仅考虑当前节点的输入边不同,I-DARTS考虑了所有输入边来扩展搜索空间。通过这种方法,I-DARTS可以根据所有输入边的重要性确定相关节点之间是否存在连接。而Chen等人[47]针对DARTS在搜索阶段使用浅层网络结构,而在评估阶段通过直接堆叠浅层网络得到深层网络的问题设计了P-DARTS,提出在搜索阶段中逐渐增加网络层数的渐进式搜索方法。同时,根据混合操作的权重大小逐渐减少候选操作集,以此应对层数加深所带来的计算量增加的问题。而且,P-DARTS还提出了搜索空间的正则化方法,以应对深层网络结构中跳跃连接占主导地位所导致的模型稳定性不足问题。为了减少DARTS在搜索时的内存消耗,提高搜索效率,Dong等人[48]提出的GDAS在DAG中对子图进行采样,一次迭代只训练一个子图。当然,还有很多基于DARTS的改进工作[49-52],这里受限于篇幅无法一一列举。

以上工作使用的都是DARTS提出的使用混合权重表示的连续搜索空间,但也有研究者提出了不同的连续空间表示方式,如NAO[53]使用的则是网络结构的嵌入式表示,不同的表示方法也使得从连续空间获得最优架构的方法有所差异,DARTS选取混合权重的最大值作为最优架构,而NAO使用解码器精确地从连续空间中恢复离散架构。

前文介绍了三种典型的搜索空间设计,其中全局和基于单元的搜索空间设计属于离散的搜索空间,另外的一种为连续的搜索空间。对于搜索空间的选择来说,三者并没有优劣之分,更多的是针对不同搜索目标在不同应用场景下的选择。如Prajit等人[54]为了针对神经网络中的激活函数进行搜索使用了离散的搜索空间面向局部的激活函数空间进行构建。而近些年也有大量的研究工作利用连续空间可微分的特性来在受限的算力条件下对循环神经网络进行自动设计[16,18,47-48]。如前文所述,连续空间的优势在于能够根据梯度信息更快速地进行结构搜索,但其相对离散空间来说也存在搜索不稳定的现象,该问题主要源自目前连续空间中对于结构的弱建模,在表示候选结构时忽略了最小搜索单元之间的关系,最终导致搜索系统的脆弱。对于离散空间和连续空间来说,各自存在优势和劣势。如何更好地加速离散空间上的搜索效率以及连续空间上搜索的稳定性,将成为结构搜索任务中亟待解决的问题之一。

2 搜索策略

在定义好搜索空间之后,如何进行网络结构的搜索也同样重要,该过程被称为搜索策略,其主要目标是根据已找到的模型结构计算出下一个最有潜力的模型结构。目前常见的搜索策略一般包括进化算法、强化学习以及基于梯度的方法等。

2.1 进化算法

进化算法最初主要被用来对神经网络模型结构以及权重参数进行优化[9,55-56],随着最优化算法的发展,近年来,对于网络参数的学习开始更多地采用梯度下降的方式,但是进化算法依旧被用于对模型结构的优化[14,19,29]。如图5所示,进化算法主要包括选择、交叉、突变和更新四个步骤。

图5 进化算法的主要流程

从网络结构搜索的角度来说,进化算法通常将不同的模型结构(图5中A1、B2等)看作是遗传算法中种群的个体,之后重复以下步骤:

(1) 从种群中选择部分个体作为亲本,常用的方法有轮盘赌或锦标赛;

(2) 每两个被选择的个体进行交叉产生一个新的后代,后代继承两个亲本各一半信息;

(3) 新的后代进行基因突变以产生种群中未出现过的基因型;

(4) 对新的种群进行适应性评估,并淘汰部分个体,以避免种群规模过大并保证种群内部的竞争性。

表1对近几年的进化算法工作进行了对比,不同方法的区别主要在于如何从种群中选择亲本个体、更新种群方式和如何进行突变产生后代。如Real等人[19]率先将进化算法应用于图像分类任务中,他们从最简单的模型结构开始,通过锦标赛方式从种群中选择亲本,并且每次从预定义的突变操作集(如任意位置添加卷积操作、改变卷积核大小,改变通道数量等)中选择一个变异操作来更新种群。而Xie等人[39]则针对突变的表达形式提出了一种新的编码方案,将网络结构表示为固定长度的二进制字符串,并对种群中的个体通过适应度评估方法来进行更新,同时他们将在小数据集(CIFAR-10)中发现的模型结构成功地转移到较大的数据集中(ImageNet)。Liu等人[20]则提出了另一种方法,该方法使用了1.2节描述的层次化搜索空间,并采用锦标赛方式对种群进行抽取,每次选出当前种群中5%的个体作为亲本。但由于该方法在进化过程中不淘汰任何个体,随着训练轮数的增加,种群的规模会不断增大,运算时间也相应增加。

表1 不同进化算法的特点对比

2.2 强化学习

随着近些年强化学习在深度学习各个领域中得到广泛应用,研究人员也逐渐开始将这种方法引入神经网络的结构学习中来[59-60]。基于强化学习的结构搜索过程如图6所示,其中智能体可以看作是模型结构的生成器,用于产生在当前状态下从智能体角度上看最适用于当前任务的模型结构。动作在这里指的是由智能体产生的一个模型结构,而环境对应着该模型将要应用的任务。当环境得到了模型结构后,环境将输出当前任务下该模型的输出以及对输出结果的评价,二者分别对应强化学习中的状态和奖励。将这两个信息反馈给智能体后,智能体会对该状态下生成的模型结果有一个新的了解,从而对自身结构生成的模型进行调整,之后继续生成更优的模型结构。

图6 基于强化学习的结构搜索过程[61]

不同强化学习方法的区别在于如何表示智能体的策略以及如何优化智能体的策略。Zoph等人[21]在2017年首次将强化学习应用到网络结构搜索任务中,该方法将网络结构的设计看作是序列生成任务,使用字符序列对网络结构进行表述。使用由强化学习指导训练出的循环神经网络作为控制器,对模型结构序列(目标任务网络结构)进行预测,从而针对目标任务生成高效的网络结构。Baker等人[22]提出的MetaQNN,使用带ε贪婪搜索策略和经验回放的Q-learning方法来训练智能体,从而优化卷积神经网络结构。之后,Zoph等人[13]于2018年提出了NASNet,该方法使用近端策略优化(Proximal Policy Optimization)对智能体进行优化,加快了搜索速度,缩减了参数规模。而Zhong等人[62]提出的BlockQNN,使用网络结构编码来表示网络中的层,并使用了分布式异构框架和早停策略来提升搜索速度。

2.3 基于梯度的方法

与强化学习和进化算法在离散空间进行结构搜索不同,基于梯度的搜索方法是在连续空间上进行的。该方法将模型结构建模为超网络中的结构参数,之后使用基于梯度的方法对超网络中的参数进行优化,最终根据其中的结构参数离散出模型结构,完成结构搜索的过程。

如1.3节所述,为了解决离散空间中搜索代价大、效率低下等问题,Liu等人[16]最先提出了可微结构搜索方法DARTS。除了在基于DARTS提出的连续搜索空间中使用基于梯度的方法进行搜索之外[18,47-48],研究者们也进行了其他的尝试。Wu等人[63]提出的DNAS将搜索最优网络结构的问题简化为搜索最优的网络结构的分布问题,并通过Gumbel Softmax[64]使用基于梯度下降的优化方法SGD来训练结构分布,并且训练随机超网络的Loss由改善准确率的交叉熵Loss和减少目标设备延时的Loss两部分组成。Cai等人[65]提出的ProxylessNAS方法,首次不使用代理方法,而是直接对结构进行搜索,同时通过路径级二值化的方法节约内存消耗,并且针对目标硬件使用基于梯度的方法来进行优化。Xie[66]等人提出的SNAS用随机神经网络来表达网络结构搜索任务,在同一轮反向传播中训练网络操作参数和结构分布参数,并用损失函数来替代精确率,提高了搜索效率。

2.4 其他方法

除了上文提到的基于进化算法、强化学习以及梯度的方法之外,结构搜索策略还有很多其他的方法,例如基于贝叶斯优化的方法和基于随机搜索的方法。

基于贝叶斯优化的方法在搜索网络结构超参数的任务中表现较好,能够在给定模型结构的基础上找到最适用于当前任务的超参数。Bergstra等人[67]于2013年首次设计了基于贝叶斯优化的神经网络超参数搜索算法,在三个计算机视觉任务上取得了最佳成绩。Swersky等人[68]对此工作进行了改进,在条件参数空间中定义了新内核,共享结构间信息,提升了模型质量和贝叶斯优化结果。

由于网络结构搜索任务中不同方法对预处理、超参数的优化及搜索空间的定义等都是不同的,实际上进行性能比较是很困难的。部分研究人员通过实验验证了随机搜索是网络结构搜索任务上合理的基线[16,20,53,69-70],基于此,Yang等人[71]提出使用随机搜索策略的平均架构作为基线。但与上述结论不同,Bender等人[72]认为在实际任务中高效的搜索策略比随机搜索更好,因为以往的实验结果大多数是集中在小数据集上,限制了高效搜索策略的性能,从而导致和随机搜索策略的性能相差无几。

2.5 性能比较

表2和表3对比了不同网络结构搜索方法在CIFAR-10数据集和ImageNet数据集上的性能表现。由于不同网络结构搜索方法往往针对不同任务特点进行设计,例如,有的网络结构的性能更好,但参数量更大;而有的网络结构性能一般,但参数量很小,更适用于移动设备,所以这里只展示了每种方法的代表性结果。

表2 不同NAS方法在CIFAR-10数据集上的性能比较(Top-1)

表3 不同NAS方法在ImageNet数据集上的性能比较(Top-1)

从表中不难看出,早期的工作更多集中在对进化算法和强化学习的研究,虽然网络结构性能较高,但是资源消耗却十分巨大。例如,AmoebaNet[14]在CIFAR-10数据集和ImageNet数据集上都取得了较好的结果,但是搜索花费了3 150个GPU天。而之后的工作则更注重同时保证高性能和高效率。例如,ENAS[34]通过参数共享策略,将搜索时间缩短到了一个GPU天内。虽然在部分方法中,基于梯度的搜索策略取得了优异成绩,不过其也并不能保证在性能表现上远超进化算法和强化学习方法,如在ImageNet任务中进化算法取得了SOTA的效果。

需要注意的是,虽然表2和表3展示了不同方法之间的性能对比,但是由于不同方法的结果是在不同的实验条件下得到的,所以这种比较是不够公平的。Ying等人[88]提供的Nas-bench-101是第一个供网络结构搜索研究使用的数据集,包含423 624个不同的网络结构,并在CIFAR-10数据集上进行多次训练和评估,使其他研究人员可以通过查表快速获得模型的训练结果。Dong等人[89]则在Ying等人[88]的基础上进行了扩展,Nas-bench-201具有不同的搜索空间、在多个数据集上的结果和更多的训练信息。这些统一数据集使得研究人员避免了不必要的重复训练,而只专注于搜索算法本身,间接推动了网络结构搜索研究的发展。

搜索策略一般被看作结构搜索任务的核心,其构建其一套方式来对搜索空间进行高效探索,再结合后文将介绍的性能评估方法来完成整个神经网络的自动设计。对于搜索策略来说,前文所述的三类主流方法主要可分为两种思路: 强化学习和进化算法的方式将待搜索的神经网络结构看作彼此独立的对象,通过激励信号或先验知识来促进更优秀的网络结构的产生;而基于梯度的方法则是采用结构即参数的思想进行设计,通过可微分的参数将组成神经网络的局部结构组合起来,通过梯度的指导对搜索空间进行探索。这两类方法均为通过机器学习算法的搜索策略,而对于随机搜索的方式更多的是被研究人员作为相关任务的基线,用来判断在不加以指导的情况下,相同算力的系统能够找到怎样的神经网络模型。对于实际应用来说,近些年基于梯度的搜索策略凭借高效的搜索效率得到广泛关注,如DARTS[16]及其相关变体。但受限于基于梯度算法低鲁棒性问题,梯度方法相关研究在最近热度降低,而基于进化算法的研究工作开始得到更多的关注[35,90-91]。

3 性能评估策略

网络结构搜索过程中往往会产生大量的中间结构,为了评估它们的性能,最简单的方法是在训练数据上训练搜索出来的网络结构,并在验证集上评估其性能,但是,从头开始训练并评估每个网络结构往往需要耗费大量的计算时间。因此需要快速、准确地评估这些结构的性能优劣,以保证在搜索过程中可以有效地挑选出高质量的模型结构。表4列出了常见的评估策略以及相应方法的核心思想。

表4 网络结构搜索中的性能评估策略对比

3.1 数据及超参数的调整

一种常见的方法是从数据及超参数的角度简化模型训练的难度。具体来说,从数据角度可以采取减少训练集数据[25]和降低图像分辨率[26]等方法。而从超参数角度可以采取减少模型网络层数、减少训练轮数、减少每层网络中神经元数量等方法[13-14,92]来简化模型参数,达到加速训练和评估的目的。虽然上述方法降低了性能评估过程的计算成本,但是也在网络结构评估中引入了偏差,不能准确地对模型的绝对性能进行评价。不过其结果已经能够为性能评估起到一定指示作用,并帮助搜索策略对结构生成的过程进行调优。

3.2 现有参数的继承及复用

另一种方法希望从训练过程的角度出发,让中间过程产生的模型结构能够在现有模型参数上进行继续优化,从而快速达到收敛状态进行性能评估。Cai等人[27]提出的路径级网络转换方法,使用分配和合并策略,以多分支操作代替单层操作,从而重用之前训练好的网络结构和现有的网络结构,提高采样效率。Cai等人[93]提出的EAS框架使用编码器网络来学习给定网络结构的低维表示并生成网络转换动作,同时为了将可变长度网络结构作为输入,采用Bi-LSTM作为编码器网络。这类方法无需从头训练中间结构,通过“热启动”方式对模型参数进行优化,大幅减少性能评估过程中的时间消耗[19,28-29]。

3.3 模型性能预测

模型性能预测也是一个具有潜力的加速评估过程的方法,这种方式旨在通过少量训练过程中的性能变化曲线来预估模型是否具有潜力,从而快速终止低性能模型的训练过程,节约训练时间。Baker等人[31]首次将学习曲线预测应用到NAS任务中,并结合了网络结构信息、超参数信息和时序上的验证精度信息来进行预测,提高了性能预测的准确性。Domhan等人[32]提出的概率学习曲线模型,通过加权组合11种不同的递增饱和函数,从随机梯度下降的过程中推断出模型性能,可提前终止性能较差模型的训练。

除了根据训练过程中的学习曲线进行模型性能的预测之外,也有研究人员根据局部结构的性能来对整体结构的性能进行预测,这种方式也能快速地评估搜索过程中中间结构的性能[83]。

3.4 一次性搜索

一次性搜索(one-shot)方法在近几年受到了广泛的关注和研究[16,94-96],该方法的核心思想是将所有网络结构都看作是同一个超网络的不同子网络,具有该超网络共同边的不同子网络结构之间共享权重。这样只需要训练超网络的权重,然后从超网络中继承训练好的权重来评估网络结构,而不需要重新开始训练,大大加快了网络结构的性能评估[97]。Brock等人[81]提出的SMASH方法使用辅助网络来为不同网络结构生成权重,并且与正常训练的权重在准确率上存在关联性,加快了性能评估速度。Dong等人[79]提出的自我评价模板网络采用均匀随机的训练策略,降低了one-shot方法所带来的偏差,提高了所采样网络结构的优秀率,从而更有可能找到最优网络结构。Zhang等人[80]对one-shot的权重共享机制进行了改进,提出了NSAS损失函数,以解决超网络训练过程中由于权重共享而导致的多模型遗忘问题。Guo等人引入单路径超网络的范式,通过均匀路径采样对网络进行训练[94]。虽然一次性搜索的权重共享方法能够减少搜索时间,但是却将所有可能的网络结构限制在了超网络中,并且这种方法也带来了较大的偏差。因此,在实际应用中,更多是通过该方法对网络的性能做出近似的评估后进行排名。

而网络态射(Network Morphism)方法则是通过不断扩展初始网络,在保证网络性能的前提下增加网络的容量[98-100]。相比于one-shot方法将网络限制在超网络中,该方法没有限制网络的大小,但也因此可能导致过于复杂的网络结构。因此需要对其进行压缩或移除来降低模型的复杂度[29,101]。

此外,基于DARTS的工作[16,18,47-48]也使用了类似的权重共享思想。但不同的是,基于DARTS的工作直接对超网络进行优化,根据学习到的混合权重,将最佳子网络与超网络解耦。

3.5 代理模型

除了上述方法之外,代理模型也是性能评估中常用的方法,该方法采用近似任务代替实际的训练任务,代理模型的性能即为目标网络结构的性能[83]。例如,在ImageNet数据集上进行网络结构搜索时,大多数方法都会将在CIFAR-10数据集上的结构搜索作为代理任务[14,16,47,78,83,102],之后将在代理任务上搜索到的最优网络结构迁移到ImageNet数据集上。

对于性能评估方法来说,其目的在于能够更快速地对搜索过程中探索的中间结构进行性能验证,因此不同方法的选择需要考虑到所使用的搜索策略,如在基于进化算法、强化学习等方法下的搜索,中间结构会被作为独立个体进行性能评估,因此数据及超参数的调整、性能预测、代理模型等方式会被用来加速性能验证的过程[13-14]。而对于基于梯度的方法来说,在搜索的过程中已经会对超网络中参数进行直接优化或者维护超网络参数,因此往往会使用现有参数的继承及复用以及一次性搜索等策略来对中间结构进行效果评估[16,79]。

4 展望

网络结构搜索技术的出现有望将研究人员从设计模型结构的工作上解放出来,并且设计出完全不同于人工设计的网络结构,突破人类专家的思维范式。目前大部分网络结构搜索工作主要集中在卷积神经网络和循环神经网络上,前者用于解决目标识别问题,后者用于语言建模任务。但是将网络结构搜索方法推广到其他领域和任务中时,还有许多问题和挑战需要解决。

首先,在目前的神经网络结构搜索中候选结构的表示问题亟待解决。无论在离散空间还是连续空间中,所有候选的局部结构往往并未经过建模即被组成各式网络进行探索和效果验证。该过程忽略了局部结构(如激活函数、残差链接等)之间的内部联系,最终导致完整网络的表示不稳定,为结构搜索系统的可复现性造成严重负面影响。虽然很多方法能够达到和人类专家设计的模型性能一样甚至更好的结果,但是缺乏严格的数学证明,无法合理解释搜索算法的倾向性。针对该问题,设计有效的结构建模器对候选结构之间的关联关系进行学习将有效改进未来结构搜索系统的可靠性。此外,为结构搜索任务构建统一的实验数据和平台同样也有助于对比不同方法效果,如Nas-bench-101[89]和Nas-bench-201[90]等,未来更多相关资源的构建同样对于解决神经网络结构搜索可复现性的问题具有重大帮助。

另一方面,对于候选局部结构的颗粒度自动调节也是未来影响结构表示的关键问题之一。目前,在表示搜索空间中的网络结构时局部结构的最小颗粒度主要根据研究人员对任务理解的经验进行设计。颗粒度小,可达到矩阵的基础运算[103-104],而对于大颗粒度的候选局部结构可达到使用一层人工经验的网络(如一层的前馈网络、注意力网络等)[16,45]。颗粒度大小直接决定搜索空间中能表示的网络多样性,进而对搜索空间的规模产生影响。类似自然语言处理任务中对于分词颗粒度的研究,如果能针对目标任务自动调节找到最适合当前场景的局部结构颗粒度的话,将能够有可能在保证找到最佳结构的条件下保证搜索效率,是一个非常有潜力且重要的研究问题。

此外,受到自然语言处理领域预训练模型的启发[105-108],网络结构预搜索也是一个有潜力的方向。例如在大规模数据上进行网络结构搜索得到表示能力更强的模型结构,之后再针对具体任务进行搜索微调,这种方式有效提升了模型结构的复用性,同时从大规模数据上获取到的信息很有可能会比特定任务下受限数据集合中所获取的信息更加充分,能够更好地指导模型结构的设计,在未来也是一个颇具研究潜力的方向。

5 总结

本文根据图1对网络结构搜索工作进行了详细的介绍与分析,并且比较了现有网络结构搜索方法在CIFAR-10和ImageNet数据集上的性能和效率,同时讨论了一些未来可能的研究方向。虽然现阶段网络结构搜索取得了不错的成果,但是到目前为止,网络结构搜索技术仍处于发展的初级阶段,还需要更多的理论研究和深入分析,距离完全取代人工网络结构的设计,还有很长一段路要走。但可以相信,未来的工作一定会使网络结构搜索技术更加完善,更具有实用价值。

猜你喜欢
网络结构神经网络评估
神经网络抑制无线通信干扰探究
基于神经网络的拉矫机控制模型建立
基于互信息的贝叶斯网络结构学习
知识网络结构维对于创新绩效的作用机制——远程创新搜寻的中介作用
沪港通下A+ H股票网络结构演化的实证分析
复杂网络结构比对算法研究进展
复数神经网络在基于WiFi的室内LBS应用
评估依据
基于支持向量机回归和RBF神经网络的PID整定
立法后评估:且行且尽善