深度学习网络篇——DenseNet

2023年8月2日09:06:34

友情提示:请配合原文食用。

论文:Densely Connected Convolutional Networks
论文链接:https://arxiv.org/pdf/1608.06993.pdf
代码的github链接:https://github.com/liuzhuang13/DenseNet


0° Motivation

硬件突破和大数据集的完善,使原本凉凉的深度学习重新火了。自LeNet以后,学者一直致力于更好地提取特征,继而提出了多样的架构。虽网络各异,但总不过是令深网更深,通道更多。
然而,思路上革命性的创新(break point) 当属何恺明于2015年提出的残差网络ResNet。虽然ResNet的核心驱动,仍然是令深网有效地变深(让变深有收益,伴随Go Deeper, 准确率会提高),但提出的残差思路,实为一种突破性的贡献。
深网更深,凸显出一个关键问题:梯度消失。本文作者cue了一下ResNet, HighwayNet, FranctalNet 和随机深度网络。分析出共性:在网络架构上,都创造了shortcut。(这是一种 skip-connection,当前层提取结果直传到下一层)。作者领会了一下这么干的核心精神,然后得出了思路一
尽力确保 最大化的 层级之间的 信息流动。网络中所有层互相直连。
(原文:to ensure maximum information flow between layers in the network, we connect all layers (with matching feature-map sizes) directly with each other.)
通过训练时随机弃用某些层,随机深度改善了训练。这表明 深网中某些层对提高表现贡献甚微,深网是一种冗余结构。另一方面,受GoogLeNet和FractalNet的启发,作者认为 只要深网够深,这时仅仅增加层内的通道数,就可以提高性能了(没必要动辄成百上千层)。综合这两点,产生了思路二
并不极端地令深网更深,通道更多,而是通过特征再利用,提出了一种密集的压缩模型。


1°DenseNet架构

非线性环节

根据上述两大思路,作者做出了他的difference, 提出了DenseNet新架构。
传统CNN每一层前进后,都会产生output,即特征图。这种级联结构,当前层的结果特征图,运至下一层,作为下一层的输入。而DenseNet则是将当前层得到的特征图,输入到所有后续层。显然,对于一个L层网络,传统CNN包含L个层际之间的连接,而DN共包含 1 + 2 +…+L = L(L + 1)/2个层际连接。
考虑 经过CNN的单张图片,记作X0 。网络共L层,每一层都具备一个非线性环节,记作Hl(·) (P.S.函数H(·)下标l表示层数) (非线性环节可以是BN操作、ReLU、池化、Conv)。 记第l层输出为Xl
传统前馈卷积网络,将第l层的输入直接输入到l+1层,

X

l

=

H

l

(

X

l

+

1

)

X_l = Hl(X_l+1)

Xl=Hl(Xl+1)
而ResNet中, 进行了跳跃直连,输入变为

X

l

=

H

l

(

X

l

1

)

+

X

l

1

X_l = H_l(X_l-1) + X_{l-1}

Xl=Hl(Xl1)+Xl1
有如电流中分离出直流分量,这种操作加大了梯度流动,使训练更为容易。但作者认为单纯地以这种求和方式累加Hl(Xl-1)和Xl-1 会阻碍网络中的信息流动。(我get不到这一点)
在DN中,这种操作变成了

X

l

=

H

l

(

X

0

,

X

1

,

X

l

1

)

X_l = H_l(X_0, X_1 …, X_{l-1})

Xl=Hl(X0,X1,Xl1)
实验中定义了操作Hl(·),它由3个连续操作组成,顺序是:BN - ReLU -Conv
深度学习网络篇——DenseNet

池化层

如果来自先前各的特征图size不同,那么就不能统一作为某一层的输入了。 然而,CNN不能避免通过池化,实现下采样降维。为解决这一矛盾,我们将网络划分为多个密集连接的密集块。 见图2。
指定密集块与块之间的层为过渡层,该层可以进行卷积核池化。每个密集块是一个”微型DenseNet”。每个密集块中特征图大小统一,降维操作则是通过块与块之间的过渡层实现。本实验中,过渡层为:BN + 1×1卷积 + 2×2池化。
深度学习网络篇——DenseNet

增长率

输入原始图片,初始进行一次卷积生成k0 张特征图。随后每前进一层,即经过一次非线性环节H(·),就新生成K张特征图。显然,则第m层一共拥有k0 + k×(m-1)个特征图作为输入。实际上,k是衡量整个网络增长率(网络架构大小)的超参数。(k越大,FM越多,模型越庞大)。实验表明,即使很小的增长率,就足矣获得好结果了。

进一步缩小参数量

瓶颈层

尽管每前进一层,只产生K张新特征图,还是嫌多。在进行3×3卷积之前先用一个 1×1卷积将输入个数降低到 4*k。修改原有的非线性环节。从BN-ReLU-Conv(3×3)变成了

H

l

(

)

=

B

N

R

e

L

U

