BANANAS: Bayesian Optimization with Neural Architectures for Neural Architecture Search

BANANAS:神经架构搜索中的贝叶斯优化

在这里插入图片描述

论文地址:https://arxiv.org/abs/1910.11858

项目地址:https://github.com/naszilla/naszilla

Abstract

在过去的五年中,人们考虑了许多神经结构搜索(NAS)的方法。贝叶斯优化(BO)长期以来在超参数优化方面取得了成功,当它与神经预测器相结合时,最近成为一种非常有前途的NAS策略。最近的工作提出了该框架的不同实例,例如,使用贝叶斯神经网络或图卷积网络作为BO中的预测模型。然而,这些论文中的分析通常集中在成熟的NAS算法上,因此很难判断框架的哪个单独组件会产生最佳性能。本文从结构编码、神经预测器、不确定度校准方法、采集函数和采集优化策略五个方面对“BO +神经预测器”框架进行了深入分析。我们为每个组件测试了几种不同的方法,并为神经架构开发了一种新的基于路径的编码方案,我们在理论上和经验上证明了它比其他编码具有更好的可扩展性。使用我们所有的分析,我们开发了一个称为BANANAS的最终算法,它在NAS搜索空间上实现了最先进的性能。我们遵守NAS研究清单(Lindauer and Hutter 2019),以促进最佳实践。

1 Introduction

自2012年深度学习革命以来,神经网络变得越来越复杂和专业化[25,17,57]。开发新的最先进的体系结构通常需要大量的工程和领域知识。一个快速发展的研究领域,神经结构搜索(NAS),试图使这一过程自动化。自Zoph和Le[79]的流行工作以来,对NAS的研究如潮而至[34,42,35,21,10,19]。已经提出了许多方法,包括进化搜索,强化学习,贝叶斯优化(BO)和梯度下降。在某些情况下,由于简单的并行性、与其他超参数的联合优化、易于实现、可移植到不同的体系结构空间以及对其他/多个不可微目标的优化等优点,像BO这样的零阶(不可微)算法比一阶(单次)技术更令人感兴趣。

高斯过程BO (gp)在深度学习超参数优化方面取得了成功[14,11],是欧氏空间中昂贵函数零阶高效优化的领先方法。然而,将基于gp的BO应用于NAS的最初方法面临着挑战,限制了其获得最先进结果的能力。例如,最初的方法需要指定架构之间的距离函数,这涉及繁琐的超参数调整 [21、19],并且需要耗时的矩阵求逆步骤。

最近,带有神经预测器的贝叶斯优化已成为NAS的高性能框架。这个框架避免了前面提到的NAS中BO的问题:不需要在体系结构之间构建距离函数,而且神经预测器的可伸缩性比GP模型好得多。最近的研究提出了该框架的不同实例,例如,带有BO的贝叶斯神经网络[53]和带有BO的图神经网络[48,36]。然而,这些分析通常侧重于成熟的NAS算法,因此很难判断框架的哪些组件会带来最佳性能。

在这项工作中,我们首先对“BO +神经预测器”框架进行了彻底的分析。我们确定了该框架的五个主要组成部分:架构编码、神经预测器、不确定度校准方法、采集函数和采集优化策略。例如,神经预测器可以使用图卷积网络、基于变分自编码器的网络或前馈网络,不确定度校准方法可以使用贝叶斯神经网络或不同类型的集成方法。在对BO +神经预测器框架的所有组件进行实验后,我们使用此分析来定义该框架的高性能实例,我们称之为BANANAS:NAS神经架构的贝叶斯优化。

为了使神经预测器达到最高的准确率,我们还定义了一种新的基于路径的架构编码,我们称之为路径编码。路径编码的动机如下。搜索空间中的每个体系结构都可以表示为一个标记的有向无环图(DAG)——一组节点和有向边,以及每个节点(或边)所代表的操作列表。然而,神经网络很难解释邻接矩阵[78],因为特征彼此高度依赖。相比之下,我们的路径编码方案中的每个特征表示张量可以从架构的输入层到输出层的唯一路径。我们从理论上和实验上证明,这种编码比邻接矩阵编码的可扩展性更好,并允许神经预测器达到更高的精度。

我们将BANANAS与一系列流行的NAS算法进行了比较,包括随机搜索[30]、DARTS[35]、正则化进化[44]、BOHB[11]、NASBOT[21]、局部搜索[66]、TPE[4]、BONAS[48]、BOHAMIANN[53]、REINFORCE[67]、基于gp的BO[50]、AlphaX[62]、ASHA[30]、GCN Predictor[64]和DNGO[52]。BANANAS在NASBench-101上实现了最先进的性能,并且在所有NASBench-201数据集上具有竞争力。随后的研究也表明,即使与一阶方法如DARTS[35]、PC-DARTS[69]和GDAS[8]相比,BANANAS在NASBench-301上也具有竞争力[49]。

