← 返回 PaperDaily 视觉与图像

ImageNet经典:152层ResNet拿下SOTA

这篇论文最狠的地方,不是把网络堆到了152层,而是证明了“更深”本来不该更难训练。残差连接一出,深度网络终于不用跟梯度和退化问题死磕了。

ImageNet经典:152层ResNet拿下SOTA
🐉 龙哥读论文知识星球来了!
公众号每日8篇拆解不够看?星球无上限更AI领域论文、资讯、招聘、招博、开源代码,一站式干货,每日2分钟刷完即赚!
👇扫码加入「龙哥读论文」知识星球,前沿干货、实用资源一站式拿捏~ xingqiu_header

龙哥导读:
这篇论文最狠的地方,不是把网络堆到了152层,而是证明了“更深”本来不该更难训练。残差连接一出,深度网络终于不用跟梯度和退化问题死磕了。


原论文信息如下:
论文标题:
Deep Residual Learning for Image Recognition
发表日期:
2015年12月
发表单位:
Microsoft Research
原文链接:
http://arxiv.org/pdf/1512.03385

为什么网络越深反而越难训练?残差连接如何破局?

深度学习里最反直觉的一件事,就是网络并不是越深越好训。按常识理解,层数更多,表达能力更强,训练误差理应更低;可现实偏要和人对着干:一旦普通堆叠网络继续加深,训练误差反而会上升,验证误差也跟着一起摆烂。
图1:CIFAR-10上20层与56层普通网络的训练误差和测试误差对比
图1:CIFAR-10上20层与56层普通网络的训练误差和测试误差对比。更深的网络不仅没有更好,反而训练误差更高,这就是论文要解决的“退化问题”。
这篇论文最有意思的地方就在这里:它不是简单说“深度很重要”,而是先承认一个尴尬事实——深度网络确实难训,然后再问:难训到底是因为模型不够强,还是因为优化方式太蠢?答案偏向后者。论文指出,问题不只是梯度消失或爆炸。即便有批归一化(Batch Normalization, BN)帮忙稳住信号,普通深层网络还是会出现训练误差上升,这说明瓶颈并不只是“信号传不到”,而是“优化器找不到好路”。
论文的思路很直接:既然更深的模型理论上至少不该比更浅的更差,那就别让每一层都从零开始学一个完整函数,干脆让它学“修正量”。这就是残差学习(Residual Learning)的核心直觉:不去直接拟合目标映射 H(x),而是拟合残差 F(x)=H(x)-x。这样一来,网络最后输出的是 F(x)+x。听着像数学小花招,实际上是把“学习一个大目标”改成“在已有输入上做微调”。人类写代码也常这么干:先有个能跑的版本,再在上面打补丁,通常比重写一版靠谱得多。🤨
图2:残差学习的基本模块
图2:残差学习的基本模块。输入 x 一路直通到输出端,旁边那条支路负责学习残差 F(x),最后两路相加。这条“捷径”就是后面所有 ResNet 的灵魂。

两大核心设计:残差映射与恒等快捷连接

