CondenseNet:可学习分组卷积,原做对DenseNet的轻量化改造 | CVPR 2018

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

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

论文:Neural Architecture Search with Reinforcement Learninggithub

Introduction


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

CondenseNets


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

  • Learned Group Convolution

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

  1. Filter Groups,卷积分组

  将标准卷积进行分组,好比$1\times 1$卷积的核大小为$O\times R$矩阵$\mathbb{F}$,将该卷积核分为$G$组,标记为$\mathbb{F}1,\mathbb{F}2,\cdots,\mathbb{F}G$,每一个$\mathbb{F}g$大小为$\frac{O}{G}\times R$,$\mathbb{F}_{i,j}^g$表明$g$组内处理$i$输入和$j$输出的卷积核,注意这里没有对输入进行对应的分组。性能

  1. Condensation Criterion,压缩标准

  在训练的过程逐步剔除每一个组中权重较低的输入特征子集,$i$输入特征对于$g$组的重要程度经过求和组内全部对应的权值得到${\sum}{i=1}^{O/G} |\mathbb{F}{i,j}g|$,将$\mathbb{F}g$中重要程度较小的输入特征对应的列置为零,从而将卷积层稀疏化。学习

  1. Group Lasso

  通常而言,为了减小剪枝带来的准确率影响,能够经过使用L1正则方法引导权值尽可能稀疏。因为分组卷积的特性,CondenseNets须要更严格的列稀疏来引导组内的卷积尽可能使用相同的输入子集,所以采用group级别的稀疏性,论文提出group-lasso正则化:测试

  根号内的项由列中最大的元素主宰,group-lasso可以引导稀疏的$F^g$列趋向彻底为0。设计

  1. Condensation Factor

  可学习分组卷积不只可以自动发现最优的输入输出链接模式,并且更灵活。组内使用的输入特征数不必定为$\frac{1}{G}$倍,而是根据定义condensation factor $C$(不必定等于$G$),容许每组选择$\lfloor \frac{R}{C} \rfloor$个输入。3d

  1. Condensation Procedure

  CondenseNet的剪枝在训练过程当中进行,如图3所示,在每一个$C-1$condensing阶段,会剪除$\frac{1}{C}$权重,在训练的最后,仅保留每一个卷积组内的$\frac{1}{C}$权重。每一个condensing阶段的训练周期设为$\frac{M}{2(C-1)}$,$M$为总的训练周期,全部condensing阶段共占训练的一半。
  须要注意,训练阶段并无真正地将权重去除,而是使用二值tensor做为掩膜进行element-wise相乘,这样的实如今GPU上还是高效的,不会带来太多额外的耗时。

  1. Learning rate

  训练使用cosine学习率退火,训练过程如图4所示,中间的损失忽然上升是因为最后的condensing阶段后剪枝了一半的权重(最后的condensing阶段内仅$\frac{2}{C}$权重)致使的,但从图中能够看出,训练很快就恢复了。

  1. Index Layer

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

Architecture Design

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

  • Exponentially increasing growth rate(IGR),Densenet每层增长$k$个新的特征图,$k$称为增加率。而论文发现越深的层实际更依赖较高维的特征,所以须要加强与当前层较近的特征链接,经过逐渐增长增加率来实现。设置增加率为$k=2^{m-1}k_0$,$m$为dense block下标,$k_0$为常数,这样可以增长较后层输出的特征的占比。
  • Fully dense connectivity(FDC),为了更多的特征重用,将全部的层进行了链接,并为不一样的层提供了不一样的下采样操做。

Experiments

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

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

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

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

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

  对不一样超参进行了对比实验。

CONCLUSION


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



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

work-life balance.

相关文章
相关标签/搜索