原理细节
残差学习
ResNet 的核心思想是学习残差函数 ,其中 是目标映射, 是输入。通过跳跃连接(Shortcut Connection)实现恒等映射。
网络结构
-
基础块包含卷积层、批量归一化(BatchNorm)和激活函数(ReLU)。
-
残差块分为两种:
- 标准残差块(BasicBlock):包含两个 卷积层,用于浅层网络(如 ResNet-18/34)。
- 瓶颈残差块(BottleneckBlock):包含 (降维)、 和 (升维)卷积层,用于深层网络(如 ResNet-50/101/152)。
跳跃连接
若输入输出维度不同,使用 卷积调整维度(Projection Shortcut),例如:输入通道数为64,残差块输出通道数为128,则跳跃连接使用1x1卷积将64通道映射到128通道。
如果维度相同则直接相加。
卷积块后紧跟批归一化层,用于防止维度调整后输入分布的偏移。
梯度计算与反向传播
梯度公式:假设残差块输出为 ,反向传播时梯度为:
&= \frac{\partial \mathcal{L}}{\partial H} \cdot \left( \frac{\partial F}{\partial x} + 1 \right) \end{aligned}$$ 其中$\frac{\partial \mathcal{L}}{\partial H}$是输入梯度。  **优势**: - 跳跃连接的导数项 $1$ 确保梯度直接回传,缓解梯度消失。 - 即使中间层梯度 $\frac{\partial F}{\partial x}$ 接近零,总梯度仍可通过 $1$ 有效传播。 ## 优点和局限性 ### 优点 1. **解决退化问题**:允许训练极深层网络(如 152 层),避免准确率饱和或下降。 2. **训练加速**:跳跃连接简化优化目标,使网络更容易收敛。 3. **迁移学习友好**:预训练模型在多种任务(分类、检测、分割)中表现优异。 ### 局限性 1. **计算成本**:深层 ResNet(如 ResNet-152)参数量大,推理速度较慢。 2. **过拟合风险**:极深网络在小数据集上可能依赖强正则化。 3. **冗余结构**:部分残差块在训练后贡献微弱,存在参数冗余。 4. **内存占用**:跳跃连接的加法操作需保存输入特征图,增加显存消耗。