这篇工作的硬核,不是“堆得更深”,而是把“怎么堆深”这件事重新定义了。它的两个关键设计,一个是残差映射,另一个是恒等快捷连接。前者解决“学什么”,后者解决“怎么传”。
先说残差映射。普通网络想学的是完整函数 H(x),而残差网络改成学 F(x)=H(x)-x。这个改写看似只是代数变形,实际意义非常大:如果理想解接近恒等映射,那么让残差趋近于零,比让几十层非线性层硬生生学出“什么都不改”容易得多。换句话说,ResNet 不是让每一层都当“主角”,而是允许很多层当“修修补补的配角”。
再说恒等快捷连接。这里的 shortcut connection 就是跨层直连,而且默认是identity mapping,也就是原样传递输入,不加参数,也几乎不增加计算量。它的作用很朴素:让信息和梯度都能“抄近路”通过深层网络。相比之下,早期一些带门控的高速网络(highway networks)虽然也用了捷径,但门控参数更复杂;这篇论文选择了更干脆的方案:别整花活,先把信息通道打通。
图3:ImageNet上的网络结构对比
图3:ImageNet上的网络结构对比。左边是 VGG-19,中间是34层普通网络,右边是34层残差网络。参数量和计算量大体相当,但右边多了“捷径”,这就是性能开始翻盘的关键。
如果输入输出维度不一致,论文允许用投影快捷连接(projection shortcut)来对齐维度,通常用 1×1 卷积完成。但作者的态度很明确:能用恒等连接就别乱加参数。因为这类问题的本质不是“连接不够高级”,而是“连接不够顺手”。
这里还有一个很关键的实现细节:论文把残差块做成了两层版和三层版。前者用于较浅的 ResNet-18/34,后者是瓶颈结构(bottleneck),即 1×1、3×3、1×1 三层组合,先降维再卷积再升维。这样做的目的很现实:深度可以继续往上加,但算力不能跟着爆炸。这就像修路,不是把每条路都修成高速公路,而是先把主干道缩窄再扩展,省钱又能跑。
图5:更深的残差函数与瓶颈结构
图5:更深的残差函数与瓶颈结构。左边是两层残差块,右边是更适合超深网络的三层瓶颈块。1×1 卷积负责压缩和恢复通道数,中间的 3×3 卷积才是真正干活的地方。
从理论上讲,残差块并没有增加表达能力的上限;真正改变的是优化路径。论文甚至指出,如果最优函数接近恒等映射,那么把残差压到接近零,比直接让多层网络拟合恒等函数更容易。这个判断后来几乎成了整个深度学习工程界的常识:不是所有“更复杂”的结构都更好,有时候更短的路径才是更强的路径

CIFAR-10与ImageNet上的全面验证:深度带来的性能飞跃

论文最有说服力的地方,不是讲了一个漂亮故事,而是拿两个经典数据集狠狠干了一遍:ImageNetCIFAR-10。前者是百万级图像分类大考场,后者是小而精的标准实验场。两个场景都出现了同一个现象:普通深层网络越堆越难训,而残差网络越深越能打。
先看 ImageNet。论文把 18 层和 34 层普通网络做对比,结果很扎心:34 层普通网络的训练误差更高,验证误差也更差,说明“加深”并没有带来“更强”,反而把优化难度抬上去了。可一旦换成残差版本,情况立刻反转:34 层 ResNet 不仅训练误差更低,验证误差也更好。这个变化不是玄学,而是残差连接把原本难以穿越的深层优化路径,拆成了更容易爬的坡。
图4:ImageNet上的训练过程与网络结构表
图4:ImageNet上的训练过程与网络结构表。左边普通网络越深越难训,右边残差网络则随着深度增加继续受益。表1则给出了不同深度 ResNet 的详细结构。
表2:ImageNet验证集上的Top-1错误率对比
表2:ImageNet验证集上的Top-1错误率对比。34层普通网络比18层更差,但34层 ResNet 直接反超,说明残差连接确实把“更深更难训”这道坎掀翻了。
更夸张的是更深的模型。论文继续把 50、101、152 层 ResNet 往上堆,结果不但没有崩,反而继续变强。152 层模型在 ImageNet 验证集上已经把单模型成绩推到非常靠前的位置,最终集成模型拿下 ILSVRC 2015 分类任务第一名。这里真正值得记住的不是“152层”这个数字本身,而是它背后的工程含义:深度终于从负担变成了资产
表3:ImageNet验证集上的不同残差快捷连接方案对比
表3:ImageNet验证集上的不同残差快捷连接方案对比。恒等连接、零填充、投影连接都有效,但差距并不大,说明“能把信息顺畅传过去”比“连接花样够不够多”更重要。
再看 CIFAR-10。这个数据集的好处是结构简单,能更清楚地观察深度带来的优化问题。论文在这里把网络加深到 110 层,甚至尝试了 1202 层。普通网络在加深后训练误差明显恶化,而 ResNet 却可以继续稳定下降。尤其是 110 层模型,已经能在参数量并不夸张的情况下达到很强的分类效果。这个结果说明,残差学习不是只在大数据上“装得像”,在小数据上也真能把优化问题理顺。
图6:CIFAR-10上的训练曲线与超深网络表现
图6:CIFAR-10上的训练曲线与超深网络表现。左边普通网络越深越糟,右边残差网络则随着层数增加继续受益,甚至 1202 层也能训练起来。
表6:CIFAR-10测试集分类错误率对比
表6:CIFAR-10测试集分类错误率对比。ResNet-110 在当时已经属于很强的结果,而且层数更深并没有把模型拖垮,反而把性能继续往上推。
论文还做了一个很有意思的分析:观察每层输出响应的标准差。结果显示,ResNet 各层的响应通常更小,越深的网络单层修改越“轻手轻脚”。这和残差学习的初衷完全一致——每层不是推翻重来,而是在已有表示上做小幅修正。这个现象很像团队协作:不是每个人都抢着重写方案,而是每个人只改自己负责的那一小块,效率反而更高。👍
图7:CIFAR-10上各层响应标准差分析
图7:CIFAR-10上各层响应标准差分析。残差网络的层响应普遍更小,说明它学到的确实更像“增量修正”,而不是每层都从头造轮子。

