一句话定义:ResNet(Residual Network,残差网络)是一种把“残差连接”作为基本组件的神经网络结构,它让网络在加深时学到的至少不会比浅层更差,从而把几十层、上百层的模型真正训练起来。
深层网络的核心问题是优化,而加深本身并不是目标
在 ResNet 之前,人们发现一件反直觉的事:把网络简单堆深,训练误差反而可能变大。这并非过拟合,因为过拟合是训练集表现好、测试集表现差;其真正原因是网络难以优化:深层网络很难学出“恒等映射”,也就是让新增的层原样输出、不做改变。
打个比方:公司招新人做流程改进。每来一个人,都要重新写一份完整方案。哪怕他其实没什么好改的,也得把老方案一字不差默写出来,这很难,稍不留神就写错。ResNet 的做法是换一种交代方式:新人只需要写“改动意见”,最终方案=原方案 + 改动。
设某几层原本要学的映射是 H(x),ResNet 让它们改学残差 F(x) = H(x) − x,输出变成 F(x) + x。其中 x 通过一条“捷径”(shortcut / skip connection)原封不动传到后面,这条捷径通常不带参数。于是“什么都不改”这个最保守的方案,只需要把 F(x) 的权重压到接近 0 即可,优化难度大幅下降。
反向传播时也受益:梯度可以沿捷径直接回流到浅层,不必层层连乘,削弱了梯度消失的影响。
和相邻概念的区别
| 普通堆叠(plain) | 残差连接(residual) | |
|---|---|---|
| 每层要学的东西 | 完整映射 H(x) | 残差 F(x) = H(x) − x |
| 实现“原样输出” | 需要权重恰好拟合出 x,很难 | 把 F(x) 压到 0,很容易 |
| 加深后的典型表现 | 训练误差可能不降反升 | 至少不比浅层差 |
| 梯度回传 | 逐层连乘,容易衰减 | 有直通通路 |
容易混淆的几个邻居:BatchNorm、AI 词典:Dropout">Dropout 是在数据和激活上做归一化或正则,改变的是“数值分布”;残差连接改的是“连接拓扑”。Highway Network 也引入了旁路,但门控由网络自己学,带参数;ResNet 的捷径是无参恒等,简单且好优化。DenseNet 把前面所有层的输出拼接起来,ResNet 是逐元素相加。
对从业者和普通人的意义
对从业者,残差连接已经是默认组件:图像分类、检测、分割模型的骨干网络普遍使用残差块,连 Transformer 的每个子层也都挂着 x + Sublayer(x)。调模型时,“加个 shortcut 看梯度能不能流下去”几乎是条件反射。
对普通人,它的意义在于:更深的模型能表达更复杂的模式,人脸识别、医学影像辅助诊断、拍照翻译这类应用背后,往往就有这些能稳定训练的超深网络。需要说明的是,具体结构变体与实现细节以官方论文和框架文档为准。
最后记住那个反直觉的要点:ResNet 的贡献在于改掉了“加深就要重新学一遍”的坏习惯,因此“加深”本身并不是它的贡献。深度只有配上好的优化路径,才会变成能力。
