标准回答
共同动机
两者都为解决深层网络的梯度消失、改善信息与梯度在层间的流动,让网络可以做得更深。
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 层压缩通道,使总参数量在同等精度下小于很多传统网络;代价是拼接带来的中间特征显存开销大。
追问 2:ResNet 的恒等映射为何能缓解梯度消失?
加法跳连在反向传播时给梯度提供了一条「+1」的恒等通路,梯度可以绕过中间非线性变换直接回传到浅层,避免连乘小于 1 的雅可比导致梯度指数衰减,从而让上百层网络也能稳定训练。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。