mongodb 分组 获得每组的长度_CondenseNet:可学习分组卷积,原作对DenseNet轻量改造 |CVPR 18...

CondenseNet特点在于可学习分组卷积的提出,结合训练过程进行剪枝,不仅能准确地剪枝,还能继续训练,使网络权重更平滑,是个很不错的工作  

来源:晓飞的算法工程笔记 公众号

论文:Neural Architecture Search with Reinforcement Learning

6dc9fcff135cbd6f8d01f37883046d47.png
  • 论文地址:https://arxiv.org/abs/1711.09224
  • 论文代码:https://github.com/ShichenLiu/CondenseNet

Introduction


1caac85079b3aebfc7f980e54955bb84.png

  DenseNet基于特征复用,能够达到很好的性能,但是论文认为其内在连接存在很多冗余,早期的特征不需要复用到较后的层。为此,论文基于可学习分组卷积提出CondenseNet,能够在训练阶段自动稀疏网络结构,选择最优的输入输出连接模式,并在最后将其转换成常规的分组卷积分组卷积结构。

CondenseNets


720c310c1ec55ec5bf860ffcbd2e7f02.png

  分组卷积能够有效地降低网络参数,对于稠密的网络结构而言,可以将卷积变为分组卷积。然而,若将卷积变为分组卷积,则会造成性能的大幅下降,主要由于卷积的输入一般有其内在的联系,并且输入有较大的多样性,不能这样硬性地人为分组。随机打乱能够一定程度地缓解性能的降低,但从实验来看还不如参数较少的DenseNet。   另外,论文认为稠密连接虽然有利于特征复用,但是存在较大的冗余性,但很难定义哪个特征对当前层是有用的。为此,论文引入了可学习的分组卷积来解决上述问题。

  • Learned Group Convolution
cc24445ad640e996994d755ff678d6c7.png

  分组卷积的学习包含多个阶段,如图3和图4所示,前半段训练过程包含多个condensing阶段,结合引导稀疏化的正则化方法来反复训练网络,然后将不重要的filter剪枝。后半部分为optimization阶段,这个阶段对剪枝固定后的网络进行学习。实现细节如下:

  1. Filter Groups,卷积分组

  将标准卷积进行分组,比如卷积的核大小为矩阵,将该卷积核分为组,标记为,每个大小为,代表组内处理输入和输出的卷积核,注意这里没有对输入进行对应的分组。

  1. Condensation Criterion,压缩标准

  在训练的过程逐步剔除每个组中权重较低的输入特征子集,输入特征对于组的重要程度通过求和组内所有对应的权值获得,将中重要程度较小的输入特征对应的列置为零,从而将卷积层稀疏化。

  1. Group Lasso

  一般而言,为了减少剪枝带来的准确率影响,可以通过使用L1正则方法引导权值尽量稀疏。由于分组卷积的特性,CondenseNets需要更严格的列稀疏来引导组内的卷积尽量使用相同的输入子集,因此采用group级别的稀疏性,论文提出group-lasso正则化:

97f748147119428a94582351d3cf4754.png

  根号内的项由列中最大的元素主宰,group-lasso能够引导稀疏的列趋向完全为0。

  1. Condensation Factor

  可学习分组卷积不仅能够自动发现最优的输入输出连接模式,而且更灵活。组内使用的输入特征数不一定为倍,而是根据定义condensation factor (不一定等于),允许每组选择个输入。

  1. Condensation Procedure

  CondenseNet的剪枝在训练过程中进行,如图3所示,在每个condensing阶段,会剪除权重,在训练的最后,仅保留每个卷积组内的权重。每个condensing阶段的训练周期设为,为总的训练周期,所有condensing阶段共占训练的一半。   需要注意,训练阶段并没有真正地将权重去除,而是使用二值tensor作为掩膜进行element-wise相乘,这样的实现在GPU上仍是高效的,不会带来太多额外的耗时。

  1. Learning rate
cee503ce7d129cc65c60e35233af7778.png

  训练使用cosine学习率退火,训练过程如图4所示,中间的损失突然上升是由于最后的condensing阶段后剪枝了一半的权重(最后的condensing阶段内仅权重)导致的,但从图中可以看出,训练很快就恢复了。

  1. Index Layer

  在训练后,需要去除剪枝的权重转换为常规的网络结构,这样不仅能够降低网络参数,还能保证在计算能耗有限的设备上高效运行。为此CondenseNet在发布时需要加入Index层,该层的原理如图3最右所示,根据剪枝后的剩余权重对输入特征进行重排,将可学习分组卷积的剩余权重转换成分组卷积,训练阶段到测试阶段的转换如图1。   需要注意,论文对分组卷积的输出进行了重排,这样做的原因是为了让后面的分组卷积能够地使用到前面分组卷积提取的属性。

Architecture Design

631fec824bb286069a8ffde98d0d713b.png

  除了可学习分组卷积,论文还对原来的DenseNet结构进行了修改,如图5所示,共包含两点修改:

  • Exponentially increasing growth rate(IGR),Densenet每层增加个新的特征图,称为增长率。而论文发现越深的层实际更依赖较高维的特征,因此需要增强与当前层较近的特征连接,通过逐渐增加增长率来实现。设置增长率为,为dense block下标,为常数,这样能够增加较后层输出的特征的占比。
  • Fully dense connectivity(FDC),为了更多的特征重用,将所有的层进行了连接,并为不同的层提供了不同的下采样操作。

Experiments

6e56318e870bee27663338249c05d6e9.png

  验证论文提出的改进方法的效果。

ed3e74550e362cf1d327f5355c95d56a.png

  CIFAR-10上的轻量级网络性能对比。

df191ebf98db2e1ba0b212929ff1fb57.png

  CIFAR-10和CIFAR-100上的剪枝SOTA网络性能对比。

a16c30b2d6673d8912069a119831cc95.png
66f452f23ad9bee0f3f2e8ae5a25269b.png

  ImageNet上的轻量级网络性能对比。

5561cb86c6915824dd337b89c03fda35.png

  ImageNet上的SOTA网络推理耗时对比。

c45ed77d043d6fb14487147c0b1f8416.png

  对不同超参进行了对比实验。

CONCLUSION


  CondenseNet特点在于可学习分组卷积的提出,整体的结构设计十分巧妙。以往的剪枝工作都是在网络训练后进行的,导致精度有较大的下降,而可学习分组卷积结合训练过程进行剪枝,不仅能准确地剪枝,还能继续训练,使网络权重更平滑,是个很不错的工作。

如果本文对你有帮助,麻烦点个赞或在看呗~ 更多内容请关注 微信公众号【晓飞的算法工程笔记】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值