可微架构搜索的理解与鲁棒性
论文链接:https://arxiv.org/abs/1909.09656
项目链接:https://github.com/automl/RobustDARTS
OpenReview:https://openreview.net/forum?id=H1gDNyrKDS
ABSTRACT
可微架构搜索(DARTS)由于其简单和小的搜索成本而引起了人们的广泛关注,该搜索成本是通过连续松弛和近似产生的双层优化问题来实现的。然而,对于新问题,DARTS并不能健壮地工作:我们确定了一个广泛的搜索空间,其中DARTS产生了退化的架构,测试性能非常差。我们研究了这种失效模式,并表明,虽然成功地最小化了验证损失,但当它们与架构空间中的高验证损失曲率相吻合时,所找到的解泛化性很差。我们证明了通过添加各种类型的正则化中的一种,我们可以鲁棒化DARTS以找到曲率更小和泛化性能更好的解。基于这些观察,我们提出了几种简单的DARTS变体,它们在实践中表现得更加稳健。我们的观察结果在三个图像分类任务的五个搜索空间中是鲁棒的,并且也适用于视差估计(密集回归任务)和语言建模的非常不同的领域。
1 INTRODUCTION
网络架构搜索(NAS)是自动设计神经网络架构的过程,最近由于在各种任务上实现最先进的性能而引起了人们的关注(Zoph & Le, 2017;Real et al, 2019)。可微架构搜索(DARTS) (Liu et al ., 2019)显著提高了NAS的效率,将其成本降低到与训练单个神经网络相同的数量级。这大大扩展了NAS的范围,使其也可以应用于更昂贵的问题,如语义分割(Chenxi等人,2019)或视差估计(Saikia等人,2019)。
然而,一些研究人员也报告了DARTS的工作效果不佳,在某些情况下甚至不如随机搜索(Li & Talwalkar, 2019;Sciuto et al, 2019)。为什么会这样?如何解释这些看似矛盾的结果呢?本文的总体目标是理解和克服DARTS的这种失效模式。为此,我们作出以下贡献:
-
我们基于四个搜索空间确定了12个NAS基准,其中标准DARTS产生了退化的架构,在多个数据集上的测试性能很差(第3节)。
-
通过计算验证损失相对于架构参数的Hessian特征谱,我们表明其主导特征值与架构的泛化误差之间存在很强的相关性。基于这一发现,我们提出了一种简单的带有早停机制的DARTS变体,其性能更加稳健(第4节)。
-
我们表明,与之前关于尖锐/平坦局部最小值的工作相关,更强地正则化DARTS的内部目标使其能够找到具有更小的Hessian谱和更好的泛化性质的解。基于这些见解,我们提出了两种实用的DARTS鲁棒性方法,克服了我们所有12个NAS基准测试中的失效模式(第5节)。
我们的研究结果在基于图像识别的广泛的NAS基准中是稳健的,并且也适用于语言建模(PTB)和视差估计的非常不同的领域。他们巩固文献中各种结果的发现,并导致更强大的DARTS版本。我们提供实现和脚本以促进再现性。
2 BACKGROUND AND RELATED WORK
2.1 平/锐极小值与泛化性能的关系
Hochreiter & Schmidhuber(1997)已经观察到训练损失的平坦最小值比锐最小值产生更好的泛化性能。近期工作(Keskar et al, 2016;Yao等人,2018)更多地关注大/小批量训练的设置,其中观察表明,小批量训练倾向于更平坦的最小值,并且泛化得更好。同样,Nguyen等人(2018)观察到这种现象在超参数空间中也表现出来。他们表明,每当超参数过拟合验证数据时,最小值位于空间的更清晰区域。这促使我们在4.1节后面的可微架构搜索的背景下进行类似的分析,我们在神经网络架构的空间中看到了同样的效果。
2.2 双层优化
我们首先简要介绍了双层优化问题(Colson et al, 2007)。这些问题包含两个相互嵌套的优化任务。
定义2.1。给定外部目标函数 F : R P × R N → R F:\mathbb{R}^P\times\mathbb{R}^N\to\mathbb{R} F:RP×RN→R和内目标函数 f : R P × R N → R f:\mathbb{R}^P\times\mathbb{R}^N\to\mathbb{R} f:RP×RN→R中,双层优化问题由:
min y ∈ R P F ( y , θ ∗ ( y ) ) s . t . θ ∗ ( y ) ∈ arg min θ ∈ R N f ( y , θ ) , \begin{align} &\min_{y\in\mathbb{R}^P}F(y,\theta^*(y)) \tag{1}\\ &s.t.\quad\theta^*(y)\in\underset{\theta\in\mathbb{R}^N}{\operatorname*{\arg\min}}f(y,\theta),\tag{2} \end{align} y∈RPminF(y,θ∗(y))s.t.θ∗(y)∈θ∈RNargminf(y,θ),(1)(2)
其中 y ∈ R P y \in \mathbb{R}^{P} y∈RP和 θ ∈ R N θ \in \mathbb{R}^N θ∈RN分别是外部变量和内部变量。人们也可以将双层问题视为约束优化问题,将内部问题视为约束。
一般情况下,即使内目标(2)是强凸且有唯一的最小值 θ ∗ ( y ) = arg min θ ∈ R N f ( y , θ ) \theta^{*}(y)=\arg\min_{\theta\in\mathbb{R}^{N}}f(y,\theta) θ∗(y)=argminθ∈RNf(y,θ),则不可能直接优化外部目标公式(1)。围绕该问题的一种可能方法是使用隐函数定理来检索解映射(或响应映射)的导数 θ ∗ ( y ) ∈ F ⊆ R N w.r.t. y \theta^*(y)\in\mathbb{F}\subseteq\mathbb{R}^N\text{ w.r.t. }y θ∗(y)∈F⊆RN w.r.t. y (Bengio, 2000;Pedregosa, 2016;Beirami et al, 2017)。另一种策略是用动力系统近似内部问题(Domke, 2012;Maclaurin et al, 2015;Franceschi等,2017;2018),其中优化动力学可以,例如,描述梯度下降。在内部问题的极小值是唯一的情况下,在某些条件下,该近似问题的极小值集确实收敛于双层问题的极小值集(1)(见Franceschi et al(2018))。
2.3 网络结构搜索
网络架构搜索(Neural Architecture Search, NAS)是指自动设计神经网络结构的过程,以克服人工设计架构时繁琐的试错过程。我们在这里简要回顾一下NAS,并参考Elsken等人(2019b)最近的调以获得更全面的概述。之前的工作主要采用强化学习技术(Baker等人,2017a;Zoph & Le, 2017;钟等,2018;Zoph等人,2018)或进化算法(Stanley & Miikkulainen, 2002;刘等,2018b;Miikkulainen等,2017;Real等人,2017;2019)优化离散架构空间。由于这些方法通常非常昂贵,因此各种工作都侧重于通过使用网络形态来降低搜索成本(Cai et al ., 2018a;b;Elsken et al, 2017;2019a),搜索模型内的权值共享(Saxena & Verbeek, 2016;Bender等人,2018;Pham等人,2018)或多保真度优化(Baker等人,2017b;Falkner et al, 2018;Li et al ., 2017;Zela等人,2018),但它们的适用性仍然往往局限于相当简单的任务和小数据集。
2.4 可微架构搜索(DARTS)
最近的一项工作侧重于将离散神经架构搜索问题放宽为可以通过梯度下降解决的连续问题(Liu et al ., 2019;谢等,2019;Casale等人,2019;Cai et al, 2019)。在DARTS (Liu et al, 2019)中,这是通过简单地使用每层可能候选操作的加权和来实现的,而实值权重则有效地参数化了网络的架构。我们现在将更详细地审查DARTS,因为我们的工作直接建立在它的基础上。
搜索空间的不断松弛。与之前的工作一致(Zoph等人,2018;Real等人,2019),DARTS仅优化称为单元的子结构,这些子结构堆叠以定义完整的网络架构。每个单元包含N个节点,组织成一个有向无环图。该图包含两个输入节点(由前两个单元格的输出给出)、一组中间节点和一个输出节点(通过连接所有中间节点给出)。每个中间节点 x ( j ) x ^{(j)} x(j)表示一个特征映射。图1展示了这样一个单元。Liu等人(2019)不是在架构搜索期间将单个操作应用于特定节点,而是通过将中间节点作为候选操作的混合物计算,并将其应用于前一个节点 x ( i ) x^{(i)} x(i),从而放宽了选择操作的决定, i < j , x ( j ) = ∑ i < j ∑ o ∈ O exp ( α o i , j ) ∑ o ′ ∈ O exp ( α o ′ i , j ) o ( x ( i ) ) i<j,x^{(j)}=\sum_{i<j}\sum_{o\in\mathcal{O}}\frac{\exp(\alpha_{o}^{i,j})}{\sum_{o^{\prime}\in\mathcal{O}}\exp(\alpha_{o^{\prime}}^{i,j})}o\left(x^{(i)}\right) i<j,x(j)=∑i<j∑o∈O∑o′∈Oexp(αo′i,j)exp(αoi,j)o(x(i)),其中 O \mathcal{O} O表示所有候选操作(如3 × 3卷积、跳跃连接、3 × 3最大池化等)的集合, α = ( α o i , j ) i , j , o \alpha=(\alpha_{o}^{i,j})_{i,j,o} α=(αoi,j)i,j,o作为架构的实值参数化。
基于梯度的搜索空间优化。然后,DARTS通过交替梯度下降优化搜索网络的权重(通常称为权重共享或one-hot模型,因为所有单个子图/架构的权重都是共享的)和架构参数。在训练集和验证集上分别对网络权值和结构参数进行优化。这可以解释为求解双级优化公式(1)、(2),其中F和F分别为验证和训练损失 L v a l i \mathcal{L}_{vali} Lvali和 L t r a i n L_{train} Ltrain, y y y和 θ θ θ分别为架构参数 α α α和网络权值 w w w。注意,DARTS仅通过单个梯度步骤近似低级解(参见附录A了解更多细节)。
在搜索阶段结束时,通过为每个中间节点选择k个最重要的传入操作来获得离散单元,而所有其他操作都被修剪。重要性是通过操作加权系数 exp ( α o i , j ) ∑ o ′ ∈ O exp ( α