论文阅读20.06-第二周

FBNetV3: Joint Architecture-Recipe Search using Neural Acquisition Function

这篇文章的出发点在于目前的NAS都只搜了结构而对训练时的其他参数(输入分辨率、优化算法、学习率、ema等等),那么本文的最终目的就是要联合搜索网络结构和训练超参数。问题的难点在于训练超参数是不可导的,且其形式与结构参数是不一样的,需要找到一种方式来回避基于采样-尝试的模式的搜索。文章给出的答案是性能预测器

整个搜索过程分为两个阶段:

  • 粗探索阶段:同时探索搜索域+训练性能预测器;这为下一阶段提供两样东西:训练好的预测器, 和一个不赖的初始种群
  • 细开发阶段:用性能预测器进行快速的进化算法搜索

首先先说一下预测器,我觉得他想解决的应该是没有超网络的情况下,怎么进行快速评测的问题。他用一个encoder和两个head,一个预测性能的head和一个预测统计量(flops/params)的head。后者只是用来为encoder进行一个预训练。这个设计感觉应该是调出来的,比如可能直接学accuracy学不出来,然后发现这样初始化有用。Flops和Params都是可以简单地计算出来的。预测器的训练过程也比较复杂,还分为了两个阶段,用的是Huber Loss,感觉这里应该作者试了很久吧。

那么第一阶段的重点就是怎么样采样训练预测器的样本,解决方案是两步交替进行:用当前预测器去选择一个batch的样本,然后再用目前为止所有的batch去训练预测器。这个过程直到真实与预测的排序相关系数达到一定阈值时停止,是一种早停策略。第一阶段还有一些不明确的点,比如采样样本时是否重复之类的,这些是需要看代码才能确定的。

第二阶段就是一个普通的进化算法,他只提到了变异而没有提到交叉。停止条件也不是固定epoch而是提升饱和。作者特意提了预测器可重复使用搜多个不同的模型,这是目前所有将超网络训练与搜索割裂的算法都具有的优点。

FBNetv3
在实验部分,作者首先尝试了为一个给定的网络去搜索训练超参数,然后再去进行网络结构和训练超参的联合搜索。但是对比的时候却去和baseline的ResNet50、152对比,这不太好说明到底是训练算法的优秀还是AutoTrain的优秀,能说明搜索算法优秀的裕则是交换训练超参使性能下降的那一段;实验中指出了EMA模型的有效性,包括在COCO上也进行了验证。

HourNAS: Extremely Fast Neural Architecture Search Through an Hourglass Lens

文章的中心在于,一个网络是由许多的block堆起来的,但是不是所有的block都一样重要,如果我们找出哪些block更重要,然后优先不带限制地搜索这些block,其他的按照资源限制去分配不是挺好吗?

那么第一个问题是:为什么有些层会比其他层更重要?作者先从ResNet的模型集成角度来说,任意一个带skip连接的block,都只参与到了一半的前向路径中去而像第一个卷积层、最后FC层,还有下采样模块这些几乎参与所有路径的block,才是重要block。作者在不同层分别进行了按概率置0的操作,有些层的影响大,而有些层的影响小。

那么在此基础上把NAS当作一个资源分配问题,考虑一个两阶段搜索算法。第一阶段固定其他block而只搜索vital blocks,不带有任何的资源限制;第二阶段是去在满足条件的前提下去搜索符合限制的nonvital blocks。两次搜索均采用类似GDAS,用Gumbel Max采样(比Gumbel Softmax快),一边按概率采样去训练超网络里面的参数,一边学习超网络采样的结构参数。

在第二阶段的搜索中,为了在GDAS的这种方法中引入资源约束,HourNAS加上了space proposal这个概念。大意是,先提取出几个满足资源约束的subspace,然后去学习从每个subspace中采样子结构的概率。但是一个proposal到底意味着什么?是一种概率分布还是一个具体的网络,如果是概率分布的话这个概率是否也一起优化,如果是具体某个网络的话那不就等于是从8个网络中找一个最好的?
HourNAS算法结构
HourNAS最优的一点在于快,把一个大搜索域拆成了两个子域的直积,并用贪心的方法先后搜索,在ImageNet上居然只需要3GPU hours。

Hit-Detector: Hierarchical Trinity Architecture Search for Object Detection

这篇文章尝试去联合搜索一个检测器的各个部件,backbone、FPN和head,他没有提到RPN,大概是因为RPN本身就已经很轻量了?

