DenseNet详细解读

这篇文章是Densely Connected Convolutional Networks的解读,在精简部分内容的同时补充了相关的概念。如有错误,敬请指正。
论文地址:https://arxiv.org/abs/1608.06993
代码地址:https://github.com/liuzhuang13/DenseNet

Abstract

最近在卷及网络方面的进展显示,如果在深层网络中的输入和输出层中加入shortcut连接,会提高正确率和训练效率。根据这一发现,我们提出了一种新的网络结构:DenseNet,以前馈的方式来将每一层和其他所有层连接起来。对于每一层来说,之前所有层的feature maps都将作为输入;同时这一层的feature map将会作为之后所有层的输入。DenseNet有如下优点:减轻了梯度消失的现象;强化了特征传播;高效地重复使用特征;减少了参数的数量。

1. Introduction

当CNN网络深度剧增时,梯度消失的问题凸显出来。ResNet和Highway Networks通过恒等映射将信号传递到更深层的网络。有许多方法对ResNet进行了改进,这些方法虽然在网络拓扑结构,训练方法上有所差异,但实质上有一个重要的共性:在层间进行shortcut连接。
本文将这种思想作了进一步升华:在层间保证最大的信息流动,即将所有层直接连接起来。Figure 1. 展示了这种结构。




和ResNet不同的是,DenseNet在features流向下一层之前,不做叠加,而是通过层间的连接将特征融合。因此,第 条连接。
这种连接貌似会产生更多的参数,但实际上DenseNet所需的参数要比传统的神经网络少。因为网络不需要学习冗余的特征图。在传统的前馈网络中,每一层网络都需要从前一层中获得输入,经过变换后再传入下一层。ResNet将需要保留的信息显式地通过恒等变换传入之后的层。但是因为ResNet每一层都有自己的权重参数,所以参数总数更多。DenseNet对输入网络中的信息和需要保留的信息作出了显示的区分。DenseNet的层非常窄,比如只有每层只有12个filter。并且只对网络中共有信息增添了一小部分feature map,其余的特征图保持不变。最后的分类器基于网络中所有的特征图来进行最终的判别。
DenseNet的另一个优势是优化的信息和梯度流动。因为每一层都和损失函数的梯度有直接的连接。更重要的是,密集连接具有正则化的作用,可以减小在较小数据集上的过拟合。

与深层网络优化相关的工作有:

  • Highway Networks:可训练达100层的网络 ResNet stochastic
  • depth训练方法:证明了深层网络实际上存在大量的参数冗余
  • Network in Network(NIN):在网络中加入了多层微网络结构,以提取更加复杂的特征
  • Deeply Supervised Network(DSN):由额外的分类器来监督内层网络的学习过程,可以增强靠前的多层网络接收到的梯度。
  • Ladder Networks:在自编码器中引入了侧向连接,在半监督学习中产生了很好的效果。
  • Deeply-Fused Nets (DFNs) :不同分支的网络在中间层进行融合(加和或拼接等方式),能够(1)产生很多潜在的共享参数的基础网络,(2)同时优化信息的流动,(3)从而帮助深层网络的训练过程。

DenseNet的创新在于,不是简单地通过加深网络层数或者拓展单层的宽度来获得新的网络架构,而是通过特征重用(feature reuse)来获得很高的参数利用率。

3. DenseNets

假设图像输入为x0x0

ResNets.

ResNet在原始网络的基础上增加了一个恒等映射:

x=H(x1)+x1xℓ=Hℓ(xℓ−1)+xℓ−1

ResNet的优点是,在反向传播的时候,靠后层的梯度可以通过恒等映射直接传导到之前的层。但是注意恒等映射x1xℓ−1是直接相加的,这可能导致对信息传递的阻碍。

Dense connectivity.

为了提高信息在层间的传递,我们将每一层和其他的层直接连接起来。此时,第层接收到之前所有层的特征图作为输入:

x=H([x0x1...x1])xℓ=Hℓ([x0,x1,...,xℓ−1])

