ResNetV2:Identity Mappings in Deep Residual Networks 论文阅读

本文探讨了ResNetV2的改进之处,分析了恒等映射如何简化优化过程并增强模型泛化能力。通过实验对比不同的残差块组件,验证了理论的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ResNetV2:Identity Mappings in Deep Residual Networks

作者:Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun

                               Microsoft Research

[pdf] [github]


0. 简介

本文进一步分析了residual building blocks计算传播方式,表明了skip connections 和after-addition activation都是identity mappings,前向和后向的信号能够直接的从一个block 传递到其他任意一个block。所以文中提出了一个新的残差单元,它使得训练变得更简单,同时也提高了网络的泛化能力。

1.Motivation

在ResNet中,对于一个Resdual Unit:
resform
其中有三个很重要的部分,h,f, F:

h(Xl)=XlfReLUF h ( X l ) = X l 代 表 一 个 恒 等 映 射 , f 代 表 R e L U 。 F 表 示 一 个 残 差 函 数

通过设计unit中的3个重要组成是否可以来提升ResNet的效果。

2. Analysis

h(xl)f(yl) 如 果 h ( x l ) 和 f ( y l ) 都 是 恒 等 映 射 , 那 么 在 前 向 和 反 向 阶 段 , 信 号 可 以 直 接 的 从 一 个 单 元 传 递 到 其 他 任 意 一 个 单 元 。

yl=h(xl)+F(xl,Wl) y l = h ( x l ) + F ( x l , W l )

xl+1=f(yl). x l + 1 = f ( y l ) .

如果 f h都是恒等映射的话:
xl+1=xl+F(xl,Wl) x l + 1 = x l + F ( x l , W l )

又递推关系:
xL=xl+i=lLF(xi,Wi) x L = x l + ∑ i = l L F ( x i , W i )

文中指出这里表明任意层之间都是残差关系,同时与传统神将网络递推公式的对比,这里是一系列的加法,传统神经网络中更多的是矩阵之间的连乘,所以ResNet梯度稳定性更好也可以这样理解。
bp公式:
εxl=εxLxLxl=εxL(1+xli=lLF(xi,Wi)) ∂ ε ∂ x l = ∂ ε ∂ x L ∂ x L ∂ x l = ∂ ε ∂ x L ( 1 + ∂ ∂ x l ∑ i = l L F ( x i , W i ) )

与正向传播对应,更高层的梯度都可以通过第一项直接传递给更低的层,同时公式中显示了ResNet不可能出现梯度消失的现象。

3. Experiment

exp on h
文中比较了constant scaling、exclusive gating、short-only gating、1*1 conv shortcut以及dropout shortcut来作为h,具体结构如图:
这里写图片描述
对应的实验结果如下表所示:
这里写图片描述

  • fig2中的不同结构都没有origal效果好,也就是说其他形似的连接方式都会影响信息的传递。其中1*1conv的结果并不没有想ResNetV1中表现的结果那么好。
  • shortcut-only gating 和1×1的卷积涵盖了Identity Mapping的解空间。然而,它们的训练误差比恒等捷径连接的训练误差要高得多,这表明了这些模型退化问题的原因是优化问题,而不是表达能力的问题。

    exp on f
    文中分析了BN after addition,ReLU before addition,pre-activation方法作为f,研究f对ResNet效果的影响:

    pre-activation:原来的设计中相加操作后面还有一个ReLU激活函数,这个激活函数会影响到残差单元的两个分支,现在将它移到残差函数分支上,快捷连接分支不再受到影响。

这里写图片描述
预激活的影响具有两个方面。第一,由于f也是恒等映射,优化变得更加简单(与原始ResNet相比)。第二,在预激活中使用BN能够提高模型的正则化。

cifar上的结果

这里写图片描述

这里写图片描述

总结

本文可以说是ResultNet的升华,通过大量的对比实验来验证自己的理论推到的正确性,作者把ResNet分成三个部分h(skip connection),f(after-addition activation),F(residual function),ResNet原文对F进行了深入的研究,本文对h与f进行分析讨论,得出了足够简单,有效的结论与实验结果。

### 深度残差网络中的恒等映射 深度残差网络(Deep Residual Networks, ResNets)的核心思想在于引入残差学习机制,使得神经网络能够更有效地训练深层结构。其中的关键组件之一是 **恒等映射**(Identity Mapping),也被称为 shortcut connection 或 skip connection。 #### 恒等映射的概念 在传统的前馈神经网络中,随着层数增加,梯度消失或爆炸问题可能导致模型难以收敛。ResNet 提出了通过构建残差块来缓解这一问题。在一个典型的残差块中,输入 \( x \) 经过若干卷积操作后得到输出 \( F(x) \),最终的输出表示为: \[ y = F(x) + x \] 这里的 \( x \) 即为恒等映射部分[^1]。这种设计允许网络直接学习输入与目标之间的差异(即残差),从而简化优化过程并提高模型性能。 #### 实现方法 为了实现上述功能,在实际编码过程中可以采用如下方式定义一个简单的残差块: ```python import torch.nn as nn class BasicBlock(nn.Module): expansion = 1 def __init__(self, in_channels, out_channels, stride=1, downsample=None): super(BasicBlock, self).__init__() # 定义两个连续的卷积层 self.conv1 = nn.Conv2d(in_channels, out_channels, kernel_size=3, stride=stride, padding=1, bias=False) self.bn1 = nn.BatchNorm2d(out_channels) self.relu = nn.ReLU(inplace=True) self.conv2 = nn.Conv2d(out_channels, out_channels * self.expansion, kernel_size=3, stride=1, padding=1, bias=False) self.bn2 = nn.BatchNorm2d(out_channels * self.expansion) # 如果维度不匹配,则需要调整shortcut路径 self.downsample = downsample def forward(self, x): identity = x # 存储原始输入作为identity mapping out = self.conv1(x) out = self.bn1(out) out = self.relu(out) out = self.conv2(out) out = self.bn2(out) if self.downsample is not None: identity = self.downsample(x) # 对齐维度 out += identity # 添加恒等映射 out = self.relu(out) return out ``` 在这个例子中,`out += identity` 表达了核心的恒等映射逻辑。当 `downsample` 不为空时,意味着当前层可能涉及特征图尺寸的变化或者通道数的不同,因此需要额外的操作使两者形状一致后再相加[^2]。 #### 数学解释 假设某一层的目标函数为 \( H(x) \),那么传统的方法试图让每一层逼近这个复杂函数;而利用残差连接之后,我们转而尝试拟合另一个相对简单得多的新函数——残差项 \( F(x)=H(x)-x \)[^3]。这样一来不仅降低了难度还促进了信息流动的有效性。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值