深度学习:DenseNet思想总结
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
深度学习DenseNet思想总结
前言
论文中提出的架构为了确保网络层之间的最大信息流将所有层直接彼此连接。为了保持前馈特性每个层从前面的所有层获得额外的输入并将自己的特征映射传递到后面的所有层。该论文基于这个观察提出了以前馈的方式将每个层与其他层连接的密集卷积网络(DenseNet)。
DenseNet
ResNet
在原始的神经网络中假设第l层的function 为
H
l
H_l
Hl,那么第l层的output
x
l
=
H
l
(
x
l
−
1
)
x_l=H_l(x_{l-1})
xl=Hl(xl−1),ResNet在网络中加入了identity mapping的机制于是
x
l
=
H
(
x
l
−
1
)
+
x
l
−
1
x_l = H(x_{l-1})+x_{l-1}
xl=H(xl−1)+xl−1。
ResNet的优势是缓解了梯度消失让训练更稳定但是 identity mapping 采用了add 融合的机制可能会阻碍信息流动。
Dense connection
为了进一步的优化信息流动作者提出了不同的连接形式如上图每一层的输出都会直接传递到的后面所有网络每一层的输入汇聚了前层所有的输出这也是densenet的dense的由来公式如下
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......xl−1])
其中跨层连接不在像ResNet采用add融合而是Concat融合feature map
Composite function
这里作者对H()做了一个解释这个函数分为三个操作包括BN层ReLU激活函数3 * 3 Conv。
Pooling layers
由于跨层连接要求feature map的宽高一致但是down- sampling在网络中也是必不可少的所以引入了pooling layer也叫做 transition layer来对feature map下采样这个网络层由 BN层 +1 * 1Conv +2 * 2 的average pooling layers。
Growth rate
这里我们定义了一个超参数k他表示dense block中每层的channels数也是卷积核的数量假设dense block中input channels 为 k0那么这个block第 l层的channels为k0+k(l-1)。k越大代表每一层可以获得多少新的信息block最后output的channels也就越大于是我们把 k也叫做 growth rate。
Bottleneck layers
bottleneck 与resent的基本一致没3 * 3 的Conv前面引入了 1 * 1的 Conv那么我们定一个新的结构
BN+ReLU+ 1 * 1Conv + BN +ReLU +Conv3 * 3叫做DenseNet-B。
Compression
没了进一步压缩模型我们可以减少feature map的数量在 transition层如果densenet block的output为 m 个feature map那么通过transition后channels变为theta * m其中 theta为0到1之间的数。作者在实验中theta设置为0.5把bottleneck+transition 叫做 DenseNet -BC。
Implementation Details
总结
- DenseNet的跨层连接为concatResNet为add。
- DenseNet提升了梯度的利用率loss可以获得前面每一层的梯度网络的层数更多了。
- DenseNet致力于特征reuse提高网络性能。
- DenseNet的dense connection有正则化的作用。