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

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

论文:Neural Architecture Search with Reinforcement Learning

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

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$个输出。

  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特点在于可学习分组卷积的提出,整体的结构设计非常奇妙。以往的剪枝工作都是在网络训练后进行的,导致精度有较大的降落,而可学习分组卷积联合训练过程进行剪枝,不仅能精确地剪枝,还能持续训练,使网络权重更平滑,是个很不错的工作。



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