C

o

n

v

(

1

×

1

)

B

N

R

e

L

U

C

o

n

v

(

3

×

3

)

H_l(·)= BN-ReLU-Conv(1×1)-BN-ReLU-Conv(3×3)

Hl()=BNReLUConv(1×1)BNReLUConv(3×3)将此种结构记作DenseNet-B。

压缩

于过度层中减少FM数目。设一个密集块中含有m个FM作为输入,我们希望产生θm张FM作为输出。( 0<θ<1 ,θ表示紧凑率)。
在DenseNet-C中,我们令θ=0.5。
当模型结构即含瓶颈层,又含压缩层时,我们记模型为DenseNet-BC。
实验中,作者调整了超参数:增长率k和层数L,进行了多组实验。具体实验细节此处略去,详情见论文。实验中全部网络配置见表1。
深度学习网络篇——DenseNet


2°实验结果

实验主要针对四大主流数据集:CIFAR10、CIFAR100、SVHN、ImageNet。
(由’+’表示数据增强, 如C10+ 表示数据增强过的CIFAR10)
模型表现就别问,问就是领先于state-of-art。(主要是全面击败了ResNet)
(实验结果详情此处略 参见原论文表2)
深度学习网络篇——DenseNet

  1. 没有压缩或瓶颈层时,令L和k增加(模型更为庞大),DenseNets表现更好。 这说明,if DenseNets go deeper, ACC。
  2. 即使DenseNet 变得很深(100+),优化起来也不困难 收敛快。
  3. 参数少,效率高。瓶颈层和过渡层进一步缩减了参数规模,亦即进一步增加了参数效率。参数少,效率高。瓶颈层和过渡层进一步缩减了参数规模,亦即进一步增加了参数效率。
  4. 瓶颈层和过渡层压缩可以有效解决过拟合问题瓶颈层和过渡层压缩可以有效解决过拟合问题。

3°总结

摘要中,作者概括出DenseNet的几个优点:
1、减轻了vanishing-gradient(梯度消失)
2、加强了feature的传递
3、更有效地利用了feature
4、一定程度上较少了参数数量
最后,还遗留一个反直觉的问题:为什么稠密的结构,连接更紧密了,反而参数会变少了呢? 答案十分显然:稠密结构网络深度较低,每层网络的通道数也明显变少-----每层新增K个通道,而传统CNN各层很容易出现上百的通道。
与ResNet参数对比 见图4
深度学习网络篇——DenseNet
作者提出的这种巧妙的结构,每层学习到的特征,都作为一种历史记录。他们共同作为后继层的输入,显然这比传统的级联并重新学习出特征要效率高的多。因为这种结构特性,每层前进时,需要的通道数也明显变少。(直觉上,我感觉这种结构的网络,和级数的思想很近。通过若干个函数的组合来不断逼近目标函数)
作者陈述了稠密结构会带来一种隐含的深度监督,我么得get到,故于此贴上原文。

隐含的深度监督

对密集卷积网络的改进精度的一种解释可能是各个层通过较短的连接从损失函数接收额外的监督。 人们可以解释DenseNets执行一种“深度监督”。 先前已经在深度监督的网络(DSN; [20])中展示了深度监督的好处,这些网络将分类器附加到每个隐藏层,强制中间层学习辨别特征。
DenseNets以隐式方式执行类似的深度监督:网络顶部的单个分类器通过最多两个或三个过渡层为所有层提供直接监督。 然而,DenseNets的损失函数和梯度基本上不那么复杂,因为在所有层之间共享相同的损失函数。


完~

Thnks for reading


附录

论文作者:
康奈尔大学博士后黄高博士(Gao Huang)
清华大学本科生刘壮(Zhuang Liu)
Facebook 人工智能研究院研究科学家 Laurens van der Maaten
康奈尔大学计算机系教授 Kilian Q. Weinberger
相关:http://iiis.tsinghua.edu.cn/show-6425-1.html
论文相关文献:
[11]K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. In CVPR, 2016. 1, 2, 3, 4, 5, 6
[13]G. Huang, Y. Sun, Z. Liu, D. Sedra, and K. Q. Weinberger. Deep networks with stochastic depth. In ECCV, 2016. 1, 2, 5, 8
[17]G. Larsson, M. Maire, and G. Shakhnarovich. Fractalnet: Ultra-deep neural networks without residuals. arXiv preprint arXiv:1605.07648, 2016. 1, 3, 5, 6
[34]R. K. Srivastava, K. Greff, and J. Schmidhuber. Training very deep networks. In NIPS, 2015. 1, 2, 5
DenseNet相关报道:
论文解读:https://www.sohu.com/a/161923204_651893
相关解读2: https://www.jianshu.com/p/28f99abcab67

  • 作者:PRIS-SCMonkey
  • 原文链接:https://blog.csdn.net/weixin_43624538/article/details/85227041
    更新时间:2023年8月2日09:06:34 ,共 3992 字。