NF-ResNet:去掉BN归一化,值得细读的网络信号分析 | ICLR 2021

作者&投稿:暴古 (若有异议请与网页底部的电邮联系)
~

论文: Characterizing signal propagation to close the performance gap in unnormalized ResNets

  BatchNorm是深度学习中核心计算组件,大部分的SOTA图像模型都使用它,主要有以下几个优点:

  然而,尽管BatchNorm很好,但还是有以下缺点:

  目前,很多研究开始寻找替代BatchNorm的归一化层,但这些替代层要么表现不行,要么会带来新的问题,比如增加推理的计算消耗。而另外一些研究则尝试去掉归一化层,比如初始化残差分支的权值,使其输出为零,保证训练初期大部分的信息通过skip path进行传递。虽然能够训练很深的网络,但使用简单的初始化方法的网络的准确率较差,而且这样的初始化很难用于更复杂的网络中。
  因此,论文希望找出一种有效地训练不含BatchNorm的深度残差网络的方法,而且测试集性能能够媲美当前的SOTA,论文主要贡献如下:

  许多研究从理论上分析ResNet的信号传播,却很少会在设计或魔改网络的时候实地验证不同层数的特征缩放情况。实际上,用任意输入进行前向推理,然后记录网络不同位置特征的统计信息,可以很直观地了解信息传播状况并尽快发现隐藏的问题,不用经历漫长的失败训练。于是,论文提出了信号传播图(Signal Propagation Plots,SPPs),输入随机高斯输入或真实训练样本,然后分别统计每个残差block输出的以下信息:

  论文对常见的BN-ReLU-Conv结构和不常见的ReLU-BN-Conv结构进行了实验统计,实验的网络为600层ResNet,采用He初始化,定义residual block为 ,从SPPs可以发现了以下现象:

  假如直接去掉BatchNorm,Average Squared Channel Means和Average Channel Variance将会不断地增加,这也是深层网络难以训练的原因。所以要去掉BatchNorm,必须设法模拟BatchNorm的信号传递效果。

  根据前面的SPPs,论文设计了新的redsidual block ,主要模拟BatchNorm在均值和方差上的表现,具体如下:

  根据上面的设计,给定 和 ,可根据 直接计算第 个residual block的输出的方差。为了模拟ResNet中的累积方差在transition block处被重置,需要将transition block的skip path的输入缩小为 ,保证每个stage开头的transition block输出方差满足 。将上述简单缩放策略应用到残差网络并去掉BatchNorm层,就得到了Normalizer-Free ResNets(NF-ResNets)。

  论文对使用He初始化的NF-ResNet进行SPPs分析,结果如图2,发现了两个比较意外的现象:

  为了验证上述现象,论文将网络的ReLU去掉再进行SPPs分析。如图7所示,当去掉ReLU后,Average Channel Squared Mean接近于0,而且残差分支输出的接近1,这表明是ReLU导致了mean-shift现象。
  论文也从理论的角度分析了这一现象,首先定义转化 , 为任意且固定的矩阵, 为作用于独立同分布输入 上的elememt-wise激活函数,所以 也是独立同分布的。假设每个维度 都有 以及 ,则输出 的均值和方差为:

  其中, 和 为 的 行(fan-in)的均值和方差:

  当 为ReLU激活函数时,则 ,意味着后续的线性层的输入都为正均值。如果 ,则 。由于 ,如果 也是非零,则 同样有非零均值。需要注意的是,即使 从均值为零的分布中采样而来,其实际的矩阵均值肯定不会为零,所以残差分支的任意维度的输出也不会为零,随着网络深度的增加,越来越难训练。

  为了消除mean-shift现象以及保证残差分支 具有方差不变的特性,论文借鉴了Weight Standardization和Centered Weight Standardization,提出Scaled Weight Standardization(Scaled WS)方法,该方法对卷积层的权值重新进行如下的初始化:

  和 为卷积核的fan-in的均值和方差,权值 初始为高斯权值, 为固定常量。代入公式1可以得出,对于 ,有 ,去除了mean-shift现象。另外,方差变为 , 值由使用的激活函数决定,可保持方差不变。
  Scaled WS训练时增加的开销很少,而且与batch数据无关,在推理的时候更是无额外开销的。另外,训练和测试时的计算逻辑保持一致,对分布式训练也很友好。从图2的SPPs曲线可以看出,加入Scaled WS的NF-ResNet-600的表现跟ReLU-BN-Conv十分相似。

  最后的因素是 值的确定,保证残差分支输出的方差在初始阶段接近1。 值由网络使用的非线性激活类型决定,假设非线性的输入 ,则ReLU输出 相当于从方差为 的高斯分布采样而来。由于 ,可设置 来保证 。虽然真实的输入不是完全符合 ,在实践中上述的 设定依然有不错的表现。
  对于其他复杂的非线性激活,如SiLU和Swish,公式推导会涉及复杂的积分,甚至推出不出来。在这种情况下,可使用数值近似的方法。先从高斯分布中采样多个 维向量 ,计算每个向量的激活输出的实际方差 ,再取实际方差均值的平方根即可。

  本文的核心在于保持正确的信息传递,所以许多常见的网络结构都要进行修改。如同选择 值一样,可通过分析或实践判断必要的修改。比如SE模块 ,输出需要与 的权值进行相乘,导致信息传递减弱,网络变得不稳定。使用上面提到的数值近似进行单独分析,发现期望方差为0.5,这意味着输出需要乘以2来恢复正确的信息传递。
  实际上,有时相对简单的网络结构修改就可以保持很好的信息传递,而有时候即便网络结构不修改,网络本身也能够对网络结构导致的信息衰减有很好的鲁棒性。因此,论文也尝试在维持稳定训练的前提下,测试Scaled WS层的约束的最大放松程度。比如,为Scaled WS层恢复一些卷积的表达能力,加入可学习的缩放因子和偏置,分别用于权值相乘和非线性输出相加。当这些可学习参数没有任何约束时,训练的稳定性没有受到很大的影响,反而对大于150层的网络训练有一定的帮助。所以,NF-ResNet直接放松了约束,加入两个可学习参数。
  论文的附录有详细的网络实现细节,有兴趣的可以去看看。

  总结一下,Normalizer-Free ResNet的核心有以下几点:

  对比RegNet的Normalizer-Free变种与其他方法的对比,相对于EfficientNet还是差点,但已经十分接近了。

  论文提出NF-ResNet,根据网络的实际信号传递进行分析,模拟BatchNorm在均值和方差传递上的表现,进而代替BatchNorm。论文实验和分析十分足,出来的效果也很不错。一些初始化方法的理论效果是对的,但实际使用会有偏差,论文通过实践分析发现了这一点进行补充,贯彻了实践出真知的道理。