最后,为了提高可重复性,我们在附录E中讨论了我们的实验如何遵守NAS最佳实践清单[33]。特别是,我们在知名的搜索空间和NAS管道上进行了实验,运行了足够多的试验以达到统计显著性,并发布了我们的代码。

我们的贡献。我们总结一下我们的主要贡献。

  • 我们分析了一个简单的NAS框架:带有神经预测器的贝叶斯优化,并彻底测试了五个组件:编码、神经预测器、校准、采集函数和采集优化。
  • 我们提出了一种新的基于路径的架构编码,提高了神经预测器的准确性。理论和实验结果表明,路径编码比邻接矩阵编码具有更好的可扩展性。
  • 我们使用我们的分析来开发BANANAS,这是上述框架的一个高性能实例。我们的经验表明,在流行的NAS基准测试中,BANANAS是最先进的。

2 Societal Implications

我们的工作为神经结构搜索提供了一种新的方法,旨在提高未来深度学习研究的性能。因此,我们对我们的工作对社会的净影响的控制要少得多。例如,我们的工作可能用于调整深度学习优化器,以减少大型发电厂的碳足迹,但它也可以很容易地用于改进deep fake generator。显然,第一个例子会对社会产生积极的影响,而第二个例子可能会产生消极的影响。

我们的工作是对实际应用的一个抽象层次,但我们的算法,以及更广泛的NAS领域,可能会成为推进人工智能领域的重要一步。由于最近对人工智能研究影响的明确推理[16]的推动,我们希望神经架构搜索将被用于造福社会。

3 Related Work

NAS至少从20世纪90年代就开始研究,并在过去几年中获得了重大关注[22,56,79]。最近一些最流行的NAS技术包括进化算法[37]、强化学习[79,42]、BO[21]和梯度下降[35]。有关神经结构搜索的综述,请参见[10]。

初始BO方法定义了体系结构之间的距离函数[21,19]。有几项研究预测了神经网络的验证精度[23,6,18,74,1]。最近的一些论文使用贝叶斯优化与图神经网络作为预测器[36,48],然而,他们没有对框架的所有组件进行消损研究。在这项工作中,我们并没有声称发明了BO +神经预测器框架,但是,我们给出了我们所知道的最深入的分析,我们使用它来设计该框架的高性能实例。

先前也有使用神经网络模型在BO中进行超参数优化的工作[52,53],这些论文的明确目标是将基于高斯过程的BO从三次时间提高到线性时间的效率,而不是为了提高BO在迭代次数方面的性能而开发不同类型的预测模型。

最近的论文呼吁进行公平和可重复的实验[30,72]。基于这种思路,我们创建了NASBench-101[72]、-201[9]和-301[49]数据集,其中包含数万个预训练的神经架构。我们在附录A中提供了额外的相关工作细节。

后续的工作。自其发布以来,多篇论文将BANANAS纳入新的实验中,进一步证明了BANANAS是一种具有竞争力的NAS算法[24,49,40,45,63]。最后,最近的一篇论文对NAS使用的几种编码进行了研究[65],结论是神经预测器在路径编码下表现良好。

4 BO + Neural Predictor Framework

在本节中,我们将介绍BO的背景,并描述BO +神经预测器框架。在深度学习的BO应用中,典型的目标是找到一个神经结构和/或一组导致最佳验证误差的超参数。形式上,BO寻求计算 a ⋆ = a r g m i n a ∈ A f ( a ) a^{\star}= \mathbb{arg min}_{a \in A} f (a) a=argminaAf(a),其中 A A A是搜索空间, f ( a ) f(a) f(a)表示在固定数据集上进行固定次数的epoch训练后架构 a a a的验证误差。在标准BO设置中,在一系列迭代中,使用模型的后验分布(通常是GP),使用所有先前迭代的结果对{f(a)}a∈a的拓扑进行建模。然后通过优化采集函数(如预期改进(EI)[38]或汤普森采样(TS)[59])来选择下一个架构。这些功能在搜索过程中平衡了探索和利用。然后对所选的架构进行训练并用于更新 { f ( a ) } a ∈ A \{f(a)\}_{a \in A} { f(a)}aA的模型。在每次迭代中计算 f ( a ) f(a) f(a)是BO的瓶颈(因为必须训练神经网络)。为了缓解这种情况,并行BO方法通常在每次迭代中输出k个架构来训练,这样k个架构就可以并行地训练。

