2021-09-03

iDARTS Improving DARTS by Node Normalization and Decorrelation Discretization

通过节点归一化和去相关离散化改进dart

在这里插入图片描述

摘要

可微架构搜索(DARTS)使用了网络表示的连续放松,并在gpu天内极大地加速了神经架构搜索(NAS)近数千倍。然而,DARTS的搜索过程不稳定,当训练周期变大时,搜索速度严重下降,限制了它的应用。在本文中,我们认为这种退化问题是由不同节点之间的规范不平衡和各种操作的高度相关输出造成的。然后我们提出了dart的改进版本,即iDARTS,来处理这两个问题。在训练阶段,引入节点归一化以保持规范平衡。在离散化阶段,基于节点输出与非相关操作之间的相似性而不是体系结构参数的值来近似连续体系结构。在CIFAR-10和ImageNet上进行了广泛的评估,在0.2和1.9 gpu天内,建筑搜索的错误率分别为2.25%和24.7%,显示了其有效性。额外的分析还显示,与其他基于dart的同类产品相比,iDARTS在稳健性和泛化方面具有优势。

一:介绍

尽管神经网络在很多领域都取得了巨大的成功,但是神经结构的设计仍然是一项繁琐的工作,需要丰富的经验和人类专家的反复调整。为了实现神经结构搜索(NAS)过程的自动化,人们做了很多努力。一些研究[1]-[4]将其表述为强化学习(RL)问题。智能体基于特定的搜索空间构建神经结构,并根据相应的准确率估计其奖励。[5] -[11]方法采用进化算法(Evolutionary Algorithms, EA),通过不同种群的变异和重组来寻找有效解,形成体系结构。还有一些尝试探索基于顺序模型优化(SMBO)[12]、[13]、贝叶斯优化[14]和蒙特卡罗树搜索(MCTS)[15]的改进。这些方法提供了比手工制作的更好的模型;然而,它们需要大量的计算成本。

近年来,对快速NAS的[16]-[19]方法进行了研究,该方法在搜索过程中训练单个神经网络,并推导出最终结构作为具体优化任务的解。差分体系结构搜索(DARTS)[20]是一个特别流行的实例,它通过在梯度下降过程中引入体系结构参数,使搜索空间变得连续。DARTS主要有两个阶段:(1)在训练阶段,它同时优化体系结构参数和模型权值;(2)在离散化阶段,它根据体系结构参数的值逼近神经结构。得益于离散搜索空间上的松弛,dart报告以更高的速度具有可比较的性能。不幸的是,它遭受了严重的退化,即。,当搜索时代的数量变大或搜索空间变[21]时,skip-connect操作倾向于主导最终架构。如图1所示,DARTS在原始搜索空间的前50个epoch处找到了一个良好的架构,但当epoch数达到200或在不同的搜索空间时,会收敛到一个较差的架构(只有链接),并且误差会急剧增加

为了解决上述问题,[22]、[23]采用了提早停止,在降级发生前终止搜索。[24]用梯度下降法修正了结构参数更新的近似。[25]基于一组预定义的规则手动干预体系结构。这种策略确实在一定程度上缓解了降级问题,但它们也因明显的缺陷而受到批评。早期停止和人工干预会带来更多的超参数,而如何获得合适的参数仍然是一个悬而未决的问题,这使得它们不容易推广到其他场景(例如不同的搜索空间或任务)。此外,由于二阶梯度的估计,近似修正会带来较高的计算成本和意外的模型失稳,阻碍了其进一步应用。

在本文中,我们认为dart的退化是由训练和离散机制引起的。对于前者,不同节点的规范通常不具有相同的规模,这种不平衡倾向于突出与输入相连的节点的重要性。因此,dart构建了更多的连接,并收敛到一个浅层架构。对于后者,由于辅助的一次性模型中的连接是高度冗余的,这些操作的输出通常是相关的。在这种情况下,很可能选择生成冗余特性映射但具有更大架构参数的操作。此外,一些比卷积的参数更少的运算,例如。在梯度向后进程[25]中,跳过连接和池易于获得更大的体系结构权重。这两个事实导致了充满跳接的浅层架构

