1. 深度学习的"退化困境":为什么网络越深反而越差?
我第一次训练深度卷积神经网络时,遇到一个令人费解的现象:当我不断增加网络层数,期待获得更好的识别效果时,模型的准确率却开始下降。这就像你不断给汽车添加更强大的引擎,结果车速反而越来越慢一样违反直觉。2015年之前,这个问题困扰着整个计算机视觉领域。
传统观点认为,网络深度与模型性能应该呈正相关。理论上,深层网络可以看作浅层网络的超集——它完全可以通过将新增层的权重设为零来"退化"成浅层网络。但实际训练中,我们发现34层的普通网络(plain network)在ImageNet上的表现竟然比18层的版本还要差,这被称为"退化现象"。
通过分析训练曲线,我发现深层网络的训练误差(training error)也更高,这说明问题不是过拟合导致的。更奇怪的是,即使使用了批量归一化(BatchNorm)这样的技术解决了梯度消失问题,退化现象依然存在。这暗示着深度神经网络的优化难度随着层数增加呈指数级增长——优化器很难在合理时间内找到比浅层网络更好的解。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 残差学习的灵感来源:从数学到神经网络的跨界思考
残差连接(Residual Connection)的灵感其实来自多个领域。在数值计算中,解偏微分方程的多重网格法会将复杂问题分解为不同尺度上的残差求解;在图像检索领域,VLAD特征描述符也是通过对残差向量编码来提升效果。这些方法都揭示了一个共同规律:直接求解残差量往往比求解原始量更容易。
把这个思路应用到神经网络,我们不再让网络直接学习目标映射H(x),而是学习残差映射F(x)=H(x)-x。这样原始映射就变成了F(x)+x。看似简单的数学变换,却带来了质的飞跃——当理想映射接近恒等映射时,网络只需要将残差推向零,这比直接拟合恒等映射容易得多。
我在实践中发现,残差网络的实际响应值确实普遍较小(通常在0.1-0.3之间),这验证了残差假设的正确性。就像你要调整一张照片的亮度,直接指定目标亮度很困难,但告诉你"再调亮20%"就容易得多。
3. 残差块的设计艺术:从基础版到瓶颈结构
标准的残差块包含两个3×3卷积层,中间加入ReLU激活和批量归一化。但要让这个设计真正发挥作用,需要注意几个关键细节:
恒等捷径连接是最简单的实现方式——当输入输出维度相同时,直接相加而不引入任何参
