Press "Enter" to skip to content

MaskConnect: 探究网络结构搜索中的Module间更好的连接

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

加入极市 专业CV交流群,与 6000+来自腾讯,华为,百度,北大,清华,中科院 等名企名校视觉开发者互动交流!更有机会与 李开复老师 等大牛群内互动!

 

同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。 关注  极市平台  公众号  , 回复  加群, 立刻申请入群~

 

简介

 

深度学习结构设计已经取得了很大的进步,最近也有很多人提出设计有效的卷积神经网络Module或者Block然后堆叠形成完整的网络,比如VGG,ResNet,DenseNet等等。然而目前如何合并和聚集这些modules/blocks间的特征仍然是手工设计的,比如DenseNet和ResNet每个building block只是后一个和前一个相连,通过恒等映射、卷积或者池化等等。

 

MaskConnect是ECCV 2018的工作,论文题目是《MaskConnect: Connectivity Learning by Gradient Descent》,主要的思想是想自动学习建立网络中不同modules之间的连接,而且这个连接关系可以和网络的参数一起通过loss来学习得到,而并非手工设计,同时在两个经典的结构ResNet和ResNeXt上进行了大量的实验,实验表明通过学习连接,网络可以在任务上得到更好的准确率,同时在特定条件下能够有效的减少参数。

 

具体的做法是通过connectivity masks—学习到的二值参数来作为“switches”来决定最终网络的连接情况,值得注意的是,这些masks可以和网络本身的参数一起联合优化。另外,一个有趣的事情是,作者发现同时他们能够发现网络本身冗余或者不必要的module,在优化结束之后,可以将其prune掉来减少参数,降低延时。

 

方法

 

(一)Formulation

 

作者首先将网络分成L个modules(对于ResNet来说,每个module就是一个residual block, 对于ResNeXt来说,每个module是由多个并行的分支组成)。定义Xj为第j-th个module的输入,j=1,2,3…L.

 

现在引入可学习的masks来定义网络中的连接,对于module j可以从之前的一个或者多个module来接受输入,k = 1,2,…,j-1.

 

使用上面的m_{j}来表示j-th module的二值mask向量。

 

 

因此第j个module的输出就是上面的式子,之后再经过一些常规操作如卷积。当不同的modules之前的feature map大小不一样时,使用zero-padding来增加feature tensors的维度至最大的feature map尺寸.

 

在实验中,每个module被允许能够接受K个之前的module作为输入(1 < K < (j-1)),这个K也是一项超参,特殊情况,如果一个module k对于所有的j来说都没有后续的module接受它作为输出,即m_{k}=0,那幺在优化之后,就会将这个module prune掉来减少参数数量和加速。

 

(二)学习连接

 

学习算法叫做MaskConnect,因为这些mask(二进制参数)需要学习得到,因此作者定义了一种改版的反向传播,来训练带有二值参数的神经网络。因此,借鉴了《Binaryconnect: Training deep neural net- works with binary weights during propagations.》中提出的方法。

 

训练过程中的源码如下(这里以ResNet为例):

 

 

随后作者将MaskConnect分别应用到ResNet和ResNeXt上,如下图所示:

 

 

其中红色实线连接为MaskConnect学习到的连接。

 

实验

 

作者在CIFAR-10, CIFAR-100和ImageNet上进行了实验,其中K是上面提到的超参控制接受之前module的输入数量,如下是利用ResNet作为backbone。

 

 

此外,还进行了调整ResNet上K值的ablation study.

 

 

在K=10的时候得到最好的准确率。可以看出,当K值很小的时候,准确率也是很低的,但是算法对K值并没有也别敏感,当K从7变化到13时,准确率都是接近最高值。

 

在ImageNet上也进行了实验:

 

 

总结

 

这篇文章是首次提出学习神经网络中不同module间的连接关系,这个问题被表达成连接参数和网络参数一起优化的问题,并且通过实验在ResNet和ResNeXt上发现通过MaskConnect的结果比固定的module连接准确率确实高,同时也可以使一些没用的module进行prune. 未来的工作可以会探索参数化更复杂的不同module间的更好的feature聚合。

Be First to Comment

发表评论

邮箱地址不会被公开。 必填项已用*标注