发布时间:2022-09-10 06:30
点击下方卡片,关注“CVer”公众号
AI/CV重磅干货,第一时间送达
转载自:集智书童
虽然残差连接可以训练深度非常深的神经网络,但由于其多分支拓扑结构,对在线推理并不友好。这鼓励了许多研究人员去设计没有残差连接的DNN。例如,RepVGG在部署时将多分支拓扑重新参数化为类VGG(单分支)结构,在网络相对较浅的情况下表现出良好的性能。然而,RepVGG不能将ResNet等效地转换为VGG,因为重新参数化方法只能应用于线性块,而非线性层(ReLU)必须放在残差连接之外,这导致了表示能力有限,特别是对于更深层次的网络。
在本文中,旨在解决这个问题,并提出通过ResBlock上的Reserving和Merging(RM)操作等效地去除普通ResNet中的残差连接。RM操作允许输入特征映射通过block,同时保留它们的信息,并在每个block的末尾合并所有的信息,在不改变原始输出的情况下去除残差连接。
RM操作作为一种plugin方法,基本上有3个优点:
其实现使其对高比率网络剪枝比较友好
突破了RepVGG的深度限制
与ResNet和RepVGG相比,RMNet具有更好的精度-速度权衡网络
RMNET: EQUIVALENTLY REMOVING RESIDUAL CONNECTION FROM NETWORKS
论文: https://arxiv.org/abs/2111.00687
代码: https://github.com/fxmeng/RMNet
自从AlexNet问世以来,CNN最先进的架构变得越来越深入。例如,AlexNet只有5层卷积层,很快VGG网络和GoogLeNet分别将其扩展到19层和22层。然而,简单叠加层的深度网络很难训练,因为梯度反向传播到后面比较深的层时梯度可能会消失和爆炸(重复乘法可能会使梯度无穷小或无穷大)。
标准化初始化和中间标准化层在很大程度上解决了上述问题,它们使具有数十层的网络能够收敛。同时,也暴露出另一个退化问题:随着网络深度的增加,精度趋于饱和,然后迅速退化。
ResNet解决了退化问题,并通过添加一个从块的输入到输出的残差连接来实现1000+层的模型。ResNet不是希望每个堆叠层直接适合所需的底层映射,而是让这些层适合残余映射。当恒等映射是最优的时,将残差推到零比用一堆非线性层来拟合恒等映射更容易。随着ResNet的日益普及,研究者们提出了许多新的基于ResNet的架构,并从不同的方面对其成功进行了解释。
然而,ResDistill指出,ResNet-50中的残差连接约占特性图全部内存使用量的40%,这将减缓推理过程。此外,网络中的残留连接对网络剪枝也不友好。相比之下,VGG-like模型(本文也称plain模型)只有一条路径,速度快、内存经济、并行友好。
RepVGG提出了一种通过在推理时重新参数化来去除残差连接。具体来说,RepVGG将卷积、卷积和identity加在一起进行训练。在每个分支的末端加入BN层,并在加成后加入ReLU。在训练过程中,RepVGG只需要学习残差映射,而在推理阶段,利用重新参数化将RepVGG的基本块转换为卷积层加ReLU运算的堆叠,相对于ResNet有较好的速度-精度权衡。但是作者发现,随着网络的加深,RepVGG的性能会出现严重的下降。
本文提出了一种新的RM操作方法,该方法可以去除内部带有非线性层的残差连接,并保持模型的结果不变。RM操作通过第1卷积层、BN层和ReLU层保留输入的特征映射,然后在ResBlock中通过最后一次卷积将它们与输出的特征映射合并。通过这种方法,可以等价地将预训练的ResNet或MobileNetV2转换为RMNet模型,以增加并行度。此外,RMNet的体系结构使其具有良好的修剪性能,因为它没有残差连接。
主要贡献总结如下:
作者发现用重参数化方法去除残差连接有其局限性,特别是在模型较深的情况下。它是一种非线性运算,不能放在残差连接内进行重新参数化;
提出了一种新的RM操作方法,通过保留输入特征映射并将其与输出特征映射合并,在不改变输出的情况下去除非线性层间的残差连接;
通过RM操作可以将ResBlocks转换为一个卷积和ReLU的堆叠,这有助于得到一个没有残差连接的更深层次的网络,并使其更适应于剪枝。