当特征映射的大小改变时,上式中使用的连接操作是不可行的。然而,卷积网络的一个重要部分是改变特征映射大小的下采样层。为了简化架构中的下采样,我们将网络划分为多个紧密连接的密集块;将块之间的层称为过渡层,它执行卷积和合并。实验中使用的过渡层由批量归一化层和1×1卷积层以及2×2平均池化层组成
3个dense blocks组成的一个深度DenseNet
Growth rate
当每个 \(H_i\) 都产生 \(k\) 个特征映射时,它表示第 \(i\) 层有 \(k_0 + k * (i - 1)\)个输入特征映射, \(k_0\) 表示输入层的通道数。DenseNet与已存在的架构的不同在于DenseNet可以有很窄的层,eg: \(k = 12\)。将超参数 \(k\) 称为网络的 growth rate。下表将显示一个相对较小的growth rate就能够获得很好的结果
\(k = 32\) conv层表示BN-ReLU-Conv
对此的一种解释是每个层可以访问其块中的所有前面的特征映射,因此可以访问网络的“集体知识”。人们可以将特征映射看作网络的全局状态。每个层将自己的 \(k\) 个特征映射添加到这个状态。增长速度控制着每一层新信息对全局状态的贡献。全局状态一旦写入,就可以从网络内的任何地方访问,并且与传统网络体系结构不同,不需要逐层复制它
Bottleneck layers
虽然每一层只产生k个输出特征映射,但它通常具有更多的输入。有文章中指出,在每3×3卷积之前可以引入1×1卷积作为瓶颈层,以减少输入特征映射的数量,从而提高计算效率。研究发现这种设计对于DenseNet特别有效,并将具有瓶颈层的网络称为DenseNet-B,即具有BN-ReLU-Conv(1×1)-BN-ReLU-Conv(3×3)版本的\(H_i\)
Compression
为了进一步提高模型的紧凑性,可以减少过渡层上的特征映射的数量。如果一个dense block包含 m 个特征映射,可以让紧跟着的变化层生成 \(\lfloor \theta_m \rfloor\)个输出特征映射, $ 0 < \theta \leq 1$作为压缩因子。当 \(\theta = 1\) 时,跨转换层的特征映射的数量保持不变
Discussion
从表面上看,DenseNets非常类似于ResNets,区别仅在于计算 \(H_i(.)\)时使用的是串联而不是求和。然而,这个看似很小的修改的含义导致了两个网络体系结构的实质上不同的行为
模型紧凑性
作为输入级联的直接结果,任何DenseNet层学习的特征映射都可以被所有后续层访问。这鼓励在整个网络中的特性重用,并导致更紧凑的模型
隐性深度监督
对于提高密集卷积网络精度的一种解释是,各个层通过较短的连接从损失函数接收额外的监督。可以将DenseNets解释为执行“深度监管”。深层监控的好处以前在深层监控网络中已经显示出来,深层监控网络具有附加到每个隐藏层的分类器,从而强制中间层学习区分特征
DenseNets以隐式的方式执行类似的深层监控:网络顶部的单个分类器通过最多两个或三个过渡层对所有层提供直接监控。然而,由于所有层之间共享相同的损耗函数,因此DenseNets的损耗函数和梯度基本上不那么复杂
随机与确定性连接
在随机深度,残差网络中的层被随机丢弃,从而在周围层之间建立直接连接。由于池化层从未被丢弃,因此网络产生了与DenseNet类似的连接模式:如果所有中间层被随机丢弃,那么在同一池化层之间的任何两层被直接连接的概率都很小。虽然方法最终完全不同,但随机深度的密集网解释可能为该正则化器的成功提供见解
特征复用
通过设计,DenseNets允许层访问来自其所有先前层(尽管有时通过转换层)的特征图。通过实验可以得出以下结果
所有层将权重分散在同一块内的许多输入上。这表明,由非常早期的层提取的特征实际上被整个同一dense block的深层直接使用
过渡层的权重还将它们的权重分布在前面密集块内的所有层上,指示信息从DenseNet的第一层到最后一层通过很少的间接流动
第二密集块和第三密集块内的层始终向过渡层的输出(三角形的顶行)分配最小的权重,指示过渡层输出许多冗余特征(平均权重较低)
尽管最终分类层也使用整个密集块的权重,但是似乎存在对最终特征映射的集中,这表明可能在网络后期产生一些更高级的特征
结论