zzc

  • 2

    获得赞
  • 2

    发布的文章
  • 0

    答辩的项目

DARTS及其变体相关文章解读

NASNet

最后更新 2020-05-25 11:49 阅读 66

最后更新 2020-05-25 11:49

阅读 66

NASNet

DARTS

一、         DARTS的动机 

传统的NAS方法一般是用强化学习或进化算法,在一个离散且不可微的搜索空间搜索网络结构,这需要评估大量的网络结构,这带来了非常大的计算开销(NASNet:2000 GPU days , AmoebaNet:3150 GPU days)。本文的就是为了克服NAS的计算开销大的问题而提出的一种新算法,本文中提出的DARTS的搜索开销为1.5或4 GPU days。

二、         DARTS的具体实现方法

 DARTS搜索计算单元,用计算单元构建最终的网络架构。计算单元实际是一个由N个点构成的。节点表示的是特征图,边表示的是操作。每个单元有两个输入节点一个输出节点,输入节点是前两层的输出节点。 为了将搜索空间变的连续,文章将特定操作的种类选择松弛为所有可能操作的 softmax 函数: 

image.png

α(I,j)是每条边上各个操作的权重向量,这个公式将一条边上可能的多种、离散操作用公式表示成了一个混合的连续操作。接下来只需要学习α,选择权值最大的操作代替混合操作即可得到网络架构。在松弛之后,文章的目标就变成了学习架构参数和权值参数。 架构参数。文章用最小化Lval(w*,α*)来优化结构参数,与结构也有关的权值参数则用训练损失Ltrain(w, α*)来优化:   

image.png

但是这个双层优化问题计算量太大,因为每当结构参数变化,内部的权重参数也必须重新计算,所以文章进行了近似: 

image.png

这里相当于用单步训练更新的权值近似收敛后的权值,相关方法在元学习模型迁移中也有应用。对上面黄色标记的公式用链式法则求梯度: 

image.png

二阶项包含矩阵向量乘积,计算复杂,用有限差分近似简化: 

image.png

其中,经过这些操作可以将复杂度从O(|α||w|)简化为 O(|α|+|w|)。  


PDARTS

一、          PDARTS的出发点

当DARTS被迁移到不同的视觉任务时效果常常不尽人意。文章认为,这是因为DARTS中搜索结构用的是一个超网络,再训练用的是一个子网络,这两个阶段用到的网络存在性质差异(特别是网络深度),所以带来了一个明显的优化差异,这就导致搜索得到的结构参数对超网络过拟合,得到的子网络可能并不是最佳的。 

一、          PDARTS的具体实现方法 

基础方法还是基于DARTS,本文主要做的事是用一种渐进的搜索策略来弥合DARTS中超网络和子网络的优化差距。优化差距的来源是DARTS框架在搜索和实际的评估场景之间的严重失配问题,如网络形态、超参数、训练策略等的失配,其中又以网络深度失配的影响最大,所以本文提出逐渐增加超网络深度,直到深度接近实际运用的网络的方法,为此,又提出了搜索空间近似和搜索空间正则化。 

4.jpg

搜索空间近似:搜索过程的计算开销随搜索深度线性增加,为了解决这个问题,在深度增加的同时缩小操作空间,即减小每条边上连接的操作种类,而具体丢弃什么操作依据的是该操作权重,权重小的丢弃。 

5.png

搜索空间正则化:由于跳跃连接梯度下降快,所以搜索过程中倾向保存跳跃连接,但跳跃连接多了不利于特征学习。为了解决这个问题,文章提出了搜索空间正则化,其中包含两部分,一是在跳跃连接后插入操作层次的Dropout,切断包含跳跃连接的路径,方便算法探索更多的操作;二是限制网络架构中的跳跃连接的数量,提升网络的稳定性。 


PCDARTS

一、PCDARTS的出发点

本文是基于DARTS的改进。文章认为DARTS虽然相对之前的的NAS算法搜索效率有了大幅度的提升,但是其所需的内存开销和计算开销仍然是非常大的,本文就是针对这个问题提出了Partially-Connected DARTS,其思想简单说就是在搜索架构时指对特征的一部分通道进行操作,其余通道直接跳过这些操作,每条边上都是这样。 

二、PCARTS的实现方法

1.     部分通道连接 

定义一个通道采样掩码Si,j (channel sampling mask),它会给选中的通道分配1,给未选中通道分配0。选中的通道会对应边上的操作处理,其余则直接跳过这些操作往后传递,相关公式如下: 

1.jpg

其中Si,j*xi和(1-Si,j)*xi分别表示被选中的通道和掩码通道。另外文章还设置了一个超参数K,表示选择通道数为总数的1/K,用K权衡搜索准确率和效率。 

2.png

2.     边界标准化

 因为架构参数是迭代过程中用随机采样的通道优化的,并且采样的通道一直在随时间变换,因此由这些通道确定的最优连接可能并不稳定。为了缓解这个问题引入了边标准化,,即给每条边一个权值,表示为βi,j,,此时xj的计算就变成;

3.png

 在结构搜索完成后,边(i,j)之间的连接就由{}和βi,j共同确定,我们将这两个标准化系数相乘,即,image.png


和DARTS一样选择最大权值的边作为最终的边。因为βi,j在训练过程中共享,所以网络结构对迭代过程的通道采样不再敏感,让结构搜索更加稳定。 


MiLeNAS

一、MiLeNAS出发点

文章认为最近的许多基于DARTS的NAS方法都用到了双层优化,但是在双层优化的计算过程中对计算过程进行了两次近似,两次近似的叠加会带来梯度错误,使得搜索过程最终没法收敛得到最佳的结构。文章针对这个问题提出了一种新的优化方法。 

二、MiLeNAS的具体实现方法

单层优化问题:

6.png

 用训练损失来优化架构参数和网络权值,虽然简单,但是可以会导致结构参数α的过拟合。         

为了解决过拟合问题,文章用Lval(w,α)作为正则化项限制验证损失不能明显大于训练损失,即: 

7.png

用拉格朗日乘子法,目标就变为: 

8.jpg

将Ltr(w,α)前的参数化为1,则混合优化目标变为:

9.png

 通过将训练损失和验证损失的潜在关系考虑在内,本文的混合优化方法可以减轻过拟合问题,同时搜索得到比单层优化和双层优化准确率更高的架构。 用一阶方法求解以上方程有: 

10.png

以上就是MiLeNAS一阶方法的搜索目标。

 11.jpg

基于模型大小的搜索策略:在一次运行中搜索不同模型大小的最优架构。更具体地说,在搜索过程中,我们在每个epoch跟踪模型大小及其最佳验证精度,然后评估每种模型大小下最优架构的性能。

 早期终止策略:文章发现,在经过一定epoch(在DARTS和MiLeNAS大约25个)之后,模型的尺寸将会减小。因为我们知道更大的模型可能会带来更好的性能,所以如果模型尺寸小于预期尺寸,我们就停止搜索。



本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,转载请附上原文出处链接和本声明。
本文链接地址:https://www.flyai.com/article/504
讨论
500字
表情
每日参与讨论奖励 20FAI
发送
每日参与讨论奖励 20FAI
删除确认
是否删除该条评论?
取消 删除