然后,我们提出了DARTS的改进版本,即iDARTS,是通过引入节点规范化来维持训练中不同节点规范之间的平衡,并根据单元输出与去相关操作之间的相似性而不是体系参数的值来离散连续体系结构。我们在CIFAR10和ImageNet上对两个流行的基准进行了广泛的评估,在搜索时间分别为0.2和1.9 gpu天的情况下,测试误差分别达到了2.25%和24.7%的竞争性排名第一。此外,我们还展示了与主要基于dart的对手相比,iDARTS在各种搜索空间和大训练时期的鲁棒性和泛化方面的优势。本文的其余部分组织如下。第二部分介绍了与NAS相关的方法,特别是基于dart的方法。在第三部分中,我们讨论了原dart的局限性,并给出了解决方案。第四部分对实验结果进行了描述和分析。最后,我们在第五部分对本文进行了总结。

二:最近工作

在本节中,我们简要回顾文献中主要的NAS方法。基于RL的方法将网络体系结构表示为变长字符串或直接无环图。然后,NAS被认为是一个顺序决策的过程,其中一个代理学习如何设计神经结构。采用各种代理策略和奖励功能来实现性能增益。NAS-RL[2]试图建立一个基于rnn的控制器的模型,它的预测被认为是用来构建神经结构的动作。NASNet[4]采用了代理数据集和精心设计的搜索空间,以降低计算成本。mettaqnn[1]和Block-QNN[3]均采用Q-learning范式,采用贪心探索策略,Block-QNN[3]采用块方向构建网络。ENAS[26]提出了候选体系结构之间的参数共享策略,以加速搜索过程。

在这里插入图片描述

图1:dart中退化问题的演示。(a)为设置历元数为50时,DARTS在原始搜索空间中选择的体系结构;(b)和©分别是在小搜索空间中通过一阶(dart -1)和二阶(dart -2)梯度估计选择的;(d)为纪元数设为200时的结果。

另一方面,一些研究尝试基于EA构建神经网络,尽量避免人为干预。大规模进化[5]基于最简单的网络结构初始化一个大种群,并设计繁殖、变异、选择等操作以获得最佳结构。GeNet[6]将网络架构编码为固定长度的二进制字符串,而不是基于图的形式。在迭代过程中,对这些二进制串进行改进的进化操作,生成新的个体,其中竞争最激烈的个体作为最终结果。层次- eas[8]提出了一种模仿人类设计过程的层次遗传表示。采用可分离卷积来降低空间分辨率,保持正规单元和约简单元之间的结构一致性。AmoebaNet[11]在EA中引入了一个年龄属性,以支持更年轻的架构,并简化NASNet搜索空间中的突变,以更低的计算成本达到与基于rl的方法相当的性能。

在这个问题上还利用了其他优化技术。PNAS[13]基于SMBO算法逐步搜索复杂块结构,DPP-Net[12]在目标函数中考虑服务质量(QoS)和硬件需求。NASBOT[14]通过最优传输开发了距离度量,并采用基于高斯过程的贝叶斯优化(BO)进行建筑搜索。DeepArchitect[15]设计了一个树状结构的搜索空间,并通过MCTS遍历它。尽管结果很有希望,但此类解决方案的计算成本相当高(例如,在CIFAR-10上学习一个分类模型需要数千个gpu天)。近年来,一键式搜索方法受到越来越多的关注,其目的是减少计算量,加快搜索速度。SNAS[17]、DSNAS[27]和pvlr - nas[28]在同一轮反向传播中应用重参数化技巧训练神经操作和结构分布。SMASH[16]引入HyperNet[29]为候选架构生成权重,而不是从头开始训练它们,从而达到更快的评估速度。DAS[18]开始将离散神经网络架构放松为连续可微的形式,寻找卷积层的最佳超参数以及权值。MaskConnect[19]探索了通过改进的梯度下降法直接优化模块连接性的可能性。

