现阶段最好的神经网络结构中,规范化(normalization)是一项重要技术。尽管规范化有利于网络训练的原因仍不清楚,但它已经被广泛的应用于提高模型的泛化能力、稳定训练过程、以及加速模型收敛,同时规范化也使得使用更高的学习率训练模型成为了可能。
近日,来自MIT、谷歌大脑、斯坦福的三名研究人员提出了一项具有挑战性的工作(这项工作在 Facebook 工作期间完成),他们认为规范化的好处并不是唯一的。论文《Fixup Initialization: Residual Learning Without Normalization》中提出了一种固定更新初始化(fixed-update initialization,Fixup),该论文已被 ICLR2019 接收。我们对该方法做了简要介绍,本文是 AI 前线第 70 篇论文导读。
背 景
在人工智能应用发展火热的今天,创新的网络模型及其训练技巧成为了人工智能发展的核心技术。例如在2016年何凯明及其团队提出ResNet的残差学习结构后,大部分SOTA的识别系统都是基于这种在卷积网络与加性残差连接堆叠的结构上添加一些规范化机制而设计的。除了图像分类,多种类的规范化技术在很多其他领域,如机器翻译、生成模型等方面都扮演着重要的角色。
对于规范化技术能产生上述好处的原因,学术界目前还没有达成一种共识。这篇论文对以下这些方面进行了研究:
在不使用规范化的情况下,深度残差网络能否可靠地训练?
在不使用规范化的情况下,深度残差网络能否使用相同的学习率进行训练、能否以相同的速度收敛以及能够获得一样好的泛化能力,或者更好?
令人惊讶的是,研究人员发现对于上述的两个问题,回答是肯定的。同时,这篇论文也对以下几个问题进行了讨论(后文均使用第一人称编译):
为什么规范化有助于训练过程。在残差网络的初始化过程中,我们对一种低边界的梯度范数进行了研究,这可以很好的解释为什么使用标准初始化、规范化技术对于深度残差网络在大学习率的情况下是必要的。
在不使用规范化的情况下进行训练。我们提出了Fixup技术——一种通过修改网络的结构,对残差分支的标准初始化进行放缩的方法。Fixup在不使用规范化对极深的残差网络训练时,可以使用最大的学习率。
图像分类。我们使用Fixup代替了批规范化过程,在图像分类的基准数据库CIFAR-10(Wide-ResNet)与ImageNet(ResNet)上进行了验证。实验结果表明,在使用了适当的正则化后,使用Fixup的方法训练出的网络可以与使用规范化的方法训练的网络达到相同的效果。
机器翻译。我们使用Fixup替代了规范化层,在机器翻译的基准数据库IWSLT和WMT使用Transformer(一种发表于2017年NeurIPS的目前最好的机器翻译算法 )模型进行了训练。发现该方法可以超过基准线并在相同的框架下取得的目前最好的结果。
使用标准初始化的ResNet会导致梯度爆炸
标准初始化方法是为了初始化网络参数,防止发生梯度消失或梯度爆炸而提出的。然而,在不使用如BatchNorm等一些规范化的方法时,标准初始化并不能很好的解决残差连接中梯度爆炸的问题。针对该问题,Balduzzi提出了一种ReLU网络,我们使用正定同质激活函数将ReLU网络的思想泛化到残差网络。不使用规范化层时,原始的ResNet中每个残差块的激活函数可以表达为:
为了便于分析,我们分析使用了正定同质函数,首先介绍两个定义:
p.h.函数的例子在神经网络中是大量存在的。包括很多无偏的线性操作,例如全连接层、卷积层、池化层、串联层和dropout等,当然也包括ReLU这种非线性函数。此外,我们还引入了以下两个命题:
猜想1 一个使用交叉熵损失的分类网络f可以看成是一个若干个网络块组成的集合,其中每个网络块都是一个p.h.函数
猜想2 FC层的权重是从零均值对称分布中独立同分布采样得到的。
在一个使用了ReLU函数的残差网络中,如果我们移除了所有的规范化层,根据这些猜想可得到所有的偏置都被初始化为0。
我们的结论可以总结为如下两条,证明过程在论文的附件中:
在图2中,我们提供了不使用规范化时ResNet中的三种p.h.集合的例子。基于理论2,如果未归一化概率值z在初始化的时候被放大了,这三个例子都有可能会遭遇梯度爆炸问题。而在ResNet中,如果不使用规范化,而使用传统方法初始化参数,上述情况是很有可能出现的。这就是我们提出一种新的初始化方法的动机。
Fixup:在SGD的每一步更新残差网络
在这一部分,我们提出了一种由上至下的新的初始化方法。通过对标准初始化简单地放缩,可以保证在合适的范围更新网络函数。首先,我们假设学习率η并设定我们的目标:
从另一个角度讲,我们的目标是设计一种初始化方法,从而使SGD可以不依赖深度且以正确的比例对网络函数进行更新。
我们将捷径(Shortcut)定义为残差网络中从输入到输出的最短路径。捷径是一种典型的可训练的浅层网络。假设使用标准方法对捷径进行初始化,我们来分析一下残差分支的初始化情况。
残差分支同步更新网络。
最初,我们发现SGD在更新每个残差分支的时,会在高度相关的方向上改变网络的输出。这意味着,如果一个残差网络含有L个残差分支,那么每个残差分支在一次迭代中,应当对网络的输出平均改变Θ(η/L)从而达到对整个网路输出改变为Θ(η)。
对于标量分支的研究。
最终我们可以得到,当且仅当满足以下条件时:
偏置和乘法器的影响。
通过对残差分支中权重的放缩,一个残差网络在SGD的每一步更新值为Θ(η),到这里我们的目标已经达成了。然而,为了使训练性能与使用规范化时相匹配,我们还需要考虑偏置和乘法器的情况。
在全连接层和卷积层使用偏置是一种很通用的方法。在规范化方法中,偏置和缩放参数被用来重建特征经过规范化操作后的表征能力。因为权重层与激活层的输入/输出均值可能不同,因此在不使用规范化的残差网络中插入偏置项同样可以有助于训练网络。我们发现在每个权重层和非线性激活层前仅插入一个标量偏置可以显著地提高训练性能。
乘法器会对残差分支的输出进行放缩,这与批规范化中的放缩参数功能类似(批规范化中两个重要参数为:scale和shift,即放缩与滑动)。我们发现,在每个残差分支中插入一个标量乘法器可以模仿使用规范化的网络中权重模值动态变化的过程。最终,我们得到了训练不使用规范化方法的残差网络的完整方法:
Fixup 初始化
实 验
我们在CIFAR-10数据库上测试了第一轮迭代(即数据库中所有图像通过模型一次)结束后模型的测试准确率,发现对于多种深度的卷积神经网络,在学习率相同的情况下Fixup可以达到与BatchNorm相同的效果。实验结果如下图所示:
图1 CIFAR-10数据库上各种方法的训练结果比较,值越大表示结果越好。
此外,我们还对比了使用Fixup训练不同深度的ResNet和其他方法在ImageNet数据库上的结果,实验结果如下表所示:
可以看出Fixup与组规范化方法的性能不相上下,该实验中通过交叉验证得到了三种方法的最优偏置标量,对于批规范化、组规范化和Fixup分别为0.2,0.1和0.7。
此外,在机器翻译的SOTA方法中我们同样使用Fixup代替规范化层进行了实验。我们惊奇地发现,当使用Fixup代替规范化层可以更好地防止模型过拟合,我们认为这要归功于dropout操作的正则化。在两个数据库上,使用Fixup都取得了目前最好的结果,实验结果如下表:
结 论
Fixup通过对标准初始化进行适当的放缩来解决训练过程中梯度爆炸和梯度消失的问题。在不使用规范化的情况下,使用Fixup训练的残差网络可以达到与使用规范化训练时相同的稳定性,甚至在网络层数达到了10000层时也可以不相上下。此外,在使用了合适正则化方法的情况下,通过Fixup训练的不使用规范化的残差网络在图像分类和机器翻译上达到了目前最好的水平。在理论和应用两方面,这篇工作都给出了一种新的尝试。在理论层面,去除规范化有利于更简便地分析残差网络。在应用层面,Fixup对于发展正则化方法提供了可能,比如结合ZeroInit等。
论文链接:https://arxiv.org/pdf/1901.09321.pdf