
什么是 ResNetResidual NetworkResNet残差网络是何恺明Kaiming He等人在 2015 年提出的一种深度神经网络结构论文标题为《Deep Residual Learning for Image Recognition》。它最大的贡献是提出了Residual Connection残差连接或Skip Connection跳跃连接解决了深层神经网络难以训练的问题。该工作获得了 ILSVRC 2015 图像分类冠军并成为现代深度学习最重要的基础架构之一。原论文Deep Residual Learning for Image Recognition (CVPR 2016)ResNet 出现之前的问题2012 年 AlexNet 成功后研究者发现网络越深效果似乎越好。于是出现了AlexNet8层VGG1616层VGG1919层大家开始疯狂加深网络。理论上20层网络 ↓ 50层网络 ↓ 100层网络 ↓ 200层网络应该越来越强。然而实验发现20层 训练误差低 56层 训练误差反而更高注意这不是过拟合。因为训练集都学不好说明优化过程出了问题。论文称这种现象为Degradation Problem退化问题。(cv-foundation.org)一个非常关键的思考假设已经有一个训练得很好的网络输入 ↓ 若干层 ↓ 输出现在我们额外加两层输入 ↓ 若干层 ↓ 新加两层 ↓ 输出按理说新增两层什么都不干学习恒等映射y x性能至少不应该变差。因为新网络 旧网络 两层无作用层理论上更深网络 ≥ 浅网络但实际上训练时做不到。问题就在于神经网络很难自动学出y x这个恒等映射。ResNet 的核心思想既然直接学H ( x ) H(x)H(x)很困难。那就换个目标学习F ( x ) H ( x ) − x F(x)H(x)-xF(x)H(x)−x于是H ( x ) F ( x ) x H(x)F(x)xH(x)F(x)x这就叫Residual Learning残差学习。通俗理解假设你是老师。要求学生把答案写出来1000学生可能很难直接写。但如果告诉学生基础答案 998 你只需要补多少学生立刻知道2这就是残差。ResNet的思想不要直接学最终答案 而是学 距离答案还差多少残差块Residual Block普通CNNxConvReLUConv输出ResNet数学表达y F ( x ) x y F(x)xyF(x)x其中F ( x ) F(x)F(x)是卷积层学到的内容。而x xx直接绕过中间网络。这条路就叫Shortcut Skip Connection Identity Connection都是一个东西。(vitalab.github.io)为什么这么做有效假设某一层根本没用。理想情况F ( x ) 0 F(x)0F(x)0于是y x yxyx网络自动退化成恒等映射。这意味着增加网络深度 不会破坏已有能力因此浅层网络会的 深层网络一定能做到优化难度大大降低。从梯度角度理解传统网络Loss ↓ Layer100 ↓ Layer99 ↓ ... ↓ Layer1反向传播时∂ L ∂ x \frac{\partial L}{\partial x}∂x∂L需要经过上百层连乘。容易出现梯度消失 梯度爆炸ResNet因为有x 输出 └────────────►捷径存在。梯度可以直接传播Loss ↓ Layer100 ↓ Layer99 ↓ ... ↓ Shortcut ↓ Layer1因此梯度流动更顺畅训练超深网络成为可能。ResNet 的网络结构论文提出多个版本模型层数ResNet1818ResNet3434ResNet5050ResNet101101ResNet152152其中最经典的是ResNet50今天依然广泛使用。(vitalab.github.io)ResNet50 的 Bottleneck 结构浅层网络使用3×3 3×3卷积。深层网络为了节省计算1×1 ↓ 3×3 ↓ 1×1结构输入 ↓ 1×1 降维 ↓ 3×3 特征提取 ↓ 1×1 升维 ↓ Shortcut相加 ↓ 输出称为Bottleneck Block瓶颈块。(vitalab.github.io)为什么 ResNet 如此重要在今天的大模型时代很多结构都能找到 ResNet 的影子Transformerx ↓ Attention ↓ x即x Attention ( x ) x\text{Attention}(x)xAttention(x)x ↓ MLP ↓ x即x MLP ( x ) x\text{MLP}(x)xMLP(x)这本质上就是Residual ConnectionLlamax x Attention(x) x x MLP(x)GPTx x Attention(x) x x FFN(x)全部继承了 ResNet 的思想。可以说Transformer 的残差连接直接来源于 ResNet。残差连接已经成为现代深度学习的标准配置。用一句话理解 ResNet如果只记住一句话ResNet 的核心思想就是不要直接学习目标函数H ( x ) H(x)H(x)而是学习“还差多少”的残差F ( x ) H ( x ) − x F(x)H(x)-xF(x)H(x)−x再通过 Shortcut 将输入直接加回来从而让超深网络能够稳定训练。公式y F ( x ) x y F(x)xyF(x)x这也是后来 Transformer、BERT、GPT、Llama 等几乎所有现代大模型都保留残差连接的根本原因。