DARTS[20]通过结合连续可微的结构参数和灵活的连接,大大降低了搜索成本。它引入了具体的结构参数来表示块内的密集连接,从而可以同时优化结构参数和模型权重。在DARTS的梯度基础范式下,许多研究推动了它,以更好地适应更多的实际情况。PDARTS[25]逐步缩小搜索空间和目标空间之间的差距。PC-DARTS[30]通过对超网的一小部分采样来减少冗余,提高了搜索效率。GDAS[31]提出了一个可微的体系结构采样器,在训练时在直接无环图中生成子图,在迭代中只对采样的子图进行优化,从而减少了搜索成本。Gold-NAS[32]和Proxyless-NAS[33]考虑了资源约束,以便在计算成本和模型精度之间实现更好的平衡。

尽管这些方法在优化dart方面取得了很大的进展,但一个严重的问题仍然没有解决。当搜索周期变大或搜索空间发生变化时,DARTS会出现模型不稳定的退化问题,容易收敛到一个充满skipconnectoperations的浅层架构。[21]、[22]决定根据特征值或体系结构的组成提前终止搜索。P-DARTS[25]和modified - darts[24]根据预定义的规则干预梯度或架构。然而,退化问题只是得到了缓解,而不是消除,留下了很大的改进空间。

在本文中,我们声称退化问题来自训练和离散化阶段,而提出的iDARTS通过节点归一化和去相关离散化分别处理它。多亏了这两种策略,我们显著改善了dart的准确性和稳健性。

三:方法

A:基础

在dart中,架构搜索是在一个超级网络上执行的。如图2(a)所示,超网由一组预定义数量的层组成。每一层都有一个用于特征编码的普通单元或用于特征降采样的约简单元。在一个单元格中有几个节点,代表中间层结果。如图2(b)所示,所有节点紧密连接。每个单元格输出节点的连接。每对节点之间的边是搜索空间中一组候选神经算子的混合,即跳过连接、池或卷积。对于所有可能的操作,节点对(i, j)之间的边的输出都作为softmax处理,可以写成:

在这里插入图片描述

其中o表示操作集O中的操作, α o ( i , j ) α^{(i,j)}_o αo(i,j)表示操作o对应的节点对(i,j)的体系结构参数。节点j的输出是它所有连接边的汇总,如下所示:

在这里插入图片描述

采用双层优化方法对体系结构参数α和模型权值w进行同时优化。当搜索过程结束时,丢弃w,根据α离散化体系结构。该过程是基于 α o ( i , j ) α^{(i,j)}_o αo(i,j)值越大的算子对混合输出越重要的假设进行的。DARTS保留每条边(i, j)的结构参数最大值的算子。这种策略在基于DARTS的方法中被广泛采用。

B:darts的问题

我们认为dart在其训练和离散化中分别存在两个主要问题,从而引发了退化问题。在前一阶段,DARTS直接对体系结构参数进行优化,没有考虑不同节点规范之间的平衡,导致参数更新错误。在后期阶段,DARTS忽略了候选操作之间的相关性,仅根据不稳定的体系结构参数来近似连续体系结构,从而无法得到理想的体系结构。

不平衡的标准。给定边(i,j)上的混合运算 o ‾ ( i , j ) ( x ) \overline{o}^{(i,j)}(x) o(i,j)(x),运算集{o|o∈O}以及对应的结构参数 α o ( i , j ) α^{(i,j)}_o αo(i,j) α o ( i , j ) α^{(i,j)}_o αo(i,j)在一阶项上的更新过程可以写成:

在这里插入图片描述

