深度残差网络(ResNet)中的恒等映射(Identity Mapping)与残差块设计
字数 3175 2025-12-15 01:03:43

深度残差网络(ResNet)中的恒等映射(Identity Mapping)与残差块设计

题目描述:深度残差网络(Residual Network, ResNet)通过引入残差学习来解决深层网络训练中的退化问题。本题目要求详细解释ResNet中“恒等映射”(Identity Mapping)的设计思想,以及它是如何通过残差块(Residual Block)的具体结构实现的,并分析其如何缓解梯度消失/爆炸问题,促进深度神经网络的训练。


解题过程循序渐进讲解

第一步:深度网络训练的退化问题与残差学习思想的提出

  1. 问题背景:在深度神经网络中,简单地增加网络层数(即深度)并不总是带来性能提升。当网络过深时,可能会遇到“退化问题”(Degradation Problem):随着深度增加,训练误差和测试误差反而会增大,这并非过拟合(因为训练误差也增加),而是表明深层网络难以优化。
  2. 核心假设:何恺明等人提出,假设一个较浅的神经网络已经达到了不错的性能,那么在其基础上堆叠更多的层,至少应该能做到一个“恒等映射”(即新增的层什么也不做,输入等于输出),从而保持性能不下降。但实际上,让多层非线性变换去拟合一个恒等映射是非常困难的。
  3. 残差学习思想:与其让堆叠的层直接去拟合一个目标函数 \(H(x)\),不如让它们去拟合“残差函数” \(F(x) = H(x) - x\)。那么原始的目标函数变为 \(H(x) = F(x) + x\)。这里的 \(x\) 是输入,\(F(x) + x\) 可以通过一个带有“快捷连接”(Shortcut Connection)或“跳跃连接”(Skip Connection)的前馈神经网络来实现。

第二步:残差块(Residual Block)的基本结构

  1. 基本公式:对于一个残差块,其核心计算可以表示为:

\[ y = \mathcal{F}(x, \{W_i\}) + x \]

其中:
*   $ x $ 是残差块的输入。
*   $ y $ 是残差块的输出。
*   $ \mathcal{F}(x, \{W_i\}) $ 是待学习的残差映射,通常由2层或3层具有非线性激活函数(如ReLU)的卷积层、批归一化(BatchNorm)层组成,$ \{W_i\} $ 是这些层的可学习参数。
*   $ + x $ 表示将输入 $ x $ 与残差映射 $ \mathcal{F} $ 的输出进行逐元素相加。
  1. 结构图示:一个经典的“基本块”(Basic Block)包含两个 \(3 \times 3\) 卷积层,中间有批归一化和ReLU激活:
    输入x -> Conv1 -> BN -> ReLU -> Conv2 -> BN -> 与x相加 -> ReLU -> 输出y
    注意:最后一个ReLU在相加之后进行。
  2. 恒等映射的实现:快捷连接执行的就是 \(x\) 的恒等映射。当残差映射 \(\mathcal{F}\) 的所有权重 \(\{W_i\}\) 被优化为接近0时,该块的输出 \(y\) 就近似等于输入 \(x\),即 \(y ≈ x\)。这使得网络可以轻松地学习到“什么都不做”的行为,从而在增加深度时,至少能保持性能不退化,为优化更复杂的功能提供了良好的起点。

第三步:恒等映射的两种实现方式与维度匹配

  1. 快捷连接的类型
    • 实线连接(恒等快捷连接):当输入 \(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的投影方式,因为其能保留更多信息。
  2. 瓶颈块(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
    这里的快捷连接处理方式与基本块相同。

第四步:残差连接如何缓解梯度传播问题

  1. 梯度回传分析:考虑反向传播。设损失函数为 \(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}) \]

  1. 缓解梯度消失/爆炸
    • 梯度 \(\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}\) 这一项。这意味着梯度可以直接、无损地从深层流回浅层,极大地缓解了梯度消失问题。
    • 同时,由于梯度是“加法”形式,而非传统网络的“连乘”形式,它也缓解了梯度爆炸的风险(因为连乘容易导致数值不稳定)。
  2. 促进信息流动:恒等连接为网络创建了一条“高速公路”,使得信息(无论是前向的特征还是反向的梯度)可以在不同层之间直接流动。这确保了即使网络极深,底层也能接收到有效的训练信号。

第五步:总结与意义

深度残差网络通过引入带有恒等映射的残差块,将学习目标从直接映射转变为残差映射。这种设计:

  1. 解决了退化问题:使网络能够轻松学习恒等映射,确保增加深度不会损害性能。
  2. 改善了梯度流:通过加法形式的梯度传播,有效缓解了深度网络中的梯度消失/爆炸问题。
  3. 实现了网络深度突破:基于此设计的ResNet(如ResNet-152)在ImageNet等数据集上取得了巨大成功,并成为计算机视觉乃至其他深度学习领域的基石架构之一。其思想也被广泛应用于Transformer(如残差连接)、归一化流等模型中。
深度残差网络(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(如残差连接)、归一化流等模型中。