为方便实现,将多重输入[x0x1...x1][x0,x1,...,xℓ−1]连接成一个张量。

Composite function.

HHℓ卷积。

Pooling layers.

以上公式中使用的连接操作在特征图大小改变的时候将变得不可行。而卷积中的down-sampling操作又正好会改变特征图的大小。为了解决这个问题,将网络变成多个密集连接的dense blocks,如下图:




将相邻两个dense blocks之间的层称作transition layers,进行卷积和池化操作。在实验中使用的transition layers包含一个BN,一个 1×11×1池化层。

Growth rate

如果每一个HHℓ定义为网络的增长率(growth rate)。在接下来的章节中可以看到,使用一个小的增长率,已经可以实现很好的正确率。因为每一层都和之前的层有所联系,因此每一层也都能共享网络的公有知识(collective knowledge)。

Bottleneck layers

111∗1个特征图,将这种网络结构定义为DenseNet-B

Compression

为了使模型更加紧凑,可以减少transition layers中的特征图数量。如果一个dense block中有mm时,定义为DenseNet-BC

Implementation Details

除开ImageNet,在实验中使用的DenseNet都有三个dense block,每一个都有相同数量的layer。在输入数据进入第一个dense block之前,会首先经过一个有16(对于DenseNet-BC,数量是增长率的两倍)个输出通道的卷积层。卷积核的大小为3×33×3。具体细节详见Table1。



4. Experiments

在CIFAR和SVHN数据集上的实验结果如下:



Classification Results on CIFAR and SVHN

Accuracy.

使用不同的深度LL)也超过ResNet的最好记录。但是,250层的DenseNet-BC正确率不高,原因可能是SVHN在这种极深的网络上发生了过拟合。

Parameter Efficiency.

250层的DenseNet模型仅仅有15M参数,正确率高于有30M参数的FractalNet和Wide ResNets。Figure 3给出了ResNet和DenseNet-BC的比较。



4.4. Classification Results on ImageNet

FIgure 4给出了在ImageNet上的详细测试结果:



5. Discussion

Model compactness

因为DenseNet中使用了密集连接的方式,特征图能被所有层共享,提高了特征重用的效率,也使得模型更加紧凑。从FIgure 4中可以发现,对于6%左右的测试误差,DenseNet的参数为ResNet的三分之一。对于性能相似的ResNet-1001和DenseNet-100,前者参数数量为10M,后者仅为0.8M。

Implicit Deep Supervision

DenseNet正确率提高的一种解释是,每一层通过shortcut收到了来自损失函数的额外监督(additional supervision)。关于deeply-supervised nets(DSN)的解释可见1,DSN在每一个隐层中都使用了分类器,使中间层学习分类特征。
DenseNet使用一种隐式的deep supervision策略,即只在网络终端使用一个单独的分类器来直接监督所有的层。但是相对DSN来说,DenseNet的损失函数和梯度要相对简单一些,因为所有的层都共享一个损失函数。

Feature Reuse

DenseNet的网络结构允许每一层利用之前层的特征。可以设计实验来验证这一点,在C10+数据集上使用L=40L=40层产生的特征图。




从图中可以发现如下规律:

  1. 所有的层将权重传播到同一个block,这表明靠后层通过同一个dense block使用了靠前层的特征
  2. Transtions layer在它之前的所有层传播了权重,表明信息通过间接的方式从前向后流动
  3. 第二和第三个dense block 中的层没有想transition layer 的输出层(三角形最上边的一行)分配权重,说明transition layer输出了许多冗余的特征(平均权重很低)
  4. 虽然最终的分类层(最右边的一层)使用了整个dense block的权重,但是从图上能发现最后的特征图权重的集中,这暗示了在网络的最后几层可能产生了高阶特征。

  1. C.-Y. Lee, S. Xie, P. Gallagher, Z. Zhang, and Z. Tu. Deeplysupervised
    nets. In AISTATS, 2015.
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值