BO +神经预测器框架。在BO的每次迭代中,我们在所有先前评估的架构 a a a上训练神经网络,以预测未见架构的验证精度 f ( a ) f(a) f(a)。这些架构被表示为标记的DAGs[72,9],在DAGs传递给神经预测器之前,有不同的编码方法[72,65],我们将在下一节中描述。神经预测器的选择包括前馈网络、图卷积网络(GCN)和基于变分自编码器(VAE)的网络。为了评估采集函数,我们还计算每个输入数据点的不确定性估计。这可以通过使用贝叶斯神经网络或神经预测器的集合来实现。给定采集功能,然后执行采集优化例程,该例程返回下一个要评估的体系结构。在下一节中,我们将详细分析实例化该框架时必须做出的选择。

5 Analysis of the Framework

在本节中,我们对BO +神经预测器框架进行了广泛的研究。首先,我们讨论了架构编码,并定义了一种称为路径编码的新特性。然后对神经预测器的不同选择进行了分析。接下来,我们分析了从神经预测器获得校准不确定性估计的不同方法。之后,我们对不同的采集功能和采集优化策略进行了实验。最后,我们使用这些分析来创建我们的算法BANANAS。

在本节中,我们在NASBench-101数据集上运行实验(在其他搜索空间上的实验在第6节中给出)。NASBench-101数据集[72]由来自基于cell的搜索空间的超过423,000个神经架构组成,每个架构都带有预先计算的验证和在CIFAR-10上的测试精度。搜索空间由具有7个节点的DAG组成,每个节点可以执行3种不同的操作,节点之间最多可以有9条边。我们使用开源版本的NASBench-101数据集[72]。我们在附录D中给出了使用NASBench-101的全部细节。

Architecture encodings. 现有的大多数神经预测器工作使用邻接矩阵表示来编码神经结构。邻接矩阵编码给出了节点的任意排序,然后给出了节点i和节点j之间的边的二进制特征,对于所有 i < j i < j i<j。然后每个节点上的操作列表也必须包含在编码中。对于神经预测器来说,这是一个具有挑战性的数据结构,因为它依赖于节点的任意索引,并且特征高度依赖于彼此。例如,如果没有从节点2到输出的路径,那么从输入到节点2的边是无用的。如果从节点2到输出有一条边,则这条边与描述节点2操作的特征高度相关(conv 1x1, pool 3x3等)。邻接矩阵编码的连续值变体也被测试过[72]。

我们引入了一种新的编码,我们称之为路径编码,我们表明它大大提高了神经预测器的性能。路径编码很容易定义:从架构单元的输入到输出的每条路径都有一个二进制特征,以操作的形式给出(例如,输入→conv 1x1→pool 3x3→输出)。要对体系结构进行编码,我们只需检查体系结构中存在哪些路径,并将相应的特征设置为1。参见图5.1。直观地说,路径编码有几个强大的优势。特征不像在邻接矩阵编码中那样相互依赖,因为每个特征表示数据张量可以从输入节点到输出节点的唯一路径。此外,不再有任意的节点排序,这意味着每个神经结构只映射到一个编码(这对于邻接矩阵编码来说不是真的)。另一方面,多个体系结构可以映射到相同的路径编码(即,编码是定义良好的,但不是一对一的)。然而,随后的研究表明,具有相同路径编码的架构也具有非常相似的验证错误[65],这在NAS算法中是有益的。

在这里插入图片描述

路径编码的长度是一个单元中可能路径的总数, Σ i = 0 n q i \Sigma^n_{i=0} q^i Σi=0nqi,其中 n n n表示单元中节点的数量, q q q表示每个节点的操作次数。然而,我们提出的理论和实验证据表明,大幅度截断路径编码,即使长度小于邻接矩阵编码,也不会降低其性能。许多NAS算法通过在最大边缘约束下随机采样DAG中的边缘来对架构进行采样[72]。

直观地说,绝大多数路径出现在该过程返回的单元格中的概率非常低。因此,通过简单地截断最不可能的路径,我们的编码在单元的大小上呈线性扩展,而信息丢失的数量是任意小的。在下面的定理中,设 G n , k , r G_{n,k,r} Gn,k,r表示具有 n n n个节点的DAG架构,每个节点上有 r r r个操作选择,其中每个可能的前向边(共 n ( n − 1 ) 2 \frac{n(n−1)}{2} 2n(n1))被选择的概率为 2 k n ( n − 1 ) \frac{2k}{n(n−1)} n(n1)2k(因此期望的边数为 k k k)。