从分类到检测与分割:残差网络的强大泛化能力

这篇论文真正让人服气的,不只是分类成绩,而是它的泛化能力。作者把残差网络当作通用骨干,直接迁移到目标检测、定位和分割任务上,结果在多个赛道都拿到了第一名。换句话说,ResNet 不是只会考一门课,而是把“深层特征表示”这门底层能力打通了。
论文在 COCO 目标检测上的结果尤其有代表性。仅仅因为使用了更深的残差特征,检测性能就能获得明显提升。这里说明一个很现实的问题:很多视觉任务表面上不同,底层却高度依赖同一件事——特征表示够不够好。ResNet 把表示能力抬高后,下游任务自然跟着受益。
表7:PASCAL VOC 2007/2012上的目标检测结果
表7:PASCAL VOC 2007/2012上的目标检测结果。以 Faster R-CNN 为基线时,换上更强的残差骨干后,检测性能进一步提升。
表8:COCO验证集上的目标检测结果
表8:COCO验证集上的目标检测结果。更深的残差骨干继续带来收益,这也是论文说“深度表示很重要”的直接证据。
在 ImageNet 定位任务上,ResNet 也交出了很强的成绩。定位任务比分类更难,因为模型不仅要知道“这是什么”,还得知道“它在哪儿”。残差网络在这里仍然保持优势,说明它学到的不是只适合分类头的浅层技巧,而是更通用、更稳定的视觉表征。这也是为什么后来几乎所有视觉模型都会把 ResNet 视为标配骨干之一。
表13:ImageNet验证集上的定位误差
表13:ImageNet验证集上的定位误差。无论是使用真值类别还是测试阶段的多尺度密集预测,残差网络都表现出稳定优势。
表14:ImageNet定位任务上的最新方法对比
表14:ImageNet定位任务上的最新方法对比。ResNet 不只是把分类做强了,也把定位任务一并带飞了。
如果把这篇论文放到今天回看,它的真正价值已经不只是一个模型,而是一种工程范式:先把优化问题变简单,再谈表达能力怎么往上堆。这比单纯追求网络深度靠谱得多,也更符合真实系统的设计逻辑。

源码与关键实现细节一览

