zoukankan      html  css  js  c++  java
  • DenseNet——Densely Connected Convolutional Networks

    1. 摘要

    传统的 L 层神经网络只有 L 个连接,DenseNet 的结构则有 L(L+1)/2 个连接,每一层都和前面的所有层进行连接,所以称之为密集连接的网络。

    针对每一层网络,其前面所有层的特征图被当作它的输入,这一层的输出则作为其后面所有层的输入。

    DenseNet 有许多优点:消除了梯度消失问题、加强了特征传播、鼓励特征复用并且大大减少了参数的数量。

    2. 介绍

    随着卷积神经网络变得越来越深,一个新的问题出现了:输入信息或者梯度在很多层之间传递的过程中会渐渐消失并且被洗掉。很多最近的工作都在尝试解决这个问题,它们都有一个共同的特点:在前面的层和后面的层之间创建捷径,也就是跳跃连接。

    在本文中,作者则将这种认识提炼成一种简单的连接模式:为了保证网络中层与层之间最大的信息流动,我们直接把特征图大小匹配的所有层直接相连。

    如上图所示,每一层都获取其前面所有层的特征图作为输入,并且将自己的特征图作为随后所有层的输入。但是,不同于 ResNet,作者是将特征按照通道拼接在一起而不是通过相加的操作。

    这种密集连接模式的一个反直觉效果可能是它需要比传统卷积网络更少的参数,因为不需要重新学习冗余特征映射。传统的网络结构可以看作是一个具有状态的算法,每一层都读取它前面层的状态并且向下一层写入一个新的状态。改变状态的同时也需要传递一些需要保留的信息。ResNet 通过相加的恒等映射来保留信息,但是一些研究表明很多层贡献非常小甚至可以被随机丢弃掉。但是,DenseNet 的结构明确区分了要添加到网络的信息和保留的信息,因此它的网络非常窄(例如,每层 12 个卷积核),只为网络的“集体知识”添加一小组特征图,并保持其余的特征图不变,而最终的分类器则根据网络中的所有特征图来决策。

    除此之外,DenseNet 的一大优势是它改善了整个网络中信息和梯度的流动,使其易于训练。每一层网络都可以直接访问到原始的输入信号,以及来自于损失函数的梯度,这有助于更深的网络架构的训练。而且,密集的连接也具有正则化的效果,这减小了在较小数据集上任务的过拟合风险。

    相较于之前的设计通过特别深或者特别宽的结构来获取表示能力,DenseNet 则通过特征复用来开发网络的潜力,从而产生了易于训练和高参数效率的压缩模型。将不同层学习到的特征图拼接在一起增加了后续层输入的变化并提高了效率。

    3. 网络结构

    • Dense connectivity

    第 L 层网络接受其前面所有层网络的特征图作为输入,

    为了便与实现,作者将多个输入直接拼接成一个张量。

    • Composite function

    H 则是一个包含连续三个操作的复合函数:BN,ReLU,以及一个 3×3 的卷积。

    • Pooling layers

    特征图大小不一致时我们就无法进行对它们进行拼接了,但是卷积神经网络中必要的下采样层一定会改变特征图大小。因此,作者将网络划分为几个密集连接块,块与块之间的层称之为过渡层,来进行卷积和池化。作者实验中的过渡层采用的是 BN、1×1 的卷积以及 2×2 的平均池化。

    • Growth rate

    在一个 Dense 块内,如果每一层网络产生 k 个特征图,那么经过 L-1 层网络后,输入的特征图就会增加 k*(L-1) 个,作者将超参数 k 称之为网络的增长率。DenseNet 与现有网络结构的一个不同就是它的网络层可以非常窄,作者发现一个相对比较小的增长率就足以取得最好的结果。

    • Bottleneck layers

    在 3×3 的卷积前面引入 1×1 的卷积可以减少特征图的数量,因此提升计算效率。作者将这种引入了瓶颈结构的模型称之为 DenseNet-B,它们的结构是这样的:BN-ReLU-Conv(1×1)-BN-ReLU-Conv(3×3),其中,1×1 的卷积输出 4*k 个特征图。

    • Compression

    为了进一步提升模型的紧凑性,在过渡层也可以对特征图数量进行减少。如果一个 Dense 块有 m 个特征图,我们让紧随其后的过渡层产生 am 个特征图。0<a<= 1,a=1 时,特征图适量保持不变。a<1 时的模型称之为 DenseNet-C。如果瓶颈层和过渡层的 a 都小于 1,这时的模型称之为 DenseNet-BC。

    • Implementation Details

    4. 实验结果

    4.1. CIFAR and SVHN 分类

    在没有压缩和瓶颈层的情况下,DenseNets 随着网络层数和增长率的增加表现逐渐变好,作者将此归结为网络容量增加的结果。

    我们的 250 层模型只有 15.3M 个参数,但却比 FractalNet 和 Wide ResNets 这些拥有超过 30M 参数的模型表现要好。

    4.2. ImageNet 分类

    DenseNet 在更少的参数量下取得了比 ResNet 更好的效果,而且这是在超参数针对 ResNet 最优的情况下测试的,也就是说,DenseNet 仍然还有进步空间。

    5. 讨论

    • Model compactness

    DenseNet-BC 要达到和 ResNet 一样的效果,只需要其三分之一的参数量即可。

    • Implicit Deep Supervision

    对 DenseNet 准确率提升的一种解释可能是各个层都通过跳跃连接接受到来自损失函数的额外监督,这可以理解为 DenseNet 执行了一种“深度监督”。

    • Feature Reuse

    其中,(l, s) 位置的颜色代表 l 层利用 s 层的特征图的程度,越接近红色,说明利用越强。可以发现:

    1. 所有层都将权重分布在同一 Dense 块内的许多输入上,这表明由非常早的层提取的特征实际上可以直接被深层使用。
    2. 过渡层也将权重分布在前面 Dense 块内的所有层上,这表明在 DenseNet 中信息大都可以直接从第一层流到最后一层。
    3. 第二三个 Dense 块对上一个过渡层的输入分配了最少的权重,说明过渡层有大量冗余特征,这也就是 DenseNet-BC 中采取压缩的好处。
    4. 分类层的权重更集中于最后一层的特征,说明这里可能有更多高层次的特征。

    获取更多精彩,请关注「seniusen」!

  • 相关阅读:
    Serverless Wordpress 系列建站教程(五)
    剑指 Offer 13. 机器人的运动范围
    剑指 Offer 12. 矩阵中的路径
    网络相关知识
    网络相关知识(TCP部分)
    笔试中的流程控制题
    笔试:一些怕忘掉的基础东西
    笔试:处理输入基础
    设计模式:行为型->观察者模式
    设计模式:结构型->代理模式
  • 原文地址:https://www.cnblogs.com/seniusen/p/10793035.html
Copyright © 2011-2022 走看看