定理5.1(非正式)。给定整数 r , c > 0 r, c>0 r,c>0,存在一个N, N N N使得 ∀ n > N \forall n>N n>N,存在一个包含 n n n条路径的集合 P ′ \mathcal{P}^{\prime} P,使得 G n , n + c , r G_{n, n+c, r} Gn,n+c,r包含不在P0中的路径的 P ′ \mathcal{P}^{\prime} P概率小于 1 n 2 \frac{1}{n^2} n21

对于正式的陈述和完整的证明,请参见附录C。该定理表明,当n足够大时,在高概率下,我们可以将路径编码截断为仅n的大小,而不会丢失信息。虽然该结果的渐近性质使其成为概念证明,但我们在图5.1中经验地显示,在运行在NASBench-101上的BANANAS中,路径编码可以从 Σ i = 0 5 3 i = 364 \Sigma^5_{i=0} 3^i=364 Σi=053i=364位的完整大小截断到仅20位的长度,而不会损失性能。(本节稍后将描述该结果的确切实验设置。)实际上,截断后的性能实际上在一定程度上有所提高。我们认为这是因为使用全长编码,神经预测器过度拟合到非常罕见的路径。在附录D中,我们展示了NASBench-201的类似结果[9]: Σ i = 0 3 5 i = 156 \Sigma^3_{i=0} 5^i=156 Σi=035i=156的全路径编码长度可以被截断为30,而不会损失性能。

神经预测。现在我们研究神经预测器,它是BO +神经预测器框架的关键组成部分。回想一下前一节,神经预测器是一个神经网络,它在当前评估的神经架构集上反复训练,并预测未见的神经架构的准确性。先前的工作使用GCNs[48,36]或基于V ae的架构[75]来完成此任务。我们评估了使用邻接矩阵或基于路径编码的标准前馈神经网络的性能,并与VAE和GCNs在预测神经结构验证精度方面进行了比较。我们使用的前馈神经网络是一个连续的全连接网络,有10层,宽度为20,亚当优化器学习率为0.01,损失函数设置为平均绝对误差(MAE)。我们使用GCN[76]和VAE[75]的开源实现。参见附录D获得我们实现的完整描述。

在图5.2(左)中,我们通过在一组从NASBench-101绘制的神经体系结构上训练它们来比较不同的神经预测器,以及验证精度,然后在规模为1000的hold -out测试集上计算MAE。我们对不同的训练集大小进行了50次试验,并对结果进行平均。表现最好的神经预测器是具有路径编码(有和没有截断)的前馈网络和GCN。与GCN和V AE相比,前馈网络的运行时间也更短,然而,完整NAS算法的运行时间主要是评估神经结构,而不是训练神经预测器。

在这里插入图片描述

不确定性校正。在上一节中,我们评估了独立神经预测器。为了将它们合并到BO中,对于任何数据点,神经预测器都需要输出预测和该预测的不确定性估计。实现不确定性的两种常用方法是使用贝叶斯神经网络(BNN)或使用神经预测器的集合。在BNN中,我们推断网络权重的后验分布。最近有研究表明,使用哈密顿蒙特卡罗算法可以实现神经网络的准确预测和不确定性估计[53]。在集成方法中,我们使用不同的随机权重初始化和训练集顺序训练 m 个神经预测器。然后对于任意数据点,我们可以计算这m个预测的均值和标准差。在某些情况下,即使是规模为3和5的神经网络集成,也比其他领先的方法(如bnn)提供了更可靠的不确定性估计[28,3,5,51,73]。

我们将BNN的不确定性估计与上一节中描述的每个神经预测器的大小为5的集合进行比较。我们对BNN使用BOHAMIANN实现[53],为了确保与集合的公平比较,我们对其进行了五倍长的训练。实验设置与上一节类似,但我们计算校准的标准度量:测试集上的均方根校准误差(RMSCE)[26,60]。参见图5.2(中间)。直观地说,RMSCE是低的,如果一种方法产生一个校准良好的预测估计(即预测间隔的覆盖率等于观察到的覆盖率)。与先前的工作一致,所有基于集合的预测器都比BNN产生了更好的不确定性估计。注意RMSCE仅测量不确定性估计的质量,与预测精度无关。因此,在评估神经预测器时,我们必须同时考虑预测(图5.2左)和RMSCE(图5.2中)。