文章的起点是目前针对检测器的搜索算法都是单独对FPN、或者是单独对backbone的搜索,但是实验发现,DetNAS+NAS-FPN模型性能反而还下降了,这个实验突出说明了联合搜索的重要性。不过如果只是联合搜索也没有什么新意,搜索算法用的是集成了flops优化目标的Darts,这篇文章的亮点在于如何处理不同模块的不同搜索域。
超大的搜索域
文章的做法是先设计了一个超大的搜索域,大概是从FBNet上面变化而来,一层可选的Block有32种,在此基础上先用层数少一半的小网络进行一段类似darts的训练,不过结构参数的优化目标上增加稀疏正则项。这样子经过一段时间地训练之后,就可以在三个搜索域中分别进行排序保留前8的操作,得到三个搜索域各自偏好的操作。
min ⁡ α f ( α ) + μ min ⁡ i ( ∑ l = 1 L α l , i 2 ) \min_\alpha f(\alpha)+\mu\min_i(\sqrt{\sum_{l=1}^L\alpha_{l,i}^2}) αminf(α)+μimin(l=1Lαl,i2 )
实验结果是相当的优秀,不仅和手工模型对比也和NAS算法搜索出来的模型进行了对比,作者也证明了如果都用同一个搜索域效果会下降。
HitDetector实验结果

FasterSeg: Searching for Faster Real-time Semantic Segmentation

一篇针对语义分割的NAS文章,目标是搜索一个极快的、不太损失精度的网络结构。主要贡献点有三个:

借鉴经验的多分辨率分支搜索域设计

在研究者设计的网络结构中,许多都是多分辨率分支的网络,因此用传统的序列网络结构肯定不合适。

文章假设我们用N层,每一层都有多个不同下采样率s的节点。每一个节点可以从上一层的s或是s/2节点获得输入,并生成s或是2s的输出。
因此假设有一个单(多)分支的网络,这个问题可以变成

– (每个分支)我们应该在第几层下采样第一次、第几层下采样第二次( β \beta β)
– 对于路径上的每个节点,应该用哪种操作( α \alpha α)
– 每个节点的expension rate是多少( γ \gamma γ)

搜索算法类似于GDAS的那种gumbel softmax,然后不同扩展比用一个超核来实现。训练完成后 α , γ \alpha,\gamma α,γ直接取max, β \beta β的话取向下传递最大的那一层。

考虑操作、分辨率、通道扩充比的更细粒度的延时正则

文章指出在添加网络延时的约束的时候,网络自己会倾向于用skip而不是去学出低扩展比。这是因为时间对于操作的敏感性比对于其他参数要高,所以会优先选skip以减少latency惩罚。我个人觉得这个解释还是要存疑的,因为解释不了在darts这些没有latency惩罚时的collapse。

但是从结果上来说,把latency惩罚拆分成由 β \beta β α \alpha α γ \gamma γ引起的三个部分,并给本来时间不敏感的下采样率和扩展比以更高的权值,确实解决了collapse的问题。
collapse问题的解决

师生蒸馏的联合搜索

在同一个超网络中搜两个结构T和S,两个结构在超网络中迭代训练。其中T结构不搜扩展比参数( γ \gamma γ)而选择直接取最大值。搜出来的大网络用结果KL散度给小网络做蒸馏。

从实验结果上来说,网络在CS、CamVid、BDD上都打败了其他方法,但是对比时有一些不一致,用了蒸馏之后的网络去和其他人没有蒸馏的去对比,扩大了其优势。
CS上的结果

Search for Better Students to Learn Distilled Knowledge

这也是一篇用NAS做蒸馏的文章。其目的在于,如何在NAS搜索的过程中,发现哪个模型加上蒸馏之后学习效果最棒。但是实际上,在作者的实验中并没有与直接NAS搜索进行对比,因此实验非常地不充分。

NAS本身也可以看作一个在超网络上进行剪枝的过程。把原始的T网络当作搜索域,给每一通道上加一个门控 g g g,那本文所做的就是删除原模型的若干通道后还能用原模型进行蒸馏达到不错的效果。也就是搜索目标不再是最好的小网络,而是能最充分应用蒸馏的小网络。因此搜索目标由原始的分类,改成了蒸馏的目标KL损失,再加上使门控稀疏化的L1正则和weight decay。优化目标如下式所示。
在这里插入图片描述
优化算法用到了次梯度,这里具体还没看明白,先留着日后补上。
在这里插入图片描述
在不同的结构上,同样的蒸馏算法所能带来的提升也不一样。但是实验其实找到的不是蒸馏提升最大的,而是最左下角的结果,不加蒸馏这个模型的精度也很高了。不过就实用的角度来说蒸馏提升了多大不重要,只要加上蒸馏之后精度高就行。

文章的消融实验有点难以理解,把优化中的第一项KL换成与T网络的交叉熵就变成了剪枝实验?然后让kl散度趋于不同值,来证明KL项确实能说明学生网络的好坏?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值