Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

Hongyi Zhang等作者路 思源参与

不用批归一化也能训练万层ResNet,新型初始化方法Fixup了解一下

批归一化(BN)基本是训练深度网络的必备品,但这篇研究论文提出了一种不使用归一化也能训练超深残差网络的新型初始化方法 Fixup。

前几天,我们介绍了「机器学习领域的七大谣传」,其中一个谣传就是「训练超深度残差网络怎么少得了批归一化(BN)!」。文中介绍了论文《Fixup Initialization: Residual Learning Without Normalization》表明在不引入任何归一化方法的情况下,通过使用原版 SGD,可以有效地训练一个 10,000 层的深度网络。也就是说「训练超深残差网络可以不用批归一化」。

近日,Tesla AI 总监 Andrej Karpathy 也发推提及了这篇论文,这篇论文到底如何,我们一起来看一下吧。

归一化层是当前最优神经网络架构的重要组成部分。人们普遍认为归一化层可以稳定训练、实现较高的学习率、加速收敛并提高泛化能力,尽管其有效的原因仍然是一个活跃的研究课题。这篇论文就挑战了这一「共识」,认为这些好处并不独属于归一化。

研究者提出了一种新型初始化方法 fixed-update initialization (Fixup),试图在训练开始时通过恰当地调整初始化来解决梯度爆炸和梯度消失问题。实验证明,使用 Fixup 训练残差网络与使用归一化训练残差网络一样稳定,甚至在训练 10000 层的深度网络时也是如此。此外,经过恰当的正则化后,Fixup 使残差网络在不使用归一化的情况下也能在图像分类机器翻译任务中达到当前最优性能。

左图是 ResNet,红色为批归一化层。中间图是堆叠在一起也能稳定训练的简单 Fixup 网络(移除了偏置项)。右图是添加偏置项参数后的 Fixup。

作者在论文开头就提出了两个问题:

  • 没有归一化,深度残差网络可以得到可靠的训练吗?

  • 如果可以的话,那么使用和不使用归一化的深度残差网络,在相同学习率和最优化方法时,收敛速率和泛化性能能否一致?

而这篇论文中给出的答案是两个「Yes」!

该研究解释了给出这个答案的原因:

  • 归一化为什么有助于模型训练?论文作者推导出残差网络在初始化时,梯度范数的下界,从而解释了为什么在使用标准初始化时,归一化技术对于用大学习率训练深度残差网络是必需的。

  • 关于不使用归一化的模型训练,作者提出了一种新初始化方法 Fixup。通过调整网络架构对残差分支的标准初始化进行重缩放,Fixup 可使深度残差网络在不使用归一化技术的情况下以最大学习率进行稳定训练。

作者还在图像分类机器翻译任务上对以上第二点结论进行了验证:

  • 图像分类:作者在图像分类基准数据集 CIFAR-10 上训练 Wide-ResNet、在 ImageNet 数据集上训练 ResNet,但将批归一化技术替换成了 Fixup,结果发现经过恰当正则化的 Fixup 性能堪比使用归一化技术的精调基线模型。

  • 机器翻译:作者在机器翻译基准 IWSLT 和 WMT 上训练 Transformer 模型,但将层归一化替换成了 Fixup,结果发现新模型优于基线模型,且同样的架构输出结果却达到了新高。

深度网络标准初始化的问题

标准初始化方法尝试设置网络的初始参数,以使激活函数不会消失也不会爆炸。但是,据观察在没有归一化技术的时候,标准初始化无法恰当处理残差连接的梯度流,从而导致梯度爆炸。

作者分析后指出了深度残差网络标准初始化的失败模式:某些层的梯度范数下界会随着网络深度增加而无限增长,即梯度爆炸。具体推导过程参见论文第 2 章。

新型初始化方法 Fixup

作者同时指出摆脱该失败模式未必就能带来成功的训练,毕竟我们所关心的是把整个网络作为函数,而不是一个层或一个网络块。因此,作者提出了一种新型初始化方法 Fixup,它使用自上而下的设计,通过调整标准初始化来确保网络函数的更新(Gradient)保持在恰当范围内。作者用 η 表示学习率,将目标设置为:

换言之,其目标是设计一种初始化,使网络函数的 SGD 更新保持在合适的尺度内,且独立于网络深度。