最后,我们在完整的BO +神经预测器框架内评估每个神经预测器的性能。我们使用第4节中描述的方法,使用独立的汤普森采样和突变进行采集优化(下一节将更详细地描述)。每个算法的预算为47 TPU小时,或者在NASBench-101上进行大约150次神经架构评估。也就是说,有150次迭代训练一个神经预测器,并选择一个新的架构来使用获取函数进行评估。算法在BO的每次迭代中输出10个体系结构,以获得更好的并行化,如前一节所述。在每次迭代之后,我们返回架构的测试错误,其中包含到目前为止发现的最佳验证错误。我们对每种算法进行200次试验,并对结果进行平均。这是与图5.1中相同的实验设置,以及本节后面和下一节中的实验。参见图5.2(右)。两种表现最好的神经预测器是GCNs的集成和具有路径编码的前馈神经网络的集成,后者具有轻微的优势。前馈网络也是可取的,因为它比GCN需要更少的超参数调整。

采集功能和优化。现在我们分析并购框架的方面,即并购功能的选择和并购优化。我们考虑了四个常见的采集函数,它们可以使用每个输入数据点的平均值和不确定性估计来计算:EI[38], PI[27], UCB[54], 和TS [59]。我们还考虑了TS的一种变体,称为独立汤普森抽样。首先给出每个获取函数的形式定义。

假设我们训练了 M M M个预测模型的集合, { f m } m = 1 M \left\{f_m\right\}_{m=1}^M { fm}m=1M,其中 f m : A → R f_m: A \rightarrow \mathbb{R} fm:AR。让 y min  y_{\text {min }} ymin 表示到目前为止发现的体系结构的最低验证错误。根据之前的工作[39],我们对输入架构 a ∈ A a \in A aA使用以下获取函数估计:

ϕ E I ( a ) = E [ 1 [ f m ( a ) > y m i n ] ( y m i n − f m ( a ) ) ] = ∫ − ∞ y m i n ( y m i n − y ) N ( f ^ , σ ^ 2 ) d y (5.1) \begin{aligned}\phi_{\mathrm{EI}}(a)&=\mathbb{E}\left[1\left[f_{m}(a)>y_{\mathrm{min}}\right](y_{\mathrm{min}}-f_{m}(a))\right]\\ &=\int_{-\infty}^{y_{\mathrm{min}}}(y_{\mathrm{min}}-y)\mathcal{N}\left(\hat{f},\hat{\sigma}^{2}\right)dy\end{aligned} \tag{5.1} ϕEI(a)=E[1[fm(a)>ymin](yminfm(a))]=ymin(yminy)N(f^,σ^2)dy(5.1)

ϕ P I ( x ) = E [ 1 [ f m ( x ) > y min ⁡ ] ] = ∫ − ∞ y m i n N ( f ^ , σ ^ 2 ) d y (5.2) \begin{aligned} \phi_{\mathrm{PI}}(x)& =\mathbb{E}\left[1\left[f_m(x)>y_{\min}\right]\right] \\ &=\int_{-\infty}^{y_\mathrm{min}}\mathcal{N}\left(\hat{f},\hat{\sigma}^2\right)dy \end{aligned} \tag{5.2} ϕPI(x)=E[1[fm(x)>ymin]]=yminN(f^,σ^2)dy(5.2)

ϕ U C B ( x ) = f ^ − β σ ^ (5.3) \phi_{\mathrm{UCB}}(x)=\hat{f}-\beta\hat{\sigma} \tag{5.3} ϕUCB(x)=f^βσ^(5.3)

ϕ T S ( x ) = f m ~ ( x ) , m ~ ∼ U n i f ( 1 , M ) (5.4) \phi_{\mathrm{TS}}(x)=f_{\tilde{m}}(x),\tilde{m}\sim\mathrm{Unif}(1,M) \tag{5.4} ϕTS(x)=fm~(x),m~Unif(1,M)(5.4)

ϕ I T S ( x ) = f ~ x ( x ) , f ~ x ( x ) ∼ N ( f ^ , σ ^ 2 ) (5.5) \phi_{\mathrm{ITS}}(x)=\tilde{f}_x(x),\tilde{f}_x(x)\sim\mathcal{N}(\hat{f},\hat{\sigma}^2) \tag{5.5} ϕITS(x)=f~x(x),f~x(x)N(f^,σ^2)(5.5)

