核心要点

  • ResNet 用相加(恒等映射):输出 = F(x) + x,残差缓解梯度消失

  • DenseNet 用拼接(concat):每层接收之前所有层的特征图作为输入

  • DenseNet 特征复用强、参数量更省、梯度流更顺,但拼接使显存占用更高

  • 二者都为缓解深层网络梯度消失、提升信息/梯度流动而设计

标准回答

共同动机

两者都为解决深层网络的梯度消失、改善信息与梯度在层间的流动,让网络可以做得更深。

ResNet:残差相加

每个残差块学习残差 F(x),输出为 F(x) + x,即恒等映射加法跳连。梯度可经恒等路径直达浅层,缓解梯度消失;特征维度需对齐(必要时用 1×1 卷积调整通道)。

DenseNet:密集拼接

第 l 层接收前面所有层输出的特征图,按通道拼接(concat)作为输入。这带来:

  • 强特征复用,浅层特征被后续层直接访问;
  • 每层只需产生少量新特征(growth rate 较小),参数量反而更省;
  • 梯度流更顺畅。

代价

拼接会让通道数随深度累积增长,中间特征图显存占用更高、实现上需 transition 层(1×1 卷积 + 池化)压缩通道。详见 CNN 从 LeNet 到 ResNet

常见误区

⚠️ 常见踩坑

核心区别是「相加 vs 拼接」:ResNet 是逐元素相加、维度不变,DenseNet 是按通道拼接、通道数累积;别把 DenseNet 说成参数更多——它参数更省但显存更高。

追问

追问 1为什么 DenseNet 参数反而更省?

因为每层都能直接复用前面所有层的特征,不必重复学习冗余表示,所以每层只需输出很少的新通道(growth rate,如 12/32)。窄层叠加加上 transition 层压缩通道,使总参数量在同等精度下小于很多传统网络;代价是拼接带来的中间特征显存开销大。

追问 2ResNet 的恒等映射为何能缓解梯度消失?

加法跳连在反向传播时给梯度提供了一条「+1」的恒等通路,梯度可以绕过中间非线性变换直接回传到浅层,避免连乘小于 1 的雅可比导致梯度指数衰减,从而让上百层网络也能稳定训练。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。