深度残差网络(ResNet)中的恒等映射(Identity Mapping)与残差块设计
字数 3175 2025-12-15 01:03:43
深度残差网络(ResNet)中的恒等映射(Identity Mapping)与残差块设计
题目描述:深度残差网络(Residual Network, ResNet)通过引入残差学习来解决深层网络训练中的退化问题。本题目要求详细解释ResNet中“恒等映射”(Identity Mapping)的设计思想,以及它是如何通过残差块(Residual Block)的具体结构实现的,并分析其如何缓解梯度消失/爆炸问题,促进深度神经网络的训练。
解题过程循序渐进讲解:
第一步:深度网络训练的退化问题与残差学习思想的提出
- 问题背景:在深度神经网络中,简单地增加网络层数(即深度)并不总是带来性能提升。当网络过深时,可能会遇到“退化问题”(Degradation Problem):随着深度增加,训练误差和测试误差反而会增大,这并非过拟合(因为训练误差也增加),而是表明深层网络难以优化。
- 核心假设:何恺明等人提出,假设一个较浅的神经网络已经达到了不错的性能,那么在其基础上堆叠更多的层,至少应该能做到一个“恒等映射”(即新增的层什么也不做,输入等于输出),从而保持性能不下降。但实际上,让多层非线性变换去拟合一个恒等映射是非常困难的。
- 残差学习思想:与其让堆叠的层直接去拟合一个目标函数 \(H(x)\),不如让它们去拟合“残差函数” \(F(x) = H(x) - x\)。那么原始的目标函数变为 \(H(x) = F(x) + x\)。这里的 \(x\) 是输入,\(F(x) + x\) 可以通过一个带有“快捷连接”(Shortcut Connection)或“跳跃连接”(Skip Connection)的前馈神经网络来实现。
第二步:残差块(Residual Block)的基本结构
- 基本公式:对于一个残差块,其核心计算可以表示为:
\[ y = \mathcal{F}(x, \{W_i\}) + x \]
其中:
* $ x $ 是残差块的输入。
* $ y $ 是残差块的输出。
* $ \mathcal{F}(x, \{W_i\}) $ 是待学习的残差映射,通常由2层或3层具有非线性激活函数(如ReLU)的卷积层、批归一化(BatchNorm)层组成,$ \{W_i\} $ 是这些层的可学习参数。
* $ + x $ 表示将输入 $ x $ 与残差映射 $ \mathcal{F} $ 的输出进行逐元素相加。
- 结构图示:一个经典的“基本块”(Basic Block)包含两个 \(3 \times 3\) 卷积层,中间有批归一化和ReLU激活:
输入x -> Conv1 -> BN -> ReLU -> Conv2 -> BN -> 与x相加 -> ReLU -> 输出y
注意:最后一个ReLU在相加之后进行。 - 恒等映射的实现:快捷连接执行的就是 \(x\) 的恒等映射。当残差映射 \(\mathcal{F}\) 的所有权重 \(\{W_i\}\) 被优化为接近0时,该块的输出 \(y\) 就近似等于输入 \(x\),即 \(y ≈ x\)。这使得网络可以轻松地学习到“什么都不做”的行为,从而在增加深度时,至少能保持性能不退化,为优化更复杂的功能提供了良好的起点。
第三步:恒等映射的两种实现方式与维度匹配
- 快捷连接的类型:
- 实线连接(恒等快捷连接):当输入 \(x\) 和输出 \(\mathcal{F}\) 的维度(通道数、高、宽)完全相同时,直接使用恒等映射,即 \(y = \mathcal{F}(x) + x\)。
- 虚线连接(投影快捷连接):当维度不同时(例如下采样导致特征图尺寸减半,或通道数改变),不能直接相加。ResNet采用两种方案:
- 选项A:在快捷连接上使用 \(1 \times 1\) 卷积进行投影(同时可以改变通道数),并视情况决定是否进行步长为2的下采样。公式变为 \(y = \mathcal{F}(x) + W_s * x\),其中 \(W_s\) 是 \(1 \times 1\) 卷积的权重。
- 选项B:在快捷连接上使用零填充(Padding)来增加维度,但论文中主要采用选项A的投影方式,因为其能保留更多信息。
- 瓶颈块(Bottleneck Block):对于更深的ResNet(如50层及以上),为了减少计算量,引入了“瓶颈块”。它由三个卷积层组成:\(1 \times 1\) 卷积(降维)、\(3 \times 3\) 卷积、\(1 \times 1\) 卷积(升维),结构为:
输入x -> Conv1x1 (降维) -> BN -> ReLU -> Conv3x3 -> BN -> ReLU -> Conv1x1 (升维) -> BN -> 与x相加 -> ReLU -> 输出y
这里的快捷连接处理方式与基本块相同。
第四步:残差连接如何缓解梯度传播问题
- 梯度回传分析:考虑反向传播。设损失函数为 \(L\)。根据链式法则,残差块输出的梯度为:
\[ \frac{\partial L}{\partial x} = \frac{\partial L}{\partial y} \cdot \frac{\partial y}{\partial x} = \frac{\partial L}{\partial y} \cdot (1 + \frac{\partial \mathcal{F}(x)}{\partial x}) \]
- 缓解梯度消失/爆炸:
- 梯度 \(\frac{\partial L}{\partial x}\) 由两部分组成:一部分是直接来自上层的梯度 \(\frac{\partial L}{\partial y}\)(通过恒等连接),另一部分是经过残差映射 \(\mathcal{F}\) 的梯度 \(\frac{\partial L}{\partial y} \cdot \frac{\partial \mathcal{F}(x)}{\partial x}\)。
- 即使残差映射 \(\mathcal{F}\) 的权重很小,导致 \(\frac{\partial \mathcal{F}(x)}{\partial x}\) 趋近于0,梯度 \(\frac{\partial L}{\partial x}\) 也至少包含 \(\frac{\partial L}{\partial y}\) 这一项。这意味着梯度可以直接、无损地从深层流回浅层,极大地缓解了梯度消失问题。
- 同时,由于梯度是“加法”形式,而非传统网络的“连乘”形式,它也缓解了梯度爆炸的风险(因为连乘容易导致数值不稳定)。
- 促进信息流动:恒等连接为网络创建了一条“高速公路”,使得信息(无论是前向的特征还是反向的梯度)可以在不同层之间直接流动。这确保了即使网络极深,底层也能接收到有效的训练信号。
第五步:总结与意义
深度残差网络通过引入带有恒等映射的残差块,将学习目标从直接映射转变为残差映射。这种设计:
- 解决了退化问题:使网络能够轻松学习恒等映射,确保增加深度不会损害性能。
- 改善了梯度流:通过加法形式的梯度传播,有效缓解了深度网络中的梯度消失/爆炸问题。
- 实现了网络深度突破:基于此设计的ResNet(如ResNet-152)在ImageNet等数据集上取得了巨大成功,并成为计算机视觉乃至其他深度学习领域的基石架构之一。其思想也被广泛应用于Transformer(如残差连接)、归一化流等模型中。