深度学习网络篇——DenseNet
友情提示:请配合原文食用。
深度卷积神经网络
0° Motivation
硬件技术的进步与大规模数据集的支持使深度学习从低效的状态重获新生。自LeNet网络兴起以来,研究者们致力于更好地进行特征提取,并在此基础上提出了多种网络架构设计。尽管这些架构在形式上有所不同,但其共同点在于通过增加网络深度和通道数量来提升性能。然而,真正开创性突破性的工作是由He et al.于2015年提出的残差网络(ResNet)。尽管ResNet的核心思想仍在于通过增加网络深度来提高模型表现(Go Deeper带来准确率提升),但其引入的跳跃连接概念却被视为革命性的创新。针对深度网络中的关键问题——"梯度消失"现象,本文作者深入研究了相关工作,包括ResNet、HighwayNet、FractalNet以及随机深度网络等模型架构。通过对这些方法共性的分析发现:在现有架构设计中,所有层之间均被直接连接(即跳层连接),这种设计使得各层间能够实现信息的有效传递
基于这一认识,作者提出思路一:通过构建一个全连接层间信息传递机制(即将所有匹配大小的特征图直接相连)来实现各层间的高效信息传递【原文表述需优化
1°DenseNet架构
非线性环节
基于上述两种核心思路,在完成现有架构的基础上作者实现了他与现有架构之间的差异,并提出了DenseNet这一全新网络结构。
在传统CNN架构中,在每一步处理流程中都会生成一个特征图,在传统的级联结构中将当前层生成的特征图传递给下一层作为输入。
而DenseNet则将当前层提取的所有特征图依次输入到后续每一层中。
考虑经过CNN处理的一张单张图片X₀。
网络由L个连续的卷积层构成,
每个卷积层均配备了一个非线性激活函数Hl(·),其中Hl代表第l个卷积操作(可选操作包括Batch Normalization、ReLU、池化操作以及Convolution操作)。
其中第l个卷积操作输出的结果记为Xₗ。
在此基础之上,
传统前馈卷积神经网络采用的是逐级递进的方式,
即第l+1个卷积操作会直接接收第l个卷的操作结果,
其数学表达式为:
Xₗ = Hl(Xₗ₊₁)
而在ResNet模型中,
为了缓解梯度消失问题,
采用了跳跃连接的方式,
使得每个卷积操作不仅接收来自上一层的信息,
还会直接继承上一层输出的信息,
其数学表达式为:
Xₗ = H_l(X_{l-1}) + X_{l-1}
这种设计类似于电流分离直流分量的方式,
能够增强梯度流动从而提高训练效率。
然而作者认为单纯的叠加方式可能会抑制各通道之间的信息交流。(这让我难以理解)
而在DenseNet设计中,
这种叠加关系被扩展到了多个通道之间:
其数学表达式为:
Xₗ = H_l([X₀, X₁, …, X_{l-1}])
实验定义的操作H_l(·)由三个连续的操作组成:
BN - ReLU - Conv

池化层
如果来自各个先前各的特征图size存在差异,则无法统一作为某一层的输入。
其

增长率
输入原始图像后,在第一层卷积操作中生成了k₀张初步特征图。随着网络层次的逐步深入(即经过每一层非线性变换H(·)),系统会持续地在每个阶段生成K张新的特征图。因此,在第m层时共有k₀ + k×(m−1)个特征图作为输入依据。其中k值越大,则模型FM数量越多、规模越大。
进一步缩小参数量
瓶颈层
虽然每层仅生成K张新的特征图似乎不够多,在执行该层的BN-ReLU激活之后再插入一个缩减通道数量的操作以进一步优化网络性能。具体而言,在执行当前层的BN-ReLU激活后,在其前面依次添加两个连续的可学习参数化投影层(PPR)。这样做的目的是为了更好地调节各通道之间的关系并提升模型性能表现
压缩
通过压缩过度层中的FM数量来降低其规模。设一个密集块包含m个FM作为输入,在经过处理后会产生θm张FM作为输出(其中0<θ<1 ,θ代表紧凑率)。
在DenseNet-C架构中,默认将θ设定为0.5。
当模型同时配置有瓶颈层与压缩层时,则将其命名为DenseNet-BC。
在实验环节中,作者通过调节增长率k以及层数L等超参数进行了多轮实验。具体实验细节因篇幅限制此处略做概述,请参阅论文内容。完整的网络架构配置信息则完整展示于表1中。

2°实验结果
研究集中在四个知名的数据集上:CIFAR10、CIFAR100、SVHN和ImageNet。通过符号表示的数据增强方法中,“C10+”代表经过增强处理后的CIFAR10。该模型的表现无可质疑地优于当前的先进水平(在多个基准测试中超越了ResNet)。参考论文中的详细结果

- 没有压缩或瓶颈层时,令L和k增加(模型更为庞大),DenseNets表现更好。 这说明,if DenseNets go deeper, ACC。
- 即使DenseNet 变得很深(100+),优化起来也不困难 收敛快。
- 参数少,效率高。瓶颈层和过渡层进一步缩减了参数规模,亦即进一步增加了参数效率。参数少,效率高。瓶颈层和过渡层进一步缩减了参数规模,亦即进一步增加了参数效率。
- 瓶颈层和过渡层压缩可以有效解决过拟合问题瓶颈层和过渡层压缩可以有效解决过拟合问题。
3°总结
摘要中,作者总结了DenseNet的几项优势:
- 其中一项显著优势是缓解了梯度消失问题;
- 另一项是增强了特征间的传播;
- 同时提升了特征的整体利用效率;
- 这一设计在一定程度上减少了网络参数数量;
随后提出了一个反直觉的问题:为何密集结构能够减少参数数量呢?答案显而易见:密集结构虽然网络深度较低(每层网络通道数明显减少),但每层新增K个通道——远少于传统CNN各层可能拥有的上百通道数目。

作者所设计的这种巧妙的结构,在每层学习中提取的学习特征都被记录为历史信息,并被后续层作为输入数据使用。这些特征成为后续层的输入数据时的优势在于其数量明显少于传统方法通过级联和重新学习得到特征的数量,并且其效率更高一些。这是因为该结构具有的内在特性,在逐层推进的过程中所需通道数量大幅减少。(直觉上感觉这种网络架构与序列模型的思想非常接近:通过多个函数组合不断逼近目标函数)
作者指出稠密连接的网络架构隐含着深度监督机制的存在,并对此有深刻的体会。因此在此分享原文内容。
隐含的深度监督
对密集卷积网络的改进性能的一种可能解释是各层通过较少层间连接从损失函数获取额外监督信息。可以说DenseNets在执行一种"深度监督"机制。已有研究表明,在深度监督网络(如DSN; [20])中增加了分类器到每个隐藏层以促进深层特征学习其优势显而易见。然而DenseNets采用了一种隐式的方式类似于深度监督:网络顶端的单一分类器通过最多两个或三个过渡层对所有层进行直接监督从而实现了对深层表示的有效指导尽管如此但由于所有层共用相同的损失函数其计算复杂度相对较低避免了像DSNs那样在每个层次上都增加计算负担
完~
Thnks for reading
附录
论文的主要作者为康奈尔大学博士后高浩博士(Gao Huang),清华大学学生刘壮(Zhuang Liu),Facebook人工智能研究院研究员拉尔文·范德马伦(Laurens van der Maaten)以及康奈尔大学计算机系教授克利安·Q·温伯格(Kilian Q. Weinberger)。