总结来看,该研究提出的新型初始化方法 Fixup 可使在不使用归一化技术的情况下完成残差网络训练。其原理如下:

  • 1. 将分类层和每个残差分支的最后一层初始化为 0。

  • 2. 使用标准方法对其他层执行初始化,然后按缩放残差分支中的权重层。

  • 3. 在每个分支中添加一个标量乘数((initialized at 1),在每个卷积、线性和元素级激活层前面添加一个标量偏差((initialized at 0)。

其中规则 2 是必要的。

实验结果

该研究在深度网络和图像分类机器翻译任务上对这一新方法进行了测试。

深度网络

以默认学习率在 CIFAR-10 数据集上进行第一个 epoch 训练后,Fixup 的性能与批归一化不相上下,甚至对 10000 层的深度网络也是如此。

图 3:不同方法以默认学习率在 CIFAR-10 数据集上训练一个 epoch,训练后的残差网络深度和测试准确率对比。从图中可以看到 Fixup 在训练非常深的网络时可以与批归一化具备同样的学习率(越高越好)。

图像识别

研究者在图像分类应用上将批归一化替换成 Fixup,来测试 Fixup 的能力。

表 1:使用 ResNet-110 在 CIFAR-10 数据集上的结果(5 次训练的平均值,分值越低越好)。

Fixup 能够在 CIFAR-10 上以高学习速率训练一个 110 层的深度残差网络,得到的测试集表现和利用批归一化训练的同结构网络效果相当。

作者还在 ImageNet 数据集上进行了测试。

表 2:使用 ResNet 架构在 ImageNet 数据集上的测试结果(分值越低越好)。

机器翻译

为了展示 Fixup 的通用性,研究者还使用 Transformer 在机器翻译任务中进行了测试。

表 3:在机器翻译任务上对比 Fixup 和 LayerNorm(分值越高越好)。


论文链接:https://arxiv.org/pdf/1901.09321v1.pdf

理论批归一化ResNetSGD权重初始化
81
相关数据
范数技术

范数(norm),是具有“长度”概念的函数。在线性代数、泛函分析及相关的数学领域,是一个函数,其为向量空间内的所有向量赋予非零的正长度或大小。半范数反而可以为非零的向量赋予零长度。

激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

机器翻译技术

机器翻译(MT)是利用机器的力量「自动将一种自然语言(源语言)的文本翻译成另一种语言(目标语言)」。机器翻译方法通常可分成三大类:基于规则的机器翻译(RBMT)、统计机器翻译(SMT)和神经机器翻译(NMT)。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

深度残差网络技术

残差网络是为了解决深度神经网络(DNN)隐藏层过多时的网络退化问题而提出。退化(degradation)问题是指:当网络隐藏层变多时,网络的准确度达到饱和然后急剧退化,而且这个退化不是由于过拟合引起的。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

正则化技术

当模型的复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值后又增大。当选择的模型复杂度过大时,过拟合现象就会发生。这样,在学习时就要防止过拟合。进行最优模型的选择,即选择复杂度适当的模型,以达到使测试误差最小的学习目的。

梯度消失问题技术

梯度消失指的是随着网络深度增加,参数的梯度范数指数式减小的现象。梯度很小,意味着参数的变化很缓慢,从而使得学习过程停滞,直到梯度变得足够大,而这通常需要指数量级的时间。这种思想至少可以追溯到 Bengio 等人 1994 年的论文:「Learning long-term dependencies with gradient descent is difficult」,目前似乎仍然是人们对深度神经网络的训练困难的偏好解释。

批归一化技术

批归一化(Batch Normalization,BN)由谷歌于2015年提出,是一个深度神经网络训练的技巧,它不仅可以加快模型的收敛速度,还能在一定程度上缓解深层网络中的“梯度弥散”问题,从而使得训练深层网络模型更加容易和稳定。目前BN已经成为几乎所有卷积神经网络的标配技巧了。从字面意思看来Batch Normalization(简称BN)就是对每一批数据进行归一化。

图像分类技术

图像分类,根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法。它利用计算机对图像进行定量分析,把图像或图像中的每个像元或区域划归为若干个类别中的某一种,以代替人的视觉判读。

层归一化技术

深度神经网络的训练是具有高度的计算复杂性的。减少训练的时间成本的一种方法是对神经元的输入进行规范化处理进而加快网络的收敛速度。层规范化是在训练时和测试时对数据同时进行处理,通过对输入同一层的数据进行汇总,计算平均值和方差,来对每一层的输入数据做规范化处理。层规范化是基于批规范化进行优化得到的。相比较而言,批规范化是对一个神经元输入的数据以mini-batch为单位来进行汇总,计算平均值和方法,再用这个数据对每个训练样例的输入进行规整。层规范化在面对RNN等问题的时候效果更加优越,也不会受到mini-batch选值的影响。

堆叠技术

堆叠泛化是一种用于最小化一个或多个泛化器的泛化误差率的方法。它通过推导泛化器相对于所提供的学习集的偏差来发挥其作用。这个推导的过程包括:在第二层中将第一层的原始泛化器对部分学习集的猜测进行泛化,以及尝试对学习集的剩余部分进行猜测,并且输出正确的结果。当与多个泛化器一起使用时,堆叠泛化可以被看作是一个交叉验证的复杂版本,利用比交叉验证更为复杂的策略来组合各个泛化器。当与单个泛化器一起使用时,堆叠泛化是一种用于估计(然后纠正)泛化器的错误的方法,该泛化器已经在特定学习集上进行了训练并被询问了特定问题。

推荐文章
123