【论文解读11】深度残差网络中的恒等映射:ResNet改进
本文解读的是Kaiming He、Xiangyu Zhang、Shaoqing Ren和Jian Sun于2016年发表的改进论文《Identity Mappings in Deep Residual Networks》,该论文深入分析了ResNet中恒等映射的作用机制,提出了预激活(Pre-activation)的残差块设计,进一步优化了ResNet的训练稳定性和性能。这一改进不仅完善了ResNet的理论基础,更为理解残差连接的本质提供了深刻的洞察。 “恒等映射是残差网络成功的关键。"——这是He等人在ResNet改进论文中提出的核心观点。在原始ResNet中,残差块的设计虽然有效,但恒等映射的实现方式(激活函数的位置)对性能有重要影响。通过系统性的实验和理论分析,论文发现预激活(在卷积之前应用BatchNorm和ReLU)比后激活(在卷积之后应用)效果更好。 论文的核心创新是预激活残差块:将BatchNorm和ReLU移到卷积之前,使恒等映射的路径更加"干净”,梯度流动更加顺畅。这种设计不仅提高了训练稳定性,还进一步提升了模型性能,在ImageNet上取得了更好的结果。 在当今大模型时代,这一改进的思想仍然重要:理解恒等映射的本质,优化信息流动路径,这些原则仍然是深度网络设计的核心。理解ResNet改进,就是理解如何进一步优化残差连接。 本文将从问题根源、核心机制、解决方案、实践评估四个维度深度解读ResNet改进,包含完整的数学推导、梯度流动分析和实验评估,并在文末提出开放性问题与未来研究方向。 本文属于 论文阅读开篇:Ilya 30u30 阅读计划 系列,可前往该页查看完整目录、阅读顺序与发布状态。 原始ResNet的恒等映射问题 问题一:激活函数位置的影响 在原始ResNet中,残差块的设计为: $$ y = \mathcal{F}(x, {W_i}) + x $$ 其中 $\mathcal{F}$ 通常包含:Conv → BN → ReLU → Conv → BN,然后输出与 $x$ 相加,最后再应用ReLU。 后激活设计:激活函数在残差函数之后,恒等映射 $x$ 直接参与加法,然后应用激活函数。 问题分析:当 $x$ 经过ReLU激活时,如果 $x$ 的某些元素为负,会被置为0,破坏了恒等映射的性质。这导致恒等映射路径不够"干净",梯度流动可能受阻。 问题二:梯度流动的阻塞 在原始设计中,梯度需要通过激活函数的导数传播: $$ \frac{\partial y}{\partial x} = \frac{\partial \text{ReLU}(\mathcal{F}(x) + x)}{\partial x} = \text{ReLU}’(\mathcal{F}(x) + x) \left(1 + \frac{\partial \mathcal{F}}{\partial x}\right) $$ ...