在这些获取函数定义中,如果 x x x为真,则 1 ( x ) = 1 \mathbb1(x) = 1 1(x)=1,否则为0,并且我们正在对模型的后验预测密度进行正态近似,我们在其中估计参数
f ^ = 1 M ∑ m = 1 M f m ( x ) , a n d σ ^ = ∑ m = 1 M ( f m ( x ) − f ^ ) 2 M − 1 . (5.6) \hat{f}=\frac{1}{M}\sum_{m=1}^M f_m(x),\mathrm{and}\hat{\sigma}=\sqrt{\frac{\sum_{m=1}^M(f_m(x)-\hat{f})^2}{M-1}}. \tag{5.6} f^=M1m=1Mfm(x),andσ^=M1m=1M(fm(x)f^)2 .(5.6)
在UCB采集函数实验中,我们设置权衡参数 β = 0.5 \beta = 0.5 β=0.5。我们在BO +神经预测器框架内测试了每个采集函数,使用突变进行采集优化和前一节中的最佳神经预测器-具有路径编码的前馈网络的集合。实验设置与前几节相同。参见图6.1(左)。我们看到,获取功能对性能的影响没有其他组件那么大,尽管它的整体表现最好。还需要注意的是,TS和ITS在运行并行实验时都具有优势,因为它们是随机采集函数,可以直接应用于批量BO设置[20]。

在这里插入图片描述

接下来,我们将测试不同的获取优化策略。在BO的每次迭代中,我们的目标是从最小获取函数的搜索空间中找到神经结构。评估搜索空间中每个神经结构的获取函数在计算上是不可行的。相反,我们创建一组100-1000个架构(可能以迭代的方式),并选择该集合中具有获取功能值的架构。

最简单的策略是绘制1000个随机架构。然而,生成一组与训练集中的体系结构编辑距离接近的体系结构是有益的,因为神经预测器更有可能对这些体系结构给出准确的预测。此外,突变、进化和局部搜索等局部优化方法已被证明对采集优化是有效的[2,21,68]。在“突变”中,我们通过随机改变一个操作或一条边,简单地以我们迄今为止发现的最佳验证精度对体系结构进行突变。在局部搜索中,我们迭代地取当前获取函数值最高的架构,并计算其邻域内所有架构的获取函数。

在进化中,我们通过改变具有最高获取函数值的架构并杀死具有最低获取函数值的架构来迭代地维持种群。我们在附录D中给出了这些方法的全部细节。实验设置与前几节相同。参见图6.1(中间)。我们看到突变的表现最好,这表明最好考虑编辑距离更接近已评估的体系结构集的体系结构。

BANANAS:基于NAS的神经结构的贝叶斯优化。使用前几节中的最佳组件,我们构建了完整的NAS算法BANANAS,该算法由使用路径编码、ITS和突变获取函数的前馈神经网络集合组成。参见算法1和图5.3。请注意,在前面的小节中,我们分别对每个组件进行了实验,同时保持所有其他组件不变。在附录D中,我们给出了进一步的分析,同时改变所有组件,以确保BANANAS确实是该框架的最佳实例。

在这里插入图片描述

在这里插入图片描述

对于神经预测器中的损失函数,我们使用平均绝对百分比误差(MAPE),因为它为具有较低验证损失的架构提供了更高的权重:
L ( y p r e d , y t r u e ) = 1 n ∑ i = 1 n ∣ y p r e d ( i ) − y L B y t r u e ( i ) − y L B − 1 ∣ (5.7) \mathcal{L}(y_{\mathrm{pred}},y_{\mathrm{true}})=\frac{1}{n}\sum_{i=1}^n\left|\frac{y_{\mathrm{pred}}^{(i)}-y_{\mathrm{LB}}}{y_{\mathrm{true}}^{(i)}-y_{\mathrm{LB}}}-1\right| \tag{5.7} L(ypred,ytrue)=n1i=1n ytrue(i)yLBypred(i)yLB1 (5.7)
其中 y p r e d ( i ) y^{(i)}_{pred} ypred(i) y t r u e ( i ) y^{(i)}_{true} ytrue(i)是体系结构i的验证误差的预测值和真值, y L B y_{LB} yLB是最小真实验证误差的全局下界。为了并行化算法1,在步骤iv中,我们简单地选择k个具有最小采集函数值的架构,并并行评估这些架构。

6 BANANAS Experiments

在本节中,我们将在三个搜索空间上将BANANAS与许多其他流行的NAS算法进行比较。为了提高可重复性,我们讨论了我们对NAS研究清单的遵守附录E的[33]。特别是,我们发布了我们的代码,我们使用了一个表格式的NAS数据集,我们对每个算法都进行了多次试验。

我们在前一节中描述的NASBench-101以及NASBench-201和DARTS搜索空间上运行实验。NASBench-201数据集[71]由15625个神经架构组成,在CIFAR-10、CIAR-100和ImageNet-16-120上预先计算了200个epoch的验证和测试精度。搜索空间由4个节点上的完整有向无环图组成,每条边可以进行5次不同的操作。DARTS搜索空间[35]的大小为1018。它由两个单元组成:一个卷积单元和一个还原单元。每个单元有四个节点,每个节点有两个传入边,这两个边执行8个操作中的一个。

