残差网络 ResNet 是什么?让神经网络可以做到上百层深
残差网络(Residual Network,ResNet)是深度学习史上最有影响力的网络架构之一,由微软亚洲研究院的何恺明、张祥雨、任少卿和孙剑在 2015 年提出,论文标题是《用于图像识别的深度残差学习》,获得了 CVPR 2016 最佳论文奖。它是被引用次数最多的科学论文之一。
它解决的问题:越深反而越差
在 ResNet 之前,人们普遍认为神经网络越深,表达能力越强,效果应该越好。但实践中发现了一个奇怪的现象:当网络深度超过一定程度后,继续加层,效果不升反降,而且不只是在测试集上变差,连训练集上的误差都变高了。这说明问题不是过拟合,而是更深的网络更难训练好,论文称之为“退化问题”。按理说,一个更深的网络至少可以做到和浅网络一样好:只要多出来的层什么都不做,直接把输入原样传过去就行。但实际上,让一堆非线性层学会“什么都不做”,也就是学会恒等映射,反而很困难。
残差连接:学习差值
ResNet 的解决办法非常简洁:加一条“捷径”。在几层网络旁边,加一条直接把输入跳过这几层、加到输出上的连接,称为残差连接或快捷连接。这样,这几层网络需要学习的,不再是完整的输出,而是输出与输入之间的差值,也就是“残差”。如果某几层最好什么都不做,它只需要把残差学成零就行了,这比学会恒等映射容易得多。可以理解为:与其让每一层从头画一幅画,不如让它在上一层的画上做修改,需要修改的地方改一改,不需要的就保持原样。
残差连接还让梯度可以通过捷径直接往前传,缓解了很深的网络中梯度消失的问题,使训练更加顺畅。
影响
借助残差连接,ResNet 成功训练出了 152 层的网络,在 2015 年的 ImageNet 图像识别竞赛中夺冠,错误率首次低于人类水平的估计值;研究者还训练出了超过一千层的网络。残差连接的思想后来几乎成了所有深度网络的标配:Transformer 中的每一层都有残差连接,没有它,今天的大语言模型几乎不可能训练出来。ResNet 本身也至今仍被广泛用作计算机视觉任务的骨干网络。