这部分看起来像“实现说明”,其实很值钱。很多论文讲得天花乱坠,最后一落地就露馅;而 ResNet 的实现细节非常朴素,朴素到几乎有点无聊,但正是这种无聊让它能落地。
先是数据增强。ImageNet 训练时采用随机缩放、随机裁剪、水平翻转和颜色扰动;CIFAR-10 则是常见的四周填充后随机裁剪。再配合 BN、SGD、动量和权重衰减,训练过程基本就是经典深度学习配方。这里没有神秘咒语,只有一套足够稳的工程搭配。
再看网络搭法。ImageNet 上的 34 层普通网络和 ResNet-34 参数量、计算量基本一致,差别主要来自 shortcut。这个设计非常聪明,因为它把“结构改进”与“算力增加”尽量拆开了,避免了那种“效果好了但成本翻倍”的假进步。换句话说,ResNet 的胜利不是靠堆资源,而是靠把资源花在刀刃上
如果把残差块写成伪代码,大致就是下面这样:
    输入 x
    残差分支:F(x) = 若干卷积 + BN + ReLU
    捷径分支:直接输出 x
    输出 y = F(x) + x
    再接一个 ReLU
    看上去简单,但工程意义极大。因为它让深层网络的训练不再依赖“每一层都必须学得特别好”,而是允许很多层只做微调。对于真实业务来说,这种结构更容易扩展、更容易调参,也更不容易因为深度增加而突然失控。

    龙迷三问

    下面是龙哥对于大家可能的一些问题的解答:

    这篇论文到底解决了什么问题?它解决的是“深层网络越堆越难训”的退化问题。论文证明,普通深层网络不是单纯因为过拟合,而是优化本身出了困难;残差连接通过学习残差,把难题改写成更容易优化的形式。

    残差映射 F(x)=H(x)-x 是什么意思?它表示网络不直接学习完整目标 H(x),而是学习“相对输入 x 需要改多少”。如果最优解接近恒等映射,那么残差就接近 0,训练会更容易。

    为什么 ResNet 后来这么重要?因为它不只是让分类更准,还证明了“更深的表示”可以稳定训练,并且能迁移到检测、定位、分割等任务。它后来几乎成了视觉模型的默认骨干,属于那种“看起来只是一个结构,实际上改写了行业习惯”的工作。

    如果你还有哪些想要了解的,欢迎在评论区留言或者讨论~

    龙哥点评

    论文创新性分数:★★★★☆ 不是凭空发明“更深网络”,而是把深层优化问题重新改写成残差学习,这个思路足够经典,也足够有穿透力。

    实验合理度:★★★★★ 先证明普通网络会退化,再拿 CIFAR-10、ImageNet 和下游任务一起验证,逻辑闭环很完整,几乎挑不出“只会讲故事”的毛病。

    学术研究价值:★★★★★ 这篇论文改变的不只是一个模型,而是后来整个视觉深度网络的基本构造方式,研究价值非常高。

    稳定性:★★★★☆ 残差连接本身很稳,但超深模型依旧依赖良好的训练策略、归一化和算力,不能把它神化成“随便训都行”。

    适应性以及泛化能力:★★★★★ 从分类到检测、定位、分割都能用,泛化能力非常强,属于通用骨干级别的方法。

    硬件需求及成本:★★★☆☆ 结构本身不算离谱,但超深模型训练成本还是高,尤其是 101/152 层之后,对算力和训练时间并不友好。

    复现难度:★★★★☆ 论文给了清楚的结构和训练策略,复现并不难,但要完全对齐成绩,训练细节仍然很关键。

    产品化成熟度:★★★★★ 这类残差结构已经非常成熟,几乎可以直接作为视觉任务骨干使用,工业界接受度极高。

    可能的问题:方法本身很强,但它解决的是“怎么更好训深网”,不是说所有任务都必须无脑加深;深度、宽度和算力之间的平衡仍然要具体问题具体分析。


    主要参考文献

    He K, Zhang X, Ren S, Sun J. Deep Residual Learning for Image Recognition. arXiv:1512.03385, 2015.
    He K, Zhang X, Ren S, Sun J. Identity Mappings in Deep Residual Networks. ECCV 2016.
    原文链接:http://arxiv.org/pdf/1512.03385

    *本文仅代表个人理解及观点,不构成任何论文审核或者项目落地推荐意见,具体以相关组织评审结果为准。欢迎就论文内容交流探讨,理性发言哦~ 想了解更多原文细节的小伙伴,可以点击"阅读原文",查看更多原论文细节哦!       

    end
    欢迎加入龙哥读论文粉丝群,扫描下方二维码或者添加龙哥助手微信号加群:kangjinlonghelper。一定要备注:研究方向+地点+学校/公司+昵称(如 图像处理+上海+清华+龙哥),根据格式备注,可更快被通过且邀请进群。
    『龙哥读论文』微信群目前包含:图像处理、大模型及智能体、自动驾驶及机器人、AI医疗及AI金融5个群
    残差网络这类“老但不过时”的经典论文,最适合进群拆着看:为什么它能把深度堆上去,还顺手把训练难题掀了桌。
    wechat_helperdianzan
    转发文章 微博 X LinkedIn Facebook
    龙哥读论文 · PaperDaily

    本文基于龙哥读论文 PaperDaily 数据库整理,结合论文原文与工程视角进行解读。