NASBench搜索空间的性能。我们从各种范式将BANANAS与最流行的NAS算法进行比较:随机搜索[30]、正则化进化[44]、BOHB[11]、NASBOT[21]、local search[66]、TPE[4]、BOHAMIANN[53]、BONAS[48]、REINFORCE[67]、基于gp的BO[50]、AlphaX[62]、GCN Predictor[64]和DNGO[52]。我们尽可能直接使用来自开源存储库的代码,而不更改超参数(但有一些例外)。有关每个算法的描述和我们使用的实现细节,请参见附录D

实验设置与前一节相同。有关 NASBench-101 的结果,请参见图 6.1(右)。排名前三的算法依次是BANANAS、local search和BONAS。在附录D中,我们也证明了BANANAS在NASBench-201的三个数据集上取得了很强的性能。

DARTS搜索空间上的性能。我们在DARTS的搜索空间上测试BANANAS。由于DARTS搜索空间不是一个表格数据集,因此我们无法公平地将其与使用完全不同的训练和测试管道的其他方法进行比较[33]。我们使用一种常见的测试评估管道,该管道是带切割和辅助塔进行600次训练[35,30,70],其中CIF AR-10的最新状态约为2.6%。其他论文使用不同的测试评估设置(例如,训练更多的epoch)来实现更低的误差,但与其他算法相比,它们无法公平地进行比较。

在我们的实验中,BANANAS被赋予100次评估的预算。在每次评估中,所选择的架构被训练50个epoch,并记录最后5个epoch的平均验证误差。为了通过控制所有超参数设置和硬件来确保公平的比较,我们在之前的工作中重新训练了架构。在这种情况下,我们报告了为每种方法找到的最佳架构的五个随机种子的平均测试误差。我们将BANANAS与DARTS[35]、random search [35]、local search[66]和ASHA[30]进行了比较。见表1。

在这里插入图片描述

请注意,最近引入了一种新的DARTS搜索空间代理基准测试[49],称为NASBench-301,允许公平且计算可行的实验。最初的实验表明[49],BANANAS可以与其他九种流行的NAS算法竞争,包括DARTS[35]和DARTS的两种改进[69,8]。

7 Conclusion and Future Work

我们对BO +神经预测器框架进行了分析,该框架最近作为NAS的高性能框架出现。我们对每个主要组件测试了几种方法:编码、神经预测器、校准方法、采集函数和采集优化策略。我们还提出了一种新的基于路径的编码方案,提高了神经预测器的性能。我们使用所有这些分析来开发BANANAS,这是BO +神经预测器框架的一个实例,它在流行的NAS搜索空间上实现了最先进的性能。有趣的后续想法是开发BANANAS的多保真度或连续减半版本。将这些方法与BANANAS结合起来可以在不牺牲准确性的情况下显著减少运行时。

Appendix

A 相关工作仍在继续

贝叶斯优化。贝叶斯优化是函数查询开销较大时进行零阶优化的领先技术[43,13],在深度学习的超参数优化方面取得了巨大成功[43,14,31]。大多数贝叶斯优化文献关注欧几里得或分类输入域,并使用GP模型[43,14,13,50]。有并行贝叶斯优化的技术[15,20,41]。之前也有研究将神经网络模型用于贝叶斯优化的超参数优化[52,53]。这些论文的目标是提高基于高斯过程的贝叶斯优化的效率,从三次时间到线性时间,而不是为了提高BO在迭代次数方面的性能而开发一种不同类型的预测模型。在我们的工作中,我们提出了偏离基于高斯过程的贝叶斯优化的技术,并且在迭代次数方面看到了性能提升。

神经结构搜索。神经架构搜索至少从20世纪90年代就开始研究了[12,22,56],但该领域在2017年才重新焕发活力[79]。一些最流行的NAS技术包括进化算法[47,37]、强化学习[79,42,34,58,61]、贝叶斯优化[21,19,77]、梯度下降[35,32,29]、树搜索[62,61]和神经预测[48,64]。NAS的调查请参见[10]。最近的论文呼吁进行公平和可重复的实验[30,72]。基于这种思路,我们创建了NASBench-101[72]、-201[9]和-301[49]数据集,其中包含数万个预训练的神经架构。NAS的初始BO方法定义了体系结构之间的距离函数[21,19]。最近的一些论文使用贝叶斯优化与图神经网络作为预测器[36,48],然而,他们没有对框架的所有组件进行消损研究。在这项工作中,我们并没有声称发明了BO +神经预测器框架,但是,我们给出了我们所知道的最深入的分析,我们使用它来设计该框架的高性能实例。