【模型解读】历数GAN的5大基本结构
【模型解读】从LeNet到VGG,看卷积+池化串联的网络结构 【模型解读】network in network中的1*1卷积,你懂了吗 【模型解读】GoogLeNet中的inception结构,你看懂了吗 【模型解读】说说移动端基准模型MobileNets 【模型解读】pooling去哪儿了?【模型解读】resnet中的残差连接,你确定真的看懂了?【模型解读...

通俗易懂的深度学习——GoogleNet\/Inception,魔改的起源?
inception architecture for computer vision." IEEE CVPR 2016.[4] Szegedy, C., et al. "Inception-v4, inception-resnet and the impact of residual connections on learning." AAAI 2017.[5] Chollet, F. "Xception: Deep learning with depthwise separable convolutions." IEEE CVPR 2017.

激活函数——Relu,Swish
例如,仅仅使用 Swish 单元替换 ReLU 就能把 Mobile NASNetA 在 ImageNet 上的 top-1 分类准确率提高 0.9%,Inception-ResNet-v 的分类准确率提高 0.6%。导数 当 = 0 Swish变为线性函数 在 , Swish变为 relu:f(x) = 2max(0,x)所以Swish函数可以看做是介于线性函数与relu函数之间...

(二)计算机视觉四大基本任务(分类、定位、检测、分割)
深入到VGG网络,我们看到其结构的简洁性,3×3卷积和2×2池化,以及全连接层参数的集中。ResNet则以短路连接解决深度网络训练难题,ResNeXt和preResNet的改进则优化了残差模块和计算效率。接下来,目标定位涉及分类和位置信息,如人体姿态和人脸定位,以及弱监督定位的挑战。检测任务,如PASCAL VOC和MS COCO...

语义分割的解码器去噪预训练
主干架构(如Resnet(He et al.,2016))逐渐降低了特征图的分辨率。因此,为了进行像素级预测,需要解码器将采样恢复到像素级。大多数最先进的语义分割模型都不会预训练解码器引入的附加参数并随机初始化它们。在本文中,我们认为解码器的随机初始化远远不是最优的,并且使用简单但有效的去噪方法预训练解码器权重可以显著...

基础知识复习:残差(residuals)是什么
相比之下,误差(error) x - x0<\/,这个概念通常在没有精确值 x<\/ 的情况下是不可求的,因为我们只能通过近似值来进行估算。而残差却不同,它在训练过程中为我们提供了一个实际可量化的改进方向。在深度学习的网络结构中,如ResNet,残差块(residual blocks)的设计正是为了利用这个概念,允许信息在...

深度学习之卷积神经网络经典模型
所以为了解决这个问题,作者提出了一个深度残差网络的结构Residual: 上图就是残差网络的基本结构,可以看出其实是增加了一个恒等映射,将原本的变换函数H(x)转换成了F(x)+x。示意图中可以很明显看出来整个网络的变化,这样网络不再是简单的堆叠结构,这样的话便很好地解决了由于网络层数增加而带来的梯度原来越不明显...

