深度残差网络(ResNet)的核心思想与残差块结构
字数 2066 2025-10-27 17:41:11
深度残差网络(ResNet)的核心思想与残差块结构
题目描述
深度残差网络是深度学习中的一种重要架构,它解决了极深神经网络难以训练的问题。当网络层数不断增加时,模型的准确度会达到饱和,甚至开始下降,这种现象被称为网络退化。本题目要求你理解ResNet是如何通过引入“残差块”和“快捷连接”来解决这个问题的,并掌握其具体结构和工作原理。
解题过程
1. 问题的根源:网络退化与梯度消失/爆炸
- 现象:在传统的卷积神经网络中,人们发现并非网络越深效果越好。当网络深度(例如,从20层增加到56层)持续增加时,不仅在测试集上的误差会增大,连在训练集上的误差也会随之增大。这表明,这并非过拟合问题,而是一种网络退化问题。
- 深层原因:
- 梯度消失/爆炸:在反向传播过程中,梯度需要通过链式法则一层层传递。当网络非常深时,梯度值可能会因为连续相乘而变得极小(消失)或极大(爆炸),导致靠近输入层的权重参数难以得到有效的更新。
- 优化困难:深层网络可以看作是一个极其复杂的非线性函数,其优化曲面(损失函数的曲面)非常崎岖,使得优化算法(如SGD)很难找到一个好的局部最优解,甚至比一个更浅但结构类似的网络更难优化。
2. ResNet的核心思想:学习残差函数
- 直觉:假设一个较浅的网络已经达到了一个不错的准确率。那么,在它后面叠加更多的层,最理想的情况应该是这些新增的层是“恒等映射”,即输入是什么,输出就是什么。这样,深网络的性能至少不会差于浅网络。
- 数学表达:我们不再期望堆叠的层直接学习一个底层的映射 \(H(x)\),而是让它们学习一个残差函数 \(F(x) = H(x) - x\)。
- 这里,\(x\) 是残差块的输入。
- \(H(x)\) 是我们期望该块最终能实现的理想映射。
- 因此,原始期望的映射就变成了 \(H(x) = F(x) + x\)。
- 核心优势:学习 \(F(x)\) 比直接学习 \(H(x)\) 要容易得多。如果恒等映射是最优的,那么直接将 \(F(x)\) 的权重推向0(使得 \(H(x) = x\))要比通过多个非线性层来拟合一个恒等映射容易得多。
3. 残差块的结构与两种前向传播路径
残差块是实现上述思想的基本构建模块。
-
基本结构:
- 主路径:输入 \(x\) 会经过几个权重层(通常是两个卷积层,配以批归一化和ReLU激活函数)。这些层负责学习残差映射 \(F(x)\)。
- 快捷连接:输入 \(x\) 会通过一条“捷径”直接跳过多层,与主路径的输出相加。这条路径也被称为“跳跃连接”。
- 相加与激活:将主路径的输出 \(F(x)\) 和快捷连接的输出 \(x\) 进行逐元素相加,得到 \(F(x) + x\)。然后,通常再经过一个ReLU激活函数,得到该残差块的最终输出。
-
前向传播公式:对于一个残差块,其输出 \(y\) 可以表示为:
\[ y = F(x, \{W_i\}) + x \]
其中,$ F(x, \{W_i\}) $ 是主路径学到的残差映射,$ x $ 是快捷连接传递过来的值。
4. 快捷连接的关键作用
- 解决梯度消失:在反向传播时,梯度需要计算损失函数对参数 \(W\) 的偏导。根据链式法则,梯度会沿着两条路径回流:
* 一条是通过主路径的权重层。
* 另一条是直接通过快捷连接。
因此,总梯度是这两条路径梯度之和。即使主路径的梯度变得非常小(例如,由于权重矩阵连乘而变小),快捷连接也能确保一个为1的梯度(或一个清晰的信号)可以直接传回更早的层。这极大地缓解了梯度消失问题,使得网络可以深达数百甚至上千层。 - 保障性能下限:即使新增的层没有学到任何有用的特征(即 \(F(x) = 0\)),该残差块也至少能执行恒等映射 \(y = x\),从而保证深网络的性能不会差于其浅层部分。
5. 两种主要的残差块设计
在实际构建ResNet时,有两种常见的残差块:
- 基本块:用于较浅的ResNet(如ResNet-18/34)。它包含两个3x3的卷积层,输入和输出的维度相同。快捷连接直接传递输入 \(x\)。
- 瓶颈块:用于更深的ResNet(如ResNet-50/101/152),目的是减少计算量。其结构为1x1 -> 3x3 -> 1x1卷积。
- 第一个1x1卷积用于降维,减少通道数。
- 第二个3x3卷积在较低维度上进行卷积,节省计算。
- 第三个1x1卷积用于升维,恢复通道数。
- 当输入和输出的维度不一致时(例如,下采样时),快捷连接需要通过一个1x1卷积层来将 \(x\) 的维度投影到与 \(F(x)\) 相匹配。
总结
深度残差网络通过引入“快捷连接”和让网络学习“残差”而非“原始映射”,巧妙地解决了极深神经网络的退化问题。它使得梯度能够更有效地反向传播,让训练成百上千层的网络成为可能,极大地推动了深度学习在计算机视觉等领域的发展。