预测神经网络的准确性。有几种方法可以预测神经网络的验证精度,例如使用LSTM算法对神经网络进行分层编码[6],以及使用分层编码和数据集特征来预测神经网络和数据集对的精度[18]。也有研究使用贝叶斯技术预测神经网络的学习曲线,用于超参数优化[23,7]或NAS[1]。这些方法都无法预测从基于细胞的DAG搜索空间(如NASBench或dart搜索空间)中提取的神经网络的准确性。最近的另一项工作在NAS中使用超网络进行神经网络预测[74]。最近预测神经网络精度的其他工作包括AlphaX[62],以及三篇使用GCN预测神经网络精度的论文[36,48,64]。神经网络的集成是一种流行的不确定性估计方法,在许多情况下,即使对于大小为5的集成,也比贝叶斯神经网络等所有其他方法更有效[28,3,5,51]。

后续的工作。自其发布以来,已有几篇论文独立表明,BANANAS是NAS的竞争算法[24,49,40,45,63]。例如,一篇论文表明,当给出3200次评估的预算时,BANANAS在NASBench-101上的表现优于其他算法[24],和一篇论文表明,BANANAS在NASBench-301上的性能优于许多流行的NAS算法[49]。最后,最近的一篇论文对NAS使用的几种编码进行了研究[65],结论是神经预测器在路径编码中表现良好,并且在第5节提出的理论结果的基础上进行了改进。

B 前期工作继续

我们给出了NAS算法的三个关键成分的背景信息。

搜索空间。在部署NAS算法之前,我们必须定义算法可以搜索的神经网络空间。也许NAS最常见的搜索空间类型是基于单元的搜索空间[79,42,35,30,46,72]。一个细胞由神经网络中相对较小的部分组成,通常由6-12个节点组成一个有向无环图(DAG)。然后,一个神经结构是通过重复地将一个或两个不同的细胞按顺序堆叠在一起,可能用专门的层分开来构建的。细胞和专门层的布局称为超架构,这是固定的,而NAS算法则搜索最佳细胞。单元格上的搜索空间由一定大小的所有可能的dag组成,其中每个节点可以是几种操作中的一种,例如1 × 1卷积、3 × 3卷积或3 × 3 最大池化。通常还会对总边数或每个节点的入度设置限制[72,35]。在这项工作中,我们专注于基于卷积细胞的搜索空间上的NAS,尽管我们的方法可以应用于更广泛的领域。

搜索策略。搜索策略是算法从搜索空间中寻找最优或接近最优神经结构的优化方法。有许多不同的搜索策略,如贝叶斯优化、进化搜索、强化学习和梯度下降。在第5节中,我们介绍了本文研究的搜索策略:带有神经预测器的贝叶斯优化。

评价方法。许多类型的NAS算法都由一个迭代框架组成,在这个迭代框架中,算法选择一个神经网络进行训练,计算其验证误差,并使用这个结果来指导下一次迭代中神经网络的选择。这种方法最简单的实例是以固定的方式训练每个神经网络,也就是说,该算法有一个黑盒访问函数,该函数训练神经网络x次,然后返回验证错误。通过在对黑箱函数进行一定次数的查询后返回具有最低验证错误的架构,可以比较具有黑箱评估方法的算法。还有多保真度方法,例如,当NAS算法除了选择架构外,还选择训练epoch的数量时。

C 路径编码理论

D 附加实验和细节

我们将图6.1(右)的结果放入一个表中(表2)。

在这里插入图片描述

在第6节中,我们描述了在DARTAS搜索空间上运行BANANAS的细节,这将产生一个体系结构。我们在图D.1中展示了这个体系结构。

在这里插入图片描述

我们使用与第5节相同的实验设置,并对每种算法运行500次试验。如图D.2。

在这里插入图片描述

NASBench-201的结果。

在这里插入图片描述

原文通过(1)在评估每个架构时随机选择一个验证误差,然后报告NAS算法结论时的均值检验误差进行实验。最现实的设置是:(2)在评估每个体系结构时选择一个随机的验证误差,然后报告相应的测试误差,其近似是(3)在搜索中使用平均验证误差,并在最后报告平均测试误差。我们在图6.1中使用(3),现在在图D.4中使用(1)。我们发现图D.4中的总体趋势是一样的(特别是,在40次迭代后,BANANAS仍然明显优于所有其他算法),但是基于贝叶斯优化的方法在一开始就表现得更好。

在这里插入图片描述

E NAS研究最佳实践清单

猜你喜欢

转载自blog.csdn.net/weixin_43790925/article/details/130687748
今日推荐