使用不可靠伪标签的半监督语义分割
我们使用在ImageNet[11]上预先训练过的ResNet-101[19]作为主干,使用DeepLabv3+[6]作为解码器。分割头和表示头都由两个Conv BN ReLU块组成,其中两个块都保持特征图分辨率,第一个块将通道数减半。分割头可以看作是一个像素级分类器,将ASPP模块输出的512维特征映射到C类中。表示头将相同的特征映射到256维的表示...

如何开启深度学习之旅
图像识别的深度残差学习(Deep residual learning for image recognition)(ResNet,超级超级深的深度网络!CVPR--IEEE 国际计算机视觉与模式识别会议-- 最佳论文) 1.4 语音识别的演化 [8] Hinton, Geoffrey, et al. 语音识别中深度神经网络的声学建模(Deep neural networks for acoustic modeling in speech recognition:...

常用的表格检测识别方法——表格结构识别方法 (下)
例如,SPLERGE通过最小ResNet-18提升精度,通过split-and-merge策略细致解析表格。SFCN、RPN和CPN的组合形成强大的分割模型,RPN和CPN的预测策略确保了行\/列的准确分割。而在合并模型中,通过迭代优化和子采样,模型学会了合并单元,显著提高了邻接关系的f-score。针对复杂情况,如L形错误,启发式策略如...

铜官山区18090423078: 请教怎么用matlab对数据进行归一化处理 -
字斌田可: 数据归一化应该是有多种算法的吧?线性归一化,直接sin()也算是归一化吧?matlab有一个函数:PREMNMX Preprocesses data so that minimum is -1 and maximum is 1.你可以查看它的算法的代码看是不是你要的那种算法.

铜官山区18090423078: 经常看到文章里写采用归一化的rgb模型可以去除光照和阴影的影响,为什么归一化后就可以去除这些影响呢? -
字斌田可: 通过对图像的RGB色彩空间进行归一化处理,在某些情况下是去除光照和阴影影响的一种简单和有效的方法. 假设RGB代表原图像某点的像素值,rgb表示归一化之后的值,则 r = R / (R+G+B);g = G / (R+G+B);b = B / (R+G+B);实现归一化RGB...

铜官山区18090423078: 液相面积归一化法需要去掉杂峰积分吗 我现在用的手性柱分析氨基酸异构体,其中L型占主要,D型含量特 -
字斌田可: 用面积归一化发去除掉其他峰就没意义了 只能和空白比,去除样品和空白都有的峰

铜官山区18090423078: 怎么从分子动力模拟中得到径向分布函数 -
字斌田可: 简单来说是这样:第一步,强度校正(去掉背景,偏振和吸收校正,compton散射校正) 第二步,归一化(换算成以电子单位表示的每个电子的散射强度) 第三步,计算结构因子F(Q) 第四步,傅里叶变换得到径向分布函数G(r) 第五步,误差处理(消除截断效应)

铜官山区18090423078: simca - p处理数据前用归一化吗 -
字斌田可: 这些图的样式是按照软件规定的格式来设定的.但有很多研究者想要把这些图对应的数据导出来,然后做成个性化的或创新的图.那么这期的小技巧题目是:如何将这些图的数据从SIMCA-P+中导出来.在SIMCA-P+中,把所有的分析完成,包括PCA,PLS-DA等. 在工具栏里寻找plot/list按钮,点开下拉菜单,并选择Lists菜单.

铜官山区18090423078: 求助matlab高手,为什么运行一下程序会出现 Error using ... -
字斌田可: 求助matlab高手,为什么运行一下程序会出现 Error using ...题出在你Y_f计算那两行,t是50000个数,所以y-f也应该是50000个点,应该改为:% y_f = y_f (1:N/2);(直接去掉这一行,我帮你改成注释的了)Y_f= abs(fft(y_f (1:N/2)));(这样) ...

铜官山区18090423078: opencv显示归一化后的图片 -
字斌田可: normalize(resultImage, resultImage, 0, 1, CV_MINMAX); imshow(“1”resultImage); 可以直接归一化后直接显示

铜官山区18090423078: 由于对AOI光学检测仪的原理不是很理解,有哪位高手帮忙翻译一下以下的原理与简介?在这里先说声谢谢了! -
字斌田可: 1 引言 在激烈的市场竞争中,电子产品制造厂商必须确保产品的质量,为了保证产品的质量,在产品制造过程中对各个生产环节半成品或成品进行质量监测尤为重要,随着表面组装技术(SMT)中使用的印制电路板线路图形精细化、SMD元件...

铜官山区18090423078: 模糊数学中的隶属度函数构造的问题:某指标经计算各评语集隶属度之和不为一,再进行归一化处理,正确吗? -
字斌田可: 个人觉得有些数据具有很大的噪声,在构造隶属度函数时,不用将所有的数据都加入,去掉离群值就可以了

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网