ResNet残差连接为何有效?深层网络退化问题实验复现

一个反直觉的实验:深层网络为何学不好
一位正在撰写PyTorch教程书籍的开发者,在编写ResNet章节时并不满足于告诉读者"深层普通网络会变差"这一结论,而是决定亲自复现这一现象。他在CIFAR-10数据集上训练了四个网络,使用完全相同的训练配方和随机种子,唯一变化的只有网络深度和是否加入跳跃连接(skip connection)。
CIFAR-10是由Alex Krizhevsky和Geoffrey Hinton于2009年发布的经典图像分类基准数据集,包含10个类别(飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船、卡车)共60,000张32×32像素的彩色图像,其中50,000张用于训练,10,000张用于测试。虽然以今天的标准看这个数据集规模很小且图像分辨率很低,但正因如此它成为了验证网络架构设计理念的理想试验场——训练成本低、实验周转快,同时又保留了足够的复杂度来暴露深度学习中的核心问题。ResNet原始论文也正是在CIFAR-10上首次展示了退化问题。
这个实验设计的精妙之处在于变量控制的极致严格:相同的recipe、相同的seed、相同的40个epoch,排除了几乎所有干扰因素,只留下"深度"和"残差连接"两个变量。在实验方法论上,这种严格的消融实验(ablation study)设计是验证架构组件有效性的黄金标准——通过仅改变一个变量来观察其对结果的因果影响,而非在多个变量同时变化的情况下进行相关性推断。

