问题

NTIRE2017夺冠的EDSR去掉了Batch Normalization层就获得了提高为什么?

回答
NTIRE2017夺冠的EDSR(Enhanced Deep Residual Networks for SuperResolution)之所以在去除Batch Normalization (BN) 层后性能获得提升,是一个非常值得深入探讨的问题,这背后涉及深度学习模型在图像超分辨率任务上的特性以及BN层本身的一些潜在缺点。

下面我将详细阐述其中的原因:

1. 深度残差网络 (Residual Networks) 的内在优势与超分辨率任务的特殊性

EDSR是基于深度残差网络(ResNet)进行改进的。ResNet 的核心思想是引入残差块(Residual Block),通过跳跃连接(Skip Connection)使得网络能够更容易地学习恒等映射(Identity Mapping)。这对于训练非常深的网络至关重要,可以缓解梯度消失的问题,并允许模型学习更复杂的特征。

在图像超分辨率(SuperResolution, SR)任务中,输入图像和目标高分辨率图像之间存在着一种“弱监督”关系。简单来说,高分辨率图像是低分辨率图像经过下采样得到的,而我们的目标是根据低分辨率图像恢复出原始的高分辨率图像。这个过程本质上是在恢复丢失的高频信息。

EDSR通过堆叠大量的残差块来逐渐提取和增强图像特征,并最终生成高分辨率图像。

2. Batch Normalization (BN) 层的作用及其潜在缺点

BN层的主要目的是对神经网络的每一层输入进行归一化处理,使其均值接近0,方差接近1。这样做的好处主要有:

缓解内部协变量偏移 (Internal Covariate Shift, ICS):在训练过程中,每一层的参数都会被更新,导致每一层输入的分布发生变化,使得训练变得不稳定。BN通过稳定各层输入的分布来加速训练并提高模型的泛化能力。
允许使用更高的学习率:由于梯度的稳定性,BN允许使用更高的学习率,从而加速训练。
正则化效果:BN层在一定程度上也起到了正则化的作用,减少了对其他正则化技术(如Dropout)的依赖。

然而,BN层在图像超分辨率任务以及在某些特定模型结构下,也存在一些潜在的缺点,这些缺点可能导致其移除后性能提升:

破坏图像的统计信息和尺度不变性:
超分辨率任务的特殊性:超分辨率的输入是图像,而图像的统计信息(如亮度、对比度、纹理等)是非常重要的,它们包含了重要的语义和视觉信息。BN层会将每一层输入的均值和方差都“重置”到固定的值。对于图像来说,这种重置可能会破坏原始图像固有的统计特性,例如图像中存在的亮度变化、对比度差异等,这些信息可能是模型学习如何恢复细节的关键。
尺度不变性:BN层在训练时会学习并固化一组均值和方差(在推理时使用训练时的均值和方差的移动平均)。这使得模型对输入数据的尺度(scale)敏感。然而,图像超分辨率任务在某种程度上是期望具有一定尺度不变性的,即模型能够处理不同尺度下的图像特征。BN层的存在可能会限制这种尺度不变性。

引入人为的“零均值”假设:
BN层强制将激活值归一化到零均值。然而,在图像生成任务中,尤其是在恢复高分辨率细节时,信号的绝对值是有意义的。例如,边缘、纹理的亮度值变化是模型需要学习和恢复的。强制归零可能会使得模型在恢复绝对亮度值方面遇到困难,或者使得模型过度关注相对变化而非绝对细节。

训练与推理时期的不匹配(BN统计量问题):
在训练时,BN层会使用当前minibatch的统计量来进行归一化。为了在推理时获得确定的输出,BN层会使用在整个训练集上计算得到的移动平均的均值和方差。这种训练时和推理时统计量的差异可能会导致模型性能的微小损失,尤其是在训练集分布与测试集分布存在较大差异时。
在图像超分辨率任务中,由于我们关注的是图像细节的恢复,这种微小的统计量差异可能会被放大,影响最终生成的图像质量。

模型容量的浪费:
BN层本身也包含可学习的参数(gamma和beta),用于对归一化后的激活值进行缩放和偏移。这些参数旨在恢复被归一化的信息。如果模型结构本身已经足够强大(如EDSR堆叠了大量残差块),并且原始的激活值本身就携带了有效的信息,那么BN层和其参数可能成为一种“冗余”,并且可能限制了模型从这些原始激活值中学习到最精细的信息。

3. EDSR的设计与“去BN”策略的有效性

EDSR的设计者发现,通过移除BN层,并对模型进行适当的调整(例如,增加残差块的数量或宽度,并确保网络能够充分学习恒等映射的残差部分),模型反而能够更好地学习到图像的局部特征和全局上下文信息,从而在图像超分辨率任务上取得更好的性能。

具体来说,当BN层被移除后:

模型直接接触并学习原始的激活值:这意味着模型可以更直接地利用输入图像的原始统计信息,例如,亮度分布、对比度、纹理的细微差别等,这些信息对于精确地恢复高频细节至关重要。
更强的学习能力来处理尺度和变化:没有了BN的强制归一化,网络可以更自由地学习不同尺度下的特征,并且能够更好地处理图像中各种局部或全局的亮度/对比度变化,这与超分辨率的目标更加契合。
更小的模型和更快的推理速度:移除BN层还意味着减少了模型中的层数和参数数量,这不仅有助于提高性能,还能使模型更轻量化,推理速度更快。

结论:

EDSR在NTIRE2017夺冠后,研究人员通过实验发现移除BN层可以带来性能提升,这表明在图像超分辨率这一特定任务上,BN层并非总是最佳选择。BN层的标准化操作,虽然在其他计算机视觉任务中取得了巨大成功,但对于需要精确恢复图像原始统计信息和细微纹理的超分辨率任务来说,可能会破坏关键的图像信息,限制模型的学习能力,甚至引入不必要的统计差异。通过去除BN层,EDSR能够更直接地利用输入图像的原始信息,并展现出更强的特征学习和恢复能力,最终在超分辨率性能上获得了提升。

这个发现也启发了后续的一些超分辨率研究,例如RCAN (Residual Channel Attention Network) 等模型,在设计上也倾向于避免使用BN层,或者使用更温和的归一化方式,以更好地适应图像生成任务的特性。

网友意见

user avatar

bn其实一点都不好。个人认为bn是深度学习界有史以来最恶心的trick,实现起来一堆坑不说,加上bn以后你的输入都不iid了,要是在深度学习爆火以前有人提出bn,肯定会被统计学家打死……无奈它在图像识别上效果很好,大家只能忍了。

bn的主要作用是控制数值区间,让比较深的网络训练起来稳定性比较好,更不容易爆炸。但是初始化和调参其实可以部分解决这个问题,能不用bn的时候还是尽量不要用,尤其是做一个新的问题的时候,不要想当然就把bn塞进去。

顺便推荐一下selu,是一个有希望代替bn的研究方向zhihu.com/question/6091

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有