RMNet: Equivalently Removing Residual Connection from Networks

本文介绍了一种新方法RMNet,通过移除ResNet中的残差连接,保持模型性能的同时提高并行性和内存效率。RMNet通过RM操作,保留输入特征图并合并,使得深度网络训练得以改善。研究还探讨了RepVGG的局限,并展示了如何通过RM操作提升其在深度网络中的表现。

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

RMNet: Equivalently Removing Residual Connection from Networks

  • 论文链接:https://arxiv.org/pdf/2111.00687.pdf
  • 源码链接:https://hub.nuaa.cf//fxmeng/RMNet

简介

自从AlexNet问世以来,SOTA的CNN架构变得越来越深。例如,AlexNet只有5个卷积层,很快被VGG和GoogleNet分别扩展到19和22层。然而由于梯度消失和爆炸问题,简单地堆叠层的深度网络很难训练–当梯度反向传播到更早的层时,重复乘法可能会使梯度无限小或无限大。标准化初始化在很大程度上解决了这个问题。中间标准化层使具有数十层的网络能够聚合。同时另一个退化问题也暴露出来:随着网络深度增加,精度饱和,然后迅速退化。ResNet解决了退化问题,并通过添加从块输入到输出的残差连接来实现1K+层模型。ResNet不希望每个堆叠层直接适合所需的底层映射,而是让这些层适合残差映射。当相等映射是最优的时,将残差推至0币通过一堆非线性层拟合相等映射更容易。随着ResNet越来越受到欢迎,研究人员提出了很多新的架构,基于ResNet,从不同角度解读成功。
然而Residual distillation: Towards portable deep neural networks without
shortcuts指出ResNet残差连接约占特征图上整个内存使用量的40%,这将减缓推理过程。另外,网络中的残差连接对网络剪枝是不友好的。相比之下,类VGG模型,本文称之为Plain模型,只有一条路径且速度快内存经济且易于并行化。RepVGG提出了一种强大的方法,通过推理时的重参数化来去除残差连接。具体地,RepVGG将3x3卷积、1x1卷积和恒等变换相加进行训练。在每个分支末端添加BN层,并在加操作之后添加ReLU。训练过程中RepVGG只需要学习残差映射,而在推理阶段,利用重参数化将RepVGG基本块转换为3x3卷积层加上ReLU运算的堆叠,与ResNet相比,这具有良好的速度-精度折衷。本文实验发现当网络深入时,RepVGG性能会严重下降。
本文呢引入了一种新的方法称为RM操作,它可以去除其他与非线性层的残差连接并保持模型结果保持不变。RM操作通过第一个卷积层、BN层和ReLU层保留输入特征图,然后通过ResBlock中最后一个卷积将其输出特征图合并。基于这种方式,本文可以等效地将预训练ResNet或MobileNetV2转换为RMNet,以增加并行度。

本文方法

重参数化方法回顾

图1描述了ResNet和RepVGG描绘的基本块。在ResBlock中(图1a),两个ReLU分别位于残差连接的内部和外部。而在RepBlock中,由于重参数化是基因乘法的交换律,因此两个ReLU必须都在残差连接外。通过用两个RepBlock替换每个ResBlock,可以从基本的ResNet架构构建RepVGG。接下来,分析为什么RepVGG不能像ResNet一样从前向和后传中进行很深的训练。
在这里插入图片描述
前向路径
Residual networks behave like ensembles of relatively shallow networks假定ResNet成功可以归因于模型集成。本文可以将ResNet视为许多不同长度的路径集合。因此n块ResNet有 O ( 2 n ) O(2^{n}) O(2n)条连接输入和输出的隐含路径。然而,与ResNet块中两个分支是可分离的,不能合并不同的是RepVGG多个分支可以用一个分支表示。
x i + 1 = R e L U ( B N ( x i ) + B N ( C o n v 1 × 1 ( x i ) ) + B N ( C o n v 3 × 3 ( x i ) ) ) = R e L U ( B N ( C o n v 3 × 3 ′ ( x i ) ) ) \begin{aligned} x_{i+1}&=ReLU(BN(x_{i})+BN(Conv_{1\times 1}(x_{i}))+BN(Conv_{3\times 3}(x_{i})))\\ &=ReLU(BN(Conv_{3\times 3}^{\prime}(x_{i})))\\ \end{aligned} xi+1=ReLU(BN(xi)+BN(Conv1×1(xi))+BN(Conv3×3(xi)))=ReLU(BN(Conv3×3(xi)))
C o n v ′ Conv^{\prime} Conv是分支中每个Conv的融合卷积。因此RepVGG不具有ResNet隐含集成假设,并且RepVGG和ResNet之间表示差距随着块数量增加而增加。
后向路径
The shattered gradients problem: If resnets are the answer, then what is the question?分析了深度神经网络中破碎梯度问题。当反向路径中有更多ReLU时,梯度相关性表现为高斯白噪声。假设ResNet和RepVGG都有n层。如图1a所示,ResNet信息可以通过残差,而无需通过每个块中ReLU内部。但是RepVGG中每个ReLU都位于主路径。因此,反向路径中ResNet的ReLU数量是n/2,而路径中RepVGG的ReLU数量是n。这表明当深度大时,ResNet梯度更耐破碎,从而获得比RepVGG更好的性能。
图2给出了网络深度如何影响ResNet和RepVGG性能的实验结果。可以看出当深度增加时,ResNet可以得到更好的精度,这与先前分析一致。而RepVGG精度将减少,与可以在CIFAR-100获得79.57%精度ResNet-133相比,RepVGG-133只有41.38%精度。
在这里插入图片描述
图1显示了RepVGG和ResNet在ImageNet数据集性能比较。在相同网络结构中,ResNet-18比RepVGG-18高0.5%,而ResNet-34比ResVGG高0.8%。因此,RepVGG是在损失表示能力的代价下提升速度。
在这里插入图片描述

RM操作与RMNet

RM操作

图3给出了RM操作等效地移除残差连接的过程。为了简洁起见,没有在图中显示BN层,并且输入通道、中间通道和输出通道数量相同。
在这里插入图片描述
保留
首先在Conv1插入几个Dirac初始化的滤波器(输出通道)。Dirac初始化滤波器数量与卷积层中输入通道数量相同。Dirc初始化滤波器定义为四维矩阵:
I c , n , i , j = { 1  if  c = n  and  i = j = 0 , 0  otherwise  I_{c, n, i, j}=\left\{\begin{array}{ll} 1 & \text { if } c=n \text { and } i=j=0, \\ 0 & \text { otherwise } \end{array}\right. I

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qgh1223

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值