式中 S o S_o So为softmax函数后操作o(x)的权重。在这种形式中,我们可以发现当o(x)趋近于0时,其对应的体系结构参数的梯度具有更高的波动性。当o(x)接近 o ‾ ( i , j ) ( x ) \overline{o}^{(i,j)}(x) o(i,j)(x)时,对应的更新值接近0,使得 α o ( i , j ) α^{(i,j)}_o αo(i,j)更难调整。

在这里插入图片描述

图2:DARTS可视化:(a)由多个正常细胞和约化细胞堆叠的超网,每个细胞的输入来自前两层;(b)正常细胞内密集的连接。

dart试图通过添加静态批处理规范化来确定训练阶段的操作规范,即无可学习仿射参数的批归一化。然而,跳过连接操作被忽略。对于形状为(B, C, W, H)的任意输入x,不包括跳过连接的操作输出的范数是一个常数C,等于 ( B × C × W × H ) \sqrt{(B×C×W×H)} (B×C×W×H) ,因此静态批处理归一化将输出缩放到一个具有零均值和单位方差的分布。同时,skip- connections返回这个任意输入的原始规范。如图3 (b)所示,在dart的搜索过程中,不同边的输入范数通常不在同一个尺度上,这种不平衡随着迭代次数的增加而进一步加剧,使得每个节点输出的范数趋近于0。在这种情况下,中间层节点失效,链接到输入的节点高亮显示。因此,我们选择了更多的连接,并建立了一个浅层架构。

相关操作。在离散化过程中,DARTS寻找一些合成井逼近超净产量的操作。回想一下,静态批处理规范化(表示为f)在超级网络中被普遍使用。每个基于卷积的操作之后是一个静态批处理规范化。它们输出的规范是一个常量,只取决于特征图大小、批大小和特征通道。在静态批处理归一化为 z = f ( o ‾ ) z=f(\overline{o}) z=f(o)之后,我们将混合运算符 o ‾ \overline{o} o表示为输出z。这里,我们以单操作选择为例。

