美文网首页
Progressive Differentiable Archi

Progressive Differentiable Archi

作者: 斯文攸归 | 来源:发表于2020-02-29 01:22 被阅读0次

    华为诺亚方舟+同济大学

    https://github.com/chenxin061/pdarts

    摘要:

    由于NAS受限于memory和计算消耗,一般都会在proxy集进行较小的initial channel及layer depth搜索,然后把搜好的模型再扩充较大的channel和depth放到target集上重训重测,这样通常在目标数据集上的测试准确率较低。这是由于网络搜索和网络评估中的架构深度之间存在巨大差距。本文提出的方法允许网络结构的深度在搜索过程中不断增长,但是这会带来两个问题,较高的计算负担和较差的搜索稳定性,本文以搜索空间估近似和正则化来解决。大大缩短了搜索时间:单GPU大约7个小时。

    介绍:

    DARTS受限于GPU显存,在较浅的网络中进行搜索但是测试是以较深的网络进行,这会带来depth gap,这意味着在搜索阶段倾向于寻找在浅层结构中表现良好的那些操作,但评估阶段实际上更倾向适合深层架构的其他操作。这种差距阻碍了这些方法应用于更复杂的视觉识别任务。

    DARTS和P-DARTS的区别

    DARTS搜索出来的结构包含8个单元(50 epochs),在ImageNet上训练测试时将网络加深到20个单元。

    在本文中,提出Progressive DARTS,将搜索过程分成多个阶段,在每个阶段结束时逐渐增加网络深度,但是搜索较深的网络结构带来较高的计算负担,因此提出搜索空间近似,随着网络深度的提高,根据之前搜索过程的得分来减少候选操作的数量。另一个问题,搜索稳定性也会受到影响,在深层体系结构中进行搜索,其中算法可能会严重偏向skip connection,因为它通常会导致搜索优化过程中最快收敛速度,但实际上,更好的选择通常在于可学习的操作比如卷积,因为实际中,过多的skip-connection(无可学习参数)会使得表征能力下降。为了避免这个问题,本文提出搜索空间正则化,引入操作层面的Dropout来抑制搜索过程中skip-connection的强度,同时对评估阶段的skip-connection的表达进行控制。

    在CIFAR-10上进行搜索,在CIFAR-10和ImageNet上进行评估,在CIFAR-10上,测试错误率为2.50%,参数量为3.4M,迁移到ImageNet上,top-1/5 错误率为24.4%/7.4%。搜索空间近似将帮助大大缩短搜索时间(0.3 GPU-days),搜索空间正则化使得P-DARTS更容易应用于另外的proxy数据集,在CIFAR-100上,测试错误率15.92%,3.6M参数。

    Progressively Increasing the Searching Depth

    在搜索过程中逐渐增加网络深度,这样搜索结束时网络深度将与测试网络的深度相当,本文用渐进式方式,而不是直接将深度增加到目标级别,因为浅层网络中的搜索将有助于缩减搜索空间(减少候选操作),从而减轻深度网络中搜索的风险。

    P-DARTS

    这里仅显示一个中间阶段,搜索网络的深度由5增加到11,再增加到17,候选操作集合的大小由5降到3,再降到2,上一阶段得分最低的操作被舍弃。

    搜索空间近似:

    在每个搜索阶段G_k,搜索网络包含L_k个单元(cell),搜索空间为O_k,有\vert O_{(i,j)}^k \vert =O_k,在初始阶段,操作的搜索空间很大(O_{(i,j)}^1=O),在每个搜索阶段(G_{k-1})完成后,结构参数\alpha_{k-1}被学习并通过它计算每个连接上候选操作的得分。通过堆叠更多的单元(cell)来增加网络深度,因此(L_{k}>L_{k-1}),同时将搜索空间近似,意即新的候选操作集合O_{(i,j)}^k比上一阶段的候选操作集合O_{(i,j)}^{k-1}更小(O_{(i,j)}^k<O_{(i,j)}^{k-1}),搜索空间的近似就是丢弃一部分不重要的操作(在前一阶段权重较低的那些操作)。在最后的搜索结束后,根据学到的结构参数\alpha_K决定最后的单元拓扑,仿照DARTS,为每个中间节点保留两个权重最高的操作。

    搜索空间正则:

    在每一个阶段G_k的开始,从头训练调整后的结构,意即网络的权重是初始化的,因为有一些候选操作是要被丢弃的。搜索空间正则包括:第一部分,在每个skip-connect之后增加操作层面的Dropout,以此来部分切除直连路径,使得算法去寻找其他的操作。但是,如果不断阻塞skip-connect路径,算法会通过为它们分配低权重来删除它们,这对最终性能有害,为了解决这个问题,在每个阶段的训练过程中逐渐降低Dropout的比例,这样直联路径会在刚训练初始阶段被阻塞,但是会在其他操作的参数学习好之后被“公平对待”,让算法自行选择。

    除了使用Dropout,本文还观察到skip-connect作为一种典型操作,对于测试阶段的精度影响较大。在CIFAR-10上设置三个阶段(三个阶段均设置同样的搜索操作),但是发现在最后搜索阶段结束后,在正常单元中保留的skip-connect操作个数在2到4之间。本文提出结构精细化(architecture refinement),简单地来控制最后搜索阶段之后保留的skip-connection操作数量是一个定值M=2,这是通过迭代过程完成的,该过程从使用DARTS描述的标准算法构建单元拓扑开始,如果skip-connection的个数不是M,则在单元拓扑中搜索M个有最大结构权值的skip-connection操作,并将其余的skip-connection的权重置零,以调整之后的结构参数来重新构建单元。

    第二种正则化技术必须应用于第一种正规化技术之上,否则,在没有操作级别的Dropout的情况下,搜索过程会产生低质量的体系结构权重,基于此我们无法构建强大的体系结构,即使有固定数量的skip-connection。

    实验结果:

    实验结果

    相关文章

      网友评论

          本文标题:Progressive Differentiable Archi

          本文链接:https://www.haomeiwen.com/subject/slqdrctx.html