论文阅读——Densely Connected Convolutional Networks

前言

之前有一段时间看了挺多深度学习方面的论文,但是由于时间方面的问题一直没来得及进行总结。最近一段时间突发奇想把自己看论文时的学习笔记给记录一下,由于之前没写过博文,所以排版可能会有点emmm...一言难尽。专业方面的知识,如果有理解不到位的地方欢迎各位大佬指教。

Abstract

本文的主要工作:

  • 提出了一种Dense Convolutional Network(DenseNet)网络,该网络缓解了消失梯度问题,增强了特征传播,促进了特征再用并且大大减少了参数的数量。
  • 在四个有竞争力的数据集(CIFAR-10, CIFAR-100, SVHN, and ImageNet)上进行实验,将DenseNet与其他最先进网络的性能作对比。

1、Introduction

这一部分主要是介绍了近些年来随着卷积网络深度的增加,训练时出现了梯度消失的问题,以及最近的解决该问题的方法。最后提出密集卷积网络DenseNet,并对网络的大概构造进行概述。

1、解决梯度消失的方法:

  • ResNets和Highway Networks通过增加一条恒等映射将特征从一层传递到另一层。
  • FractalNets将不同数量的卷积块的多个并行层序列重复组合,以获得较大的标称深度,同时在网络中保持许多短路径。
  • Stochastic depth通过随机丢弃卷积层来缩短ResNets,以得到更好的信息流和梯度流。

2、密集卷积网络DenseNet的网络架构

  • 网络中的每个层从它前面的所有层获得附加输入,并将输出传递给它后面的所有层。
  • 从前面层中传递过来的特征图通过通道拼接构成输入(而不是像ResNets中进行对应通道相加)。
  • DenseNet中第论文阅读——Densely Connected Convolutional Networks层有论文阅读——Densely Connected Convolutional Networks个输入,假设网络共有论文阅读——Densely Connected Convolutional Networks层,则总连接数为论文阅读——Densely Connected Convolutional Networks
论文阅读——Densely Connected Convolutional Networks
DenseNet大致结构图

3、DenseNet网络架构的优点

  • 需要的参数比传统的卷积网络少,无需重新学习冗余特征图。
  • 可以清楚地区分添加到网络的信息和需要保存的信息。
  • 网络中的每层都可以直接从损失函数和原始输入信号中获得梯度,从而产生隐性深层监督。
  • 改善了整个网络中的信息和梯度流动,使得网络更易于训练。

2、Related Work

这一部分作者主要是提到了一些最近在卷积神经网络结构方面的科研进展。

  • Highway Networks:使用快捷连接和门控单元降低了数百层级别的卷积网络的优化难度。
  • ResNets:进一步支持了Highway Networks的研究,其使用恒等映射作为快捷连接并达到了突破纪录的性能。
  • Stochastic depth:训练了1202层ResNets网络,通过在训练期间随机丢弃卷积层来改善深度残留网络的训练。
  • GoogLeNet:使用一个“Inception module”,将不同大小卷积核产生的特征图连接起来。
  • Ladder Networks:引入了自动编码器的横向连接,在半监督的学习任务中产生了非常高的精度。

3、DenseNets

这一部分主要是对网络中的一些部件进行介绍。文章中假设输入网络的图片为论文阅读——Densely Connected Convolutional Networks,网络一共有论文阅读——Densely Connected Convolutional Networks层,第论文阅读——Densely Connected Convolutional Networks层的非线性变换为论文阅读——Densely Connected Convolutional Networks

1、ResNets

  • ResNets网络可以用以下函数来表示:论文阅读——Densely Connected Convolutional Networks
  • 优点:梯度直接通过特征函数从后面层流向前面的层。
  • 缺点:使用论文阅读——Densely Connected Convolutional Networks输出和论文阅读——Densely Connected Convolutional Networks求和可能会阻碍网络中的信息流。

2、Dense connectivity(密集连接)

  • DenseNet采用的是从任何层到所有后续层的直接连接方式。即第论文阅读——Densely Connected Convolutional Networks层接收所有前面层输出的特征图论文阅读——Densely Connected Convolutional Networks作为输入,数学表达式为论文阅读——Densely Connected Convolutional Networks,其中论文阅读——Densely Connected Convolutional Networks表示将第论文阅读——Densely Connected Convolutional Networks层前所有层输出的特征图进行拼接。

3、复合函数

  • 论文阅读——Densely Connected Convolutional Networks是三个连续操作的复合函数:BN标准化,ReLU**函数和一个3×3卷积。

4、池化层

  • 由于下采样层是卷积网络的一个重要组成部分,而在执行下采样后输出特征图的大小发生变化无法与前面层中输出的特征图进行拼接,因此文章中将DenseNets分为多个密集连接模块,模块内使用密集连接结构。而模块间的层被称为过渡层,过渡层一般由BN标准化、1×1卷积和2×2的平均池化构成。
论文阅读——Densely Connected Convolutional Networks
网络被分为多个密集连接模块

5、Growth rate(增长率)

  • 假设每个论文阅读——Densely Connected Convolutional Networks会产生论文阅读——Densely Connected Convolutional Networks个特征图,则论文阅读——Densely Connected Convolutional Networks为DenseNet的增长率。
  • 假设论文阅读——Densely Connected Convolutional Networks为输入图像的通道数,则第论文阅读——Densely Connected Convolutional Networks层的输入有论文阅读——Densely Connected Convolutional Networks个特征图。
  • 由于每一层都可以访问同一模块中所有前面层输出的特征图,DenseNet可以在增长率比较小(即网络宽度比较小)的情况下达到很好的精度并且所需要的参数量较少。

6、瓶颈层

  • 虽然DenseNet每层都只输出论文阅读——Densely Connected Convolutional Networks个特征图,但是每层的输入量还是相当大的。因此文章中想到使用瓶颈层的方式来减少输入特征的数量以提高计算效率。具体操作是:对于一个密集连接模块,在每个BN-ReLU-Conv(3×3)构成的小模块前面添加一个BN-ReLU-Conv(1×1)小模块,这些小模块中1×1卷积会产生论文阅读——Densely Connected Convolutional Networks(论文阅读——Densely Connected Convolutional Networks为增长率)个特征图以减少实际输入3×3卷积中的特征图数量。文章中把这个添加了瓶颈层的网络称为DenseNet-B。

7、压缩

  • 为了提高模型的紧凑性,文章中进一步减少过渡层产生的特征图数量,假设论文阅读——Densely Connected Convolutional Networks为压缩因子,输入过渡层的特征图数目为论文阅读——Densely Connected Convolutional Networks,则输出过渡层的特征图数目为论文阅读——Densely Connected Convolutional Networks论文阅读——Densely Connected Convolutional Networks。文章中将论文阅读——Densely Connected Convolutional Networks的DenseNet称为DenseNet-C,将论文阅读——Densely Connected Convolutional Networks并添加了瓶颈层的DenseNet称为DenseNet-BC。

8、实施细节

  • 实验中使用的具体网络配置如下表所示:
论文阅读——Densely Connected Convolutional Networks
ImageNet数据集上的DenseNet结构