退化问题的数据对比:更深反而更差
实验在PyTorch 2.11上运行,每个模型训练40个epoch,结果如下:
| 模型 | 参数量 | 训练准确率 | 测试准确率 |
|---|---|---|---|
| plain-20 | 269,722 | 95.1% | 88.7% |
| plain-56 | 853,018 | 84.0% | 79.9% |
| ResNet-20 | 272,474 | 97.4% | 90.4% |
| ResNet-56 | 855,770 | 99.0% | 91.7% |
关键点不在测试准确率,而在训练准确率。请注意plain-20和plain-56这两行:56层的普通网络在训练集上只达到84%,而20层的网络却达到了95%。更深的网络在它已经"看过几百遍"的照片上表现反而更差。
这不是过拟合。过拟合是训练准确率高、测试准确率低的现象;而这里连训练准确率本身都下降了。用作者的话说,这个更大的网络"连自己的作业都学不会"。在统计学习理论中,过拟合对应的是高方差(high variance)问题——模型过度记忆了训练数据中的噪声而失去了泛化能力;而退化问题对应的是高偏差(high bias)问题——模型在训练集上的表达能力就已经不足。这两者在诊断和解决方式上截然不同:过拟合通常通过正则化、数据增强或减小模型规模来缓解,而退化问题显然不能通过这些手段解决,因为问题的根源在于优化过程本身。
这一现象正是何恺明等人在其里程碑式的论文中所指出的"退化问题"(degradation problem)的经典复现。ResNet(Residual Network)由何恺明、张翔宇、任少卿和孙剑于2015年提出,论文《Deep Residual Learning for Image Recognition》在当年的ImageNet大规模视觉识别挑战赛(ILSVRC)中以3.57%的Top-5错误率夺冠,首次在ImageNet上超越了人类评估者约5.1%的错误率。这篇论文至今被引用超过20万次,是深度学习历史上被引用最多的论文之一。在ResNet之前,VGGNet(19层)和GoogLeNet(22层)已经开始探索更深的网络,但都遭遇了深度增加后性能饱和甚至退化的瓶颈。何恺明团队直接将网络深度推到了152层,并通过残差连接优雅地解决了这一问题。
为什么退化问题在数学上"不应该"发生
这个现象最令人费解的地方在于其数学上的矛盾性。理论上,一个56层网络完全可以精确复制20层网络的行为——只需将多出来的36层全部设置为恒等映射(identity mapping)。
恒等映射是指输入等于输出的变换,即f(x) = x。在神经网络的理论框架中,通用近似定理(Universal Approximation Theorem)告诉我们,具有足够宽度的单隐层网络理论上可以近似任意连续函数。推广到深度维度,更深的网络具有更大的函数空间表达能力——这就是所谓的网络容量(capacity)。按照这一逻辑,56层网络的解空间严格包含20层网络的解空间:只要额外的36层各自学到恒等映射,56层网络就退化为20层网络。然而这种"构造性证明"只说明解的存在性,完全不涉及优化算法能否在有限时间内找到这个解。这种"存在性"与"可达性"之间的鸿沟,正是退化问题揭示的深度学习中理论与实践的核心矛盾之一。这一矛盾在计算复杂性理论中也有类似的体现:我们知道NP问题的解存在且可验证,但找到这个解可能需要指数级的计算时间。虽然神经网络优化并非严格的NP难问题,但其非凸优化的本质意味着全局最优解的可达性无法得到保证。
换句话说,一个能达到95%训练准确率的解在56层网络的参数空间里本就存在,SGD只是没能找到它而已。
SGD(Stochastic Gradient Descent,随机梯度下降)是深度学习中最基础也最重要的优化算法。它通过在每个训练步骤中随机采样一小批数据(mini-batch)来估计梯度方向,然后沿梯度的反方向更新参数。然而SGD本质上是一种局部搜索算法——它只能看到当前位置附近的梯度信息,无法感知全局损失曲面的地形。损失曲面(loss surface)是指所有可能的参数组合与对应损失值构成的高维空间,其几何结构决定了优化的难度。在现代实践中,SGD通常配合动量(momentum)使用,即SGD with Momentum或其变体如Adam优化器,动量通过累积历史梯度信息帮助优化器越过小的局部极值和鞍点。然而即便如此,研究表明深层普通网络的损失曲面可能充满了"平坦区域"(plateaus)和"鞍点"(saddle points),使得SGD容易陷入次优解而无法找到理论上存在的更优解。Li等人2018年的可视化工作《Visualizing the Loss Landscape of Neural Nets》直观地展示了残差连接如何将损失曲面从崎岖不平变得光滑平坦,从而使优化变得可行——在他们的可视化中,普通网络的损失曲面呈现出复杂的多峰结构,而对应的残差网络的损失曲面则平滑如碗状,梯度下降可以轻松收敛到全局最优附近。
这正是问题的核心:问题从来不在于网络容量(capacity)。网络的容量绰绰有余,真正的障碍在于深层普通网络难以优化。这正是何恺明等人在ResNet论文中提出的"退化问题"(degradation problem)的经典再现。
排除模型规模的干扰因素
作者特意强调了一个容易被质疑的点:plain-56和ResNet-56之间仅相差2752个参数,占比约0.3%。这意味着两者的模型规模几乎完全相同。
这2752个参数的差异来自于残差连接中可能存在的维度匹配层(projection shortcut)。当残差块的输入和输出维度不一致时(例如在进行空间下采样或通道数变化时),需要通过一个1×1卷积层来调整维度,使跳跃连接中的x能与F(x)相加。这些额外的1×1卷积贡献了少量参数,但相对于整个网络85万的参数总量而言微不足道。
更有说服力的是趋势的方向性:从20层到56层,普通网络家族在训练集上变差(95.1% → 84.0%),而残差网络家族却变好(97.4% → 99.0%)。同样的两个规模,两个家族的表现却朝着相反的方向移动。
作者一针见血地指出:"规模论证无法在相同规模上给出相反的符号。"既然规模相同却出现了相反的结果,那么真正起作用的只能是跳跃连接(skip connection)。这一论证逻辑在因果推断中被称为"差异中的差异"(difference-in-differences)方法——通过观察两组在同一处理(增加深度)下的不同响应方向,排除了所有共同混淆因素(如参数规模、训练时间、学习率等),从而将效果归因于唯一的差异因素。
ResNet跳跃连接的作用机制
残差块的公式是 y = x + F(x)。这个看似简单的结构带来了两个关键优势:
梯度反向传播的"高速公路"
在反向传播时,梯度会经过 (1 + dF/dx) 中的那个"1",从而以一条直通的路径抵达早期层,而不必"幸存"于整个网络堆栈的层层衰减。残差连接为梯度流动提供了一条不会消失的捷径。
要理解这一点的重要性,需要了解梯度消失(vanishing gradients)和梯度爆炸(exploding gradients)这两个深层网络训练中的经典病理现象。在反向传播过程中,梯度需要通过链式法则逐层相乘传递。如果每一层的梯度乘子略小于1(例如0.9),经过50层后梯度会衰减为0.9^50 ≈ 0.005,几乎消失殆尽,导致早期层几乎无法更新——这就是梯度消失。反之,如果乘子略大于1(例如1.1),经过50层后梯度则会膨胀为1.1^50 ≈ 117,导致参数更新过大、训练不稳定——这就是梯度爆炸。虽然BatchNorm(批归一化,由Ioffe和Szegedy于2015年提出)在一定程度上缓解了这两个问题,通过对每层的输出进行归一化(减去均值、除以标准差)来稳定梯度的数值范围,但有研究(如Yang等人2019年的工作《Mean Field Theory of Batch Normalization》)指出,BatchNorm在训练初期可能反而引入新的梯度不稳定性,这使得退化问题的根本原因至今仍存在争议。而残差连接中恒定的"1"为梯度提供了一条不受层数影响的传播通道,从根本上绕过了这一困境。
这个"高速公路"的比喻实际上有一个更早的学术先驱:Srivastava等人在2015年提出的Highway Networks,其核心思想是通过门控机制(gating mechanism)让信息可以选择性地绕过某些层。Highway Networks的公式为 y = T(x)·H(x) + (1-T(x))·x,其中T(x)是学习到的门控函数。ResNet可以看作Highway Networks的一个简化特例——将门控固定为完全打开(T=1),即y = H(x) + x = F(x) + x。这种简化不仅减少了参数和计算量,还使得恒等路径完全畅通无阻,实践证明效果反而更好。
恒等映射成为默认解
残差结构让 F = 0 成为一个廉价的默认选项。网络可以"免费"保留恒等映射,只有在真正有帮助时才去学习额外的变换。这从根本上解决了前面提到的"SGD找不到恒等解"的优化困境。从优化的角度看,让一个由卷积层和非线性激活函数(如ReLU)组成的网络层学习精确的恒等映射是出奇地困难——网络需要将所有权重精确调整到特定值,而ReLU的单侧截断特性(负值归零)使得精确的恒等映射在理论上就不可能通过单层ReLU网络实现。但在残差结构中,恒等映射是"免费的":只要F(x)的权重接近零,整个残差块就自动退化为恒等映射。现代实践中,残差块末端的BatchNorm层通常将其缩放参数(gamma)初始化为较小的值甚至零(即所谓的"zero-init"技巧,在Goyal等人2017年的训练ImageNet的实践论文中被推荐),这使得训练初期每个残差块确实接近恒等映射,网络从一个"有效浅层"的状态开始逐步学习深层特征。这意味着默认状态下额外的层不会造成任何伤害,网络只需要学习"在恒等映射的基础上做多少修正",而非从头学习整个变换。
值得一提的是,Transformer架构在注意力机制和MLP周围复用了完全相同的技巧——残差连接早已成为现代深度学习架构不可或缺的基础设施。2017年Vaswani等人提出的Transformer架构(论文《Attention Is All You Need》)在每个子层(自注意力层和前馈网络层)周围都使用了残差连接加层归一化(Layer Normalization)的组合,即output = LayerNorm(x + Sublayer(x))。在GPT、BERT、LLaMA等现代大语言模型中,模型深度动辄达到数十甚至上百层Transformer块(例如GPT-3有96层,LLaMA-65B有80层),如果没有残差连接,这些模型根本无法训练。事实上,近年来围绕残差连接的改进仍在活跃进行,例如Pre-Norm(将LayerNorm移到子层之前,即output = x + Sublayer(LayerNorm(x)))与Post-Norm(原始Transformer的做法)的选择——Pre-Norm在训练稳定性上有优势但可能牺牲表达能力、DeepNorm(微软提出的深层Transformer稳定训练方案,通过调整残差连接的缩放系数使1000层Transformer成为可能)等,都说明残差连接的具体实现方式对超深网络的可训练性仍有深远影响。此外,DenseNet(2017年)将残差连接的思想进一步推广为密集连接——每一层都接收前面所有层的输出作为输入,这可以看作残差连接理念的一种极致扩展。
诚实的科学态度:测量了"什么"而非"为什么"
关于普通深层网络为何难以优化,作者展现了难得的严谨态度。他坦言,这在学术界仍有争议:有人归因于梯度消失问题,有人认为是初始化时的BatchNorm导致梯度爆炸,还有人认为是损失曲面(loss surface)的几何结构问题。
作者明确表示:"我在这里测量的是'什么'——即训练误差随深度上升这一现象。我没有亲自测量梯度,所以不会宣称一个我没有运行验证过的机制。"他甚至公开征求,希望有人能分享普通网络与残差网络在这一深度下的逐层梯度范数日志。
这种区分"现象"和"机制"的态度在深度学习研究中尤为珍贵。深度学习领域存在大量"后验解释"(post-hoc explanations),即在观察到实验结果后构造看似合理的理论解释,但这些解释未必经得起严格验证。例如,关于BatchNorm为何有效的解释就经历了从"减少内部协变量偏移"(Internal Covariate Shift,Ioffe和Szegedy在原始论文中的解释)到"平滑损失曲面"(Santurkar等人2018年在论文《How Does Batch Normalization Help Optimization?》中提出的新解释)的范式转变——后者通过严格的实验证明BatchNorm的有效性与协变量偏移几乎无关,而主要来自其对损失曲面的平滑化效果。类似地,关于Dropout为何有效、为何Adam在某些场景下泛化不如SGD等问题,学界也存在多种竞争性解释。作者选择只报告自己亲手测量的数据,不做超出证据的推论,这恰恰是最可靠的科学方法——区分观察(observation)和推断(inference),正是实验科学的基石。
实验局限与开放讨论
作者也如实列出了实验的注意事项:单一数据集(CIFAR-10)、单一配方、40个epoch、小型网络。他强调91.7%并非CIFAR-10上的最优结果,调优后的网络能达到更高(目前CIFAR-10上的SOTA准确率已超过99%,由使用了各种高级技巧如CutMix、AutoAugment、知识蒸馏等方法的模型实现)。他的主张仅限于"两个网络家族在完全相同训练条件下的方向性差异"。
最后,他向社区抛出了开放性问题:有没有人见过退化现象不出现的情况?比如某个深度下普通网络不再变差,或者某种不依赖跳跃连接就能修复退化问题的训练配方?
这些问题并非没有先例。例如,有研究者发现特定的初始化方案(如LSUV,Layer-Sequential Unit-Variance initialization,由Mishkin和Matas于2016年提出)通过逐层调整权重使每层输出的方差保持为1,可以在一定程度上缓解退化问题。此外,2020年Brock等人提出的NFNet(Normalizer-Free Networks)展示了在没有BatchNorm的情况下通过精心设计的初始化(Scaled Weight Standardization)和自适应梯度裁剪(Adaptive Gradient Clipping, AGC)训练极深网络的可能性,在ImageNet上达到了与EfficientNet相当甚至更好的性能,但值得注意的是NFNet仍然依赖残差连接。另一个值得关注的方向是Fixup初始化(Zhang等人2019年),它通过特殊的初始化方案使得ResNet即使在去掉BatchNorm的情况下也能正常训练,但同样保留了残差结构。这些后续工作从侧面印证了退化问题的复杂性以及残差连接的不可替代性——尽管人们可以在BatchNorm、初始化方案等细节上做文章,但跳跃连接本身似乎是训练真正深层网络的必要条件。
这种"亲手复现经典、坦诚承认未知边界"的实证精神,正是技术写作中最值得推崇的态度。它把一个教科书上的结论,还原成了一个可观察、可验证、仍值得深入探究的科学问题。在深度学习快速发展的今天,很多从业者习惯于直接使用残差连接而不去思考其背后的原理,这篇实验性文章的价值在于提醒我们:即便是最基础的架构设计决策,其背后的机制也远比我们以为的要复杂和深刻。
核心要点
- 退化问题不是过拟合:56层普通网络在训练集上仅达84%准确率,低于20层网络的95%,这是优化困难而非泛化问题
- 理论与实践的鸿沟:56层网络的解空间严格包含20层网络的最优解,但SGD在深层普通网络的复杂损失曲面上无法找到它
- 残差连接的双重作用:既提供梯度传播的直通通道避免消失问题,又使恒等映射成为免费的默认解降低优化难度
- 跳跃连接是因果因素:在参数规模相差仅0.3%的条件下,增加深度对普通网络和残差网络产生了方向相反的效果,排除了规模因素的解释
- 残差连接的普适性:从CNN到Transformer,从ResNet到GPT,跳跃连接已成为所有深层架构的标配基础设施
- 开放的科学问题:退化问题的确切机制(梯度消失、损失曲面几何、初始化效应等)至今仍有争议,值得进一步实验验证
相关推荐

AI生成剧集:观众到底愿不愿意为它买单?
AI生成电视剧正从技术演示走向可消费产品,但观众真的会看吗?本文从标签偏见、题材适配、内容质量三个维度,深入分析AI生成剧集的观众接受度问题,探讨哪些类型最可能率先突破。

OpenAI俄亥俄数据中心:电网、用水与社区承诺全解析
OpenAI联合SB Energy和NVIDIA在俄亥俄州派克县建设大型AI数据中心,承诺电网升级费用不转嫁居民、采用闭环风冷系统、创造3.5万建设岗位及8000万美元社区投资。深度解读算力扩张背后的社会契约。

好莱坞创意人被迫训练AI取代自己:一场技能掘墓的残酷现实
好莱坞编剧、配音演员、插画师等创意工作者正被雇佣训练AI系统,亲手加速自身职业的自动化。本文深入分析创意劳动数据化的伦理困境、劳动权益挑战及从业者的应对策略。