DL-Paper精读:NF-ResNets

CHARACTERIZING SIGNAL PROPAGATION TO CLOSE THE PERFORMANCE GAP IN UNNORMALIZED RESNETS

https://arxiv.org/pdf/2101.08692.pdf

 

background

目前的CV领域,BatchNormalization几乎是所有SOTA工作中必备的操作。它确实带来了很多好处,例如:

  1. 平滑了Loss平面,同时消除了因mini_batch带来的噪声,整体来说就是提高了网络训练的速度和稳定性。

  2. 目前一些工作发现BN能够与ResNet结构有较好的协同作用,能够稳定良好的信号传输,保证了深层网络的成功训练

  3. 也有一些工作证明BN对于网络训练的过拟合问题其实也有一定的缓解作用。

 

limit

但是BN同样存在一些问题:

  1. 强依赖于batch_size的大小,对硬件要求较高

  2. 造成了模型training和inference阶段的精度gap(分别采用不同的参数)

  3. 增加额外的内存计算开销

  4. 不同硬件上进行分布式训练较难实现

  5. 一些改进工作(LN, GN等)也各有各的缺点,如计算消耗等

  6. 针对ResNet等,有一些通过控制残差结构与支路的信号传输来去除normalize操作的改进工作,但性能上相比于基于BN的网络来说还是有所欠缺。

 

novel points

目的很明确,干掉BN。但如何合理地去除,不造成精度损失?文中首先提出了一种信息传输监测的方法(SPP),分析了BN层对ResNet inference过程中信息分布的作用并进行可视化,然后构造BN-free的模块,并让其信息流分布与带BN的操作类似,这样就可以实现合理的BN移除。

 

methodology

1、 SPP(Signal Propagation Plots)

该部分对ResNet前向过程中的数据进行统计分析,对其数据分布进行可视化操作。如下图所示:

考察指标分为3个:

  • Average Channel Squared Mean,对每一个Res-block的输出计算NHW三维的均方根,再在C维求平均。一般来说希望该指标中,每一个channel的均值趋向于0越好。(趋近于0则维无偏分布,利于深层信息的传输)

  • Average Channel Variance, C维的方差。该指标是一个衡量信息(参数)强度的重要指标,可以很清晰地显示信息地衰减或爆炸。

  • Average Channel Variance on the end of the residual branch, 就是加skip path之前的输出的均方差,这有助于监测res-block分支内部的曾是否被合理的初始化。

利用这三个指标,可以观测到在初始化状态下,不同结构块下数据传输的分布变化情况。如图所示,给出了常规的BN-ReLU和ReLU-BN模式下数据分布的不同形式。能够看出一些很有意思的现象,例如在BN-ReLU的模式下,ACV指标在每个res的阶段线性上升,而在stage的结尾又重置为1。这是由于同一个stage内,由于BN的作用,每层的方差独立,因此随着block的堆叠,方差也就逐渐累计增大。对于ACSM也是类似的。

2、 NF-ResNets(Normalizer-free)

NF模块的设计,核心就在于利用SPPs,设计一个模块,约束其信息传输模式与基于BN的模块类似。首先需要由上一节给出两个结论:

First, for standard initializations, BatchNorm downscales the input to each residual block by a factor proportional to the standard deviation of the input signal. Second, each residual block increases the variance of the signal by an approximately constant factor.

换句话说,BN对于数据分布的约束,主要体现在对输入信号的均值方差的标准化。因此,只需要加入比例因子对数据进行约束,就可以得到类似的数据分布模式。文中提出使用x_(l+1)= x_l+ α\cdot f_l (x_l ⁄ β_l )x_{l+1} = x_{l} + \alpha f_{l}(x_{l}/\beta _{l})

来模拟BN的数据约束。α和β的参数计算需要参照具体的模式来进行赋值,使得方差与BN下的方差相符合。该形式就被称为NF-ResNets模块。

3、 Scaled WS

直接使用NF-ResNet模块训练并不稳定,并且当层数增加时更加难以训练。失败案例如4.1节的NF-ResNets + He-initialization的失败。为减少其中的mean shift问题,文中加入Scaled SW(weight standardization)来进一步进行数据模式的矫正。公式如下

本质上真就是一个scaled SW(。。。)它能够消除batch维度元素的相关性,并且在train和inference阶段没有什么偏差。

此外,文中还涉及到了增益参数γ如何确定等问题。

实现代码:

https://github.com/rwightman/pytorch-image-models/blob/master/timm/models/nfnet.py

 

evaluation(benchmark, experiments design)

结果无需多言,大厂牛逼就完了。。。

 

Thoughts:

  • Describe what the authors of the paper aim to accomplish, or perhaps did achieve.

通过监测数据流的分布模式,来有目标性地设计结构取代BN层,是一种可行地方式,所设计地NF-Res模块 + Scaled SW操作,本质上也是对数据的归一化。

  • If a new approach/ technique/ method was introduced in a paper, what are the key elements of the newly proposed approach?

细致的数据可视化分析,简单可行的标准化方式替换

  • What content within the paper is useful to you?

BN的出现,在早期为模型训练带来了非常大的益处。但随着DL的发展,必将会被逐步地取代,就想Detection中的anchor, NMS等一样。该文章基于数据分析的研究方法,是可靠而可行的。

  • Which parts are not perfect, or need to be improved or researched further?

  1. 该工作是针对ResNet及类似结构的改进,但对于VGG等传统结构是否会有相同的效果?

  2. 额外引入的超参,不利于该方法的广泛推广。若要真正取代BN,可能还需进一步探索更加灵活,更加鲁棒的方法

  • What other references do you want to follow?

猜你喜欢

转载自blog.csdn.net/li6016265/article/details/113786631
DL
3NF