当体系结构被离散化时,所选择的操作 o i o_i oi和边输出 z ′ z^{'} z量表示为 z ′ = f ( o i ) z^{'}=f(o_i) z=f(oi)。原始输出z和近似输出 z ′ z^{'} z之间的距离公式为:

在这里插入图片描述

其中 θ i θ_i θi为z与 z ′ z^{'} z之间的矢量角。在离散化中,我们需要最小化超级网络z和近似的一个 z ′ z^{'} z之间的间隙

然后我们表示¯oasˆo=¯o σ¯owhere σ¯ois¯o的方差。它也是一个零均值和单位方差的分布。ˆo和¯o之间只有常数倍的差,由于批处理归一化的性质,我们有z=f(¯o) =f(ˆo) =ˆoand z0=f(oi) =oi。因此θ可以写成
在这里插入图片描述

式中<·>为内积,θ(i,j)为enoidoj之间的矢量角。注意,如果训练结束,σ¯ois是一个常数。如果操作之间存在相关性(cos(i,j)是非零值),则θiis与α iii不一致。当所选运算与混合运算相似度增大时,离散化前后的输出差异减小。

在这里插入图片描述

由于辅助一次性模型中的连接是高度冗余的,因此操作输出确实是相关的,如图3©所示。它增加了选择产生冗余特性图但体系结构参数值较大的操作的风险。此外,如前面的研究[25]所述,一些操作。跳过连接池易于在梯度向后过程中获得更大的架构值,因为它们的参数比卷积更少。因此,DARTS通常提供全跳接的浅层架构。

C: 解决方案

根据以上分析,我们分别针对训练和离散化中规范不平衡和输出相关的问题提出了两种有效的解决方案。节点归一化。如第三- b节所述,我们知道DARTS中存在不平衡的规范,导致架构参数的不稳定更新。由于除跳过连接外的操作符输出的规范是一个常量C,我们可以引入额外的跳过连接规范化,以确保操作符之间的规范一致性。

在这里插入图片描述

图3:DARTS细胞内节点不平衡及操作相关性可视化:(a)单个细胞内密集连接;(b)训练中节点的范数曲线(用Nodeck−2的范数归一化);©离散化前node3各操作之间的关联矩阵。

在这里插入图片描述

如图4所示,我们可以在skip-connect上应用预归一化或后归一化。后归一化是一种直观的解决方案,它直接添加静态批处理归一化在每一个skip-connect操作之后。对于输入x,它的输出被标准化为 x ^ \hat{x} x^,带有常量norm(范数)C。但是,它打破了在同一边界上的跨接输出和其他操作的输入之间的一致性,违背了跨接块的设计。

在这里插入图片描述

图4:不平衡规范的候选解决方案的可视化。(a)和(b)是跳过连接操作的预归一化和后归一化。灰色块表示每个单元格的原始输入,橙色块表示额外的标准化,蓝色块表示dart中的操作,红色块表示标准化结果。

另一种选择是预规范化。当总结完成并在每个节点中达到xis时,我们添加一个静态批处理正常化tox。在此之后,后续节点接受规范化的 x ^ \hat{x} x^作为输入,这些操作的输出(包括跳过连接)被限制在相同的规模,没有额外的计算负担。最后,我们在实践中采用预归一化作为节点归一化策略。显著提高了参数更新过程的稳定性

解相关离散化。如第iii - b节所述,我们澄清了操作符之间存在相关性。在这种情况下,α的价值并不能充分反映其重要性。因此,在进行体系结构离散化时,需要考虑各操作符之间的相关性。回想一下,我们的目标是保留其合成最类似于超网原始输出的操作

为此,一种直观的解决方法是利用Gram-Schmidt过程将算子的输出投影到一个正交集上,而算子的重要性由这些正交偏差上的投影权值决定。但由于在同一操作空间中存在多个正交偏差集,因此不具有确定性。另一种方法是找出哪一组算子能最大程度地合成超网的输出

然而,要测试带有M候选运算符的边有 C M K C_M^K CMK集合,要遍历所有可能的组合是负担不起的。

相反,我们提出了一种新的离散策略来逼近最优组合我们直接搜索在合成输出 y ( j ) y^{(j)} y(j)上投影长度最大的算子 o ( i , j ) o^{(i,j)} o(i,j),然后从 y ( j ) y^{(j)} y(j)中去掉它的投影分量。在这种情况下,余数 y ^ ( j ) \hat{y}^{(j)} y^(j)正交于所选操作 o ( i , j ) o^{(i,j)} o(i,j)。标准化步骤如下图所示:

在这里插入图片描述

由于每个单元的输出连接了所有节点,这种密集的连接也导致了单元输出的冗余。我们在节点级和细胞级都进行去相关步骤首先,我们递归地选择与节点输出相似度最高的操作,并将其与节点输出去关联,直到满足每个节点的前体个数。然后,我们将每个选择的操作与所有节点的输出去关联,而不是它所属的单个节点。离散化的细节在算法1中说明。借助于去相关离散化,适当的算子可以最大程度地综合超网络。

四:实验

A:数据集和设置

我们在CIFAR-10[34]和ImageNet[35]上进行了广泛的实验。CIFAR-10有60K张分辨率为at32×32的图像,平均分布在10个级别上。我们采用标准分割,其中50K图像用于训练,其余用于测试。ImageNet包含大约1300万张属于1000个类的图像,其中1.2万张用于训练,50K张用于验证。我们按照一般设置将所有图像的大小调整为224×224以进行训练和测试。我们使用与dart相同的搜索空间(表示为asS1),即。8个不同的候选操作,包括3×3和5×5可分离卷积,3×3和5×5扩展可分离卷积,3×3最大池化,3×3平均池化,身份,和零。在CIFAR-10上进行搜索时,我们使用与dart相同的一次性模型,训练8个细胞和16个初始通道。我们采用SGD进行优化,初始学习率为0.025,余弦退火为0.001。动量为0.9,重量衰减为3×10−4。epoch编号设置为50,批处理大小设置为64。在[30]之后,我们冻结了前15个时代的建筑参数。我们从训练集中随机选择5000张图像进行离散化。

为了直接在ImageNet上搜索,我们在前人[22],[30]的基础上,将输入图像的分辨率从224×224降低到28×28,采用了三个叠置的卷积层,stride为2。与CIFAR-10一样,一次性模型也由8个细胞和16个初始通道组成。我们从训练集中选择5%的数据来更新模型权重,另外选择5%来更新体系结构参数。为进一步收敛,纪元数设为60。批次大小设置为128培训和验证。采用SGD进行优化,初始学习率为0.2。我们冻结了前35个时代的建筑参数。对于架构参数,权重衰减设置为0.001,学习率设置为0.006。从训练集中随机抽取10,000张图像进行离散化。

对于这两个数据集,一次性模型的权重和体系结构参数都会交替更新。我们根据所提出的离散化策略来确定最终的结构。搜索过程在CIFAR-10上耗时0.2个gpu,在ImageNet上耗时1.9个gpu,使用单个Nvidia Tesla V100。在CIFAR-10和ImageNet上实现的架构如图5所示。对于CIFAR-10的训练,我们使用的是由20个细胞和36个初始通道组成的网络。我们采用两种培训方案进行综合比较。第一个协议和飞镖一样。训练持续600个纪元,超参数与dart相同。第二个协议遵循DARTS+[22],其中为更好的收敛,训练纪元的数量设置为2000,权值衰减设置为5×10−4。在[20],[22]-[25]中,我们还进行了数据增强,包括切割、路径丢失和辅助塔。单台Nvidia Tesla V100的训练时间为600个epoch 0.9天,2000个epoch 3天。

在ImageNet上进行训练时,我们考虑移动设置,其中输入图像大小is224×224and的乘法运算次数小于600M。我们遵循dart,将细胞数量设置为14个,初始通道为48个。模型训练了250个纪元,批大小为1024。我们也以SGD作为优化器,初始学习率为0.4(余弦退火为0),动量为0.9,权重衰减at3×10−5。我们利用了学习率预热、标签平滑和辅助损失塔,如[20],[22]-[25]。培训阶段持续3.8天,使用3个Nvidia Tesla V100 gpu。

B. CIF AR-10的结果

比较先进的。我们考虑了一些最先进的方法进行比较,包括基于dart的方法和经典的手工架构。为了减少初始化和优化过程中的随机性,我们将训练过程重复4次。最好的,4个运行的平均值和方差报告作为最近的研究做。搜索成本也被报道为大多数基于dart的方法[20],[22]-[25],[30],[36],表示一次性模型的训练过程。

从TableI可以看出,iDARTS提供了非常有竞争力的精度,600个epoch的top-1误差为2.45%,2000个epoch的top-1误差为2.38%,该模型构建于0.2 gpu天内用于建筑搜索。我们注意到,DARTS(一阶)和iDARTS采用相同的双层优化算法,但由于节点归一化和去相关离散化,在不引入任何超参数或修改梯度下降方向的情况下,iDARTS将DARTS的top-1误差从3.00%显著降低至2.45%。iDARTS优于除[33]和[22]之外的所有对等对象。需要注意的是,Proxyless-NAS[33]使用了更多的参数,并消耗了更高的计算成本(4个gpu /天)。虽然DARTS+[22]达到了与iDARTS相当的性能,但它的提前止损标准需要经验来决定,这并不总是有保证的,特别适用于不同的搜索空间。同时,DARTS+PT[36]和iDARTS都修正了基于值的离散化策略。iDARTS采用了更有效的离散化和额外的规范约束,该解决方案以更低的搜索成本获得了更高的性能。

在这里插入图片描述

在这里插入图片描述

烧蚀研究。我们研究了节点归一化和去相关离散化方案对CIFAR-10的影响。我们以dart -1st作为其效率的基准。我们重新实现DARTS,并在同一运行中通过基于价值的策略和去关联离散化对体系结构进行离散化,以进行公平比较。为了更好的收敛,训练时间延长到2000年。结果见表2。

如表ii所示,当仅采用去相关离散化时,DARTS的误差大大降低至2.57±0.05%,突出了其有效性。然后在构建iDARTS时加入节点归一化,优化结果为2.38±0.10%,证明了其必要性。值得注意的是,在DARTS中只使用节点正规化并没有多大意义(误差为2.90±0.10%),因为如果不能正确逼近连续的结构,我们就无法交付一个声音架构。综上所述,节点归一化和去相关离散化从不同方面对dart进行了改进,且两者的结合达到了最佳性能。此外,节点8归一化只是对每个单元进行静态批处理归一化,去相关离散化仅在上一个epoch应用一次。单辆特斯拉V100一天的总搜索成本仍为0.2 gpu。

评价泛化。为了评估iDARTS的泛化能力,在另外两种设置下进行了额外的实验。另外还考虑了两个搜索空间。一个是S2,包含None,最大池3×3,平均池3×3,跳过连接和sep卷积3×3。s3较小,只包含3×3可分离卷积、恒等、零三个运算。我们在所有的搜索空间中搜索完整的模型。学习到的体系结构如图6所示。我们将dart、dart +和pc - dart作为对应物进行比较。

其中zero就是None操作

表II: CIFAR-10数据集的消融研究(NN:节点归一化,DD:去相关离散化)。

在这里插入图片描述

我们使用dart和pcdart的官方实现。DARTS+没有发布代码,我们在官方DARTS实现中应用了两种早停策略,根据论文生成架构。其中,当存在2skip-connectoperations (R1)以上或体系结构稳定超过10 epoch (R2)时,DARTS+的搜索过程终止。在搜索和再训练部分,所有超参数都严格按照原始设置进行设置,以便公平比较。我们还在CIFAR-10的原始搜索空间中重新实现了DARTS+,结果分别为2.54±0.01%和2.40±0.02%,包含2000个纪元,与原论文中报道的结果(2.50±0.01%和2.37±0.13%)具有可比性。所有的架构都像dart中那样,用600个epoch而不是2000个epoch来重新训练。结果见表iii。

由表iii可以看出,iDARTS在所有空间上的性能是最稳定的,由于节点归一化和去相关离散化,iDARTS具有很强的泛化能力。另一方面,值得注意的是DARTS+中的早停策略并没有很好地推广到toS2andS3中,因为当搜索空间发生变化时,需要仔细调整标准。pcdart在s1ands3上达到了类似的结果,但在s2上失败了。大多数作业者ins2都是高度相关的,pc - dart中的部分连接容易受到这种相关性的干扰,从而导致性能下降。

验证的鲁棒性。为了验证iDARTS的鲁棒性,我们将DARTS(一阶)作为对应对象,因为它们共享相同的优化过程。回想一下,他们的主要区别在于训练和离散化。在训练中,iDARTS使用节点规范化来保持不同节点规范之间的平衡,在离散化中,它基于操作和输出之间的相似性而不是体系结构参数的值来近似体系结构。

我们将搜索时代的数量扩展到200个,并在搜索过程中对离散的体系结构进行重新训练。iDARTS近似的体系结构如图9所示。图7显示了结构参数中的平均零比和精度。由图7可知,超过14条边的零操作的平均权值在200个纪元时增加到异常值0.98。这一现象也出现在[24]中。当epoch变大时,再训练的准确性会持续下降。

采用节点归一化时,零操作的平均权值在历元上略有增加,在0.18处停止,这是一个更加合理的值。此外,得益于去相关离散化,iDARTS的再训练精度更稳定。在120个时点的搜索精度最高,为97.6%,当搜索的时点更多时,精度略有下降,最终在200时点的搜索精度达到97.3%。这种精度的轻微下降是由训练集和验证集之间的数据分布差异造成的。理想情况下,两个数据集驱动器上的替代更新(w,α)收敛到全局最优(w∗,α∗)。然而,如果纪元的数量设置在一个较大的值(例如200),w趋向于过拟合到训练集上的次优值w†trainw,然后影响α的更新过程,导致不稳定的结果(即零比开始增加)。在比较dart和iDARTS时,由于节点规范化和去相关离散化,dart在一开始就降低了性能,而iDARTS在迭代过程中提供了更稳定的性能。我们将DARTS和iDARTS给出的架构可视化,见附录中的fig .10和fig .9。

C. ImageNet的结果

我们进一步评估了iDARTS在ImageNet上实现的架构。为了比较,我们采用了两种架构,分别在CIFAR-10和ImageNet上用一个单元中4个节点进行搜索。体系结构如图5所示。结果见表四。正如在TableIV中,我们可以发现,在CIFAR-10和ImageNet上学习的架构都实现了与最先进的手册或RL方法相当的性能。在CIFAR-10上学习到的架构误差达到了25.2%。直接在ImageNet上搜索时,top-1错误进一步下降到24.7%,证明了它的有效性。

五:结论

在本文中,我们提出了DARTS的一个改进版本,即iDARTS,以解决体系结构退化问题。我们的动机在于基于dart的方法忽略了不同节点之间的不平衡规范和操作之间的高相关性。然后我们引入节点归一化和去相关离散化策略来解决这类问题。我们的方法具有更好的性能和更强的泛化能力和稳定性。

在这里插入图片描述

图6:CIFAR-10在不同环境下学习到的正常细胞和还原细胞。(a)和(b)为使用原型号inS2的正常和还原电池。©和(d)为小型号inS3的正常电池和还原电池

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

图7:当历元数增加到200时,搜索过程中dart和iDARTS的零比和精度曲线。

使用python的pymsql完成如下:表结构与数据创建 1. 建立 `users` 表和 `orders` 表。 `users` 表有用户ID、用户名、年龄字段,(id,name,age) `orders` 表有订单ID、订单日期、订单金额,用户id字段。(id,order_date,amount,user_id) 2 两表的id作为主键,`orders` 表用户id为users的外键 3 插入数据 `users` (1, '张三', 18), (2, '李四', 20), (3, '王五', 22), (4, '赵六', 25), (5, '钱七', 28); `orders` (1, '2021-09-01', 500, 1), (2, '2021-09-02', 1000, 2), (3, '2021-09-03', 600, 3), (4, '2021-09-04', 800, 4), (5, '2021-09-05', 1500, 5), (6, '2021-09-06', 1200, 3), (7, '2021-09-07', 2000, 1), (8, '2021-09-08', 300, 2), (9, '2021-09-09', 700, 5), (10, '2021-09-10', 900, 4); 查询语句 1. 查询订单总金额 2. 查询所有用户的平均年龄,并将结果四舍五入保留两位小数。 3. 查询订单总数最多的用户的姓名和订单总数。 4. 查询所有不重复的年龄。 5. 查询订单日期在2021年9月1日至9月4日之间的订单总金额。 6. 查询年龄不大于25岁的用户的订单数量,并按照降序排序。 7. 查询订单总金额排名前3的用户的姓名和订单总金额。 8. 查询订单总金额最大的用户的姓名和订单总金额。 9. 查询订单总金额最小的用户的姓名和订单总金额。 10. 查询所有名字含有“李”的用户,按照名字升序排序。 11. 查询所有年龄大于20岁的用户,按照年龄降序排序,并只显示前5条记录。 12. 查询每个用户的订单数量和订单总金额,并按照总金额降序排序。
最新发布
06-03
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值