ResNet50 漫游:跳接让它能堆 50 层

2015 年的经典:4 个阶段共 16 个瓶颈块,每块三层卷积加一条跳接,2560 万参数;结构图按论文的画法一条线摆开,点哪一层,哪一层就摊开露出真实的卷积核、BN 参数和特征图

此刻
从左到右一条线,每块板就是一层:板高=这一层的分辨率,板厚=通道数,颜色区分卷积、ReLU、池化、全连接,下方标着每个 block 的通道数卷积池化全连接跳接点任意一块板(或按「下一步」),那一层就摊开,露出它的真实卷积核与这张照片在这一层的特征图

怎么做

  1. 一块板就是一层板高=分辨率,板厚=通道数,颜色区分卷积、BN、ReLU、全连接;上方的粉色弧线是跳接。这就是论文里画 ResNet 的那张图
  2. 点开一层,才看细节摊开后板上方浮出这一层的真实卷积核、BN 的四组参数和这张照片的特征图;不点的时候结构一条线,50 层一眼看完
  3. 一个块 = 1×1 降维 → 3×3 → 1×1 升维中间那层用少量通道做 3×3,两头用 1×1 换通道数。1×1 的核画出来是一根柱子:它不看邻居,只把各通道加权
  4. 跳接:输入直接加到输出上每个瓶颈块最后把块的输入加回来再 ReLU,网络只需学「改多少」,所以能堆到 50 层、152 层。虚线弧表示这条跳接自己也要过一个 1×1 卷积换形状

会骗你

  • 通道数在换的那一块,跳接也要变每个阶段第一块的输入和输出形状不同,跳接走一条 1×1 卷积(粉色管子),不是直接加
  • 块的厚度是压过的通道数按对数画,不然 2048 通道的块会长得排不下;块上的数字写的是真实通道数
  • BN 不是可有可无每层卷积后都有批归一化,没有它这么深训不动;页面把 γ、β、μ、σ² 四组真实参数都画出来了
  • 画出来的核只是一小撮每层只画激活最强的 8 个核、每个核只画前 8 层;折叠起来的块不画核,真实数量写在小字里
  • 参数只有 VGG 的五分之一,却更准全局平均池化替掉了大全连接层,2560 万参数比 VGG16 的 1.38 亿小得多

瓶颈块是「降维、卷积、升维、加回输入」,跳接让深度不再是负担;ResNet 之后,几乎所有深网络都带残差。

文字版:ResNet50 漫游在做什么

网络堆得越深越难训练——这曾经是个硬墙。ResNet 用一条「捷径」绕过每个块:主路算出来的结果和原封不动传过来的输入逐元素相加,于是主路只需要学「差多少」而不是「是什么」。这一页把 ResNet50 的四个残差阶段全部展开,可以逐块查看真实数值。

画面上正在发生什么

看任意一个残差块:青色的主路做三次卷积(1×1 降维、3×3 处理、1×1 升维,这就是「瓶颈块」的由来),绿色的捷径从同一个输入分出去,绕过主路直接进入加号。两路的宽、高、通道必须完全相同才能相加——页面在每个加号处都标出了三个尺寸,形状对不上时就需要捷径上那个 1×1 的投影卷积。

整个网络分四个阶段,分别含 3、4、6、3 个残差块,共 16 块。每进入下一阶段,宽高减半、通道翻倍:56²×256 → 28²×512 → 14²×1024 → 7²×2048。最后做全局平均池化,2048 个数直接接到 1000 类。注意这里没有 VGG 那样的大全连接层,参数量因此比 VGG16 还少。

什么时候它会骗你

  • 残差解决的是优化问题,不是表达能力问题。理论上深层网络的表达能力本来就不弱于浅层,问题在于训不动。捷径提供了一条让梯度直接回传的通路,使得深层网络终于能被有效训练——这是工程问题的解法,不是表示论的突破。
  • 恒等捷径和投影捷径不是一回事。页面区分了两种:形状相同时捷径什么也不做(恒等),这是理想情况;每个阶段的第一个块要改变形状,捷径上必须加一个 1×1 卷积做投影。投影引入了额外参数,也削弱了「无损传过去」这个性质。
  • 层数不是越多越好。ResNet 有 18、34、50、101、152 等多个版本。更深的版本更准,但训练和推理成本更高,在小数据集上还更容易过拟合。选哪个取决于数据量和算力。

常见问题

残差连接为什么能让网络训得更深?
因为它给梯度提供了一条几乎无衰减的回传路径。反向传播时梯度可以沿捷径直接流到前面的层,不必逐层连乘,大幅缓解了梯度消失。同时主路只需拟合「残差」——当最优解接近恒等映射时,把主路权重压到接近 0 比学出一个恒等映射容易得多。
瓶颈块为什么要先降维再升维?
为了省计算。直接在 256 通道上做 3×3 卷积代价很高;先用 1×1 降到 64 通道,做完 3×3 再用 1×1 升回 256,总计算量显著下降而表达能力损失很小。ResNet50 及更深的版本都用这个结构。
ResNet 和 VGG 该怎么选?
几乎所有需要分类准确率的场景都应优先考虑 ResNet:它更深、更准,参数量反而更少(因为用全局平均池化替代了大全连接层)。VGG 的价值现在主要在教学和作为固定特征提取器。

本页数据由 torchvision ResNet50(V1.5)对四张固定照片离线实跑导出,188 个步骤逐层保留 8 个通道并做了缩小与 8 位量化;逐步计算结果与完整前向对账一致。

作者与维护:覃秉丰 · 关于覃秉丰 · 引用本页讲解

继续学习