最后更新:2020-03-24 13:38:24 手机定位技术交流文章
选自arXiv
作者:Batchlechner等人
机器心脏编译
机器心脏编辑部
deep learning在许多领域都取得了显著的进步,但同时也存在一个问题:deep networks的训练经常受到梯度消失或梯度爆炸的阻碍,特别是对于像Transformer这样的大型网络。现在,加州大学圣地亚哥分校的研究人员已经提出了一种叫做ReZero的神经网络结构改进方法。ReZero已被用于训练一个10,000层的全连通网络,并首次训练一个100层以上的变压器。结果令人惊讶。深度学习在计算机视觉、自然语言处理等领域取得了许多重大突破神经网络的表达能力通常随其网络深度呈指数增长,这使其具有很强的泛化能力。然而,深层网络也产生了一系列问题,如梯度消失或梯度爆炸,以及模型中信息传递不畅等。研究人员使用精心设计的重量初始化方法和标准化技术,如BatchNorm或LayerNorm来缓解上述问题。然而,这些技术经常消耗更多的计算资源或者有它们自己的局限性
最近,加州大学圣地亚哥分校(UCSD)的研究人员提出了一种神经网络结构改进方法“ReZero”,它可以动态加速高质量梯度和任意深度信号的传播

纸张地址:https://arxiv.org/abs/2003.04887v1
代码地址:https://github.com/majumderb/rezero
想法其实很简单:ReZero将所有网络层初始化为常数映射在每一层中,研究者引入关于输入信号x和可训练参数α的剩余连接,用于调整当前网络层输出F(x),即

在训练开始时将α设置为零这使得对应于构成变换f的所有参数的梯度在神经网络训练的初始阶段消失,然后这些参数在训练过程中动态地生成适当的值。改进后的网络结构如下图所示:

图1:Rezero结构示意图
ReZero主要带来以下两个好处:
1。能够训练更深层神经网络
的学习信号可以在更深层的神经网络中有效地传输,这使得我们能够训练一些以前不能训练的网络。研究人员使用ReZero成功地训练了一个10,000层的全连通网络,首次训练了100层以上的变压器,并且没有使用学习速率预热和分层成形的奇怪技巧。
2。收敛速度更快
与传统的标准化操作残差网络相比,ReZero具有明显更快的收敛速度将ReZero应用于Transformer,其收敛速度比普通Transformer快56%,在enwiki8语言的建模基准上达到1.2BPB。当ReZero应用于ResNet时,在CIFAR 10上可以实现32%的加速和85%的精度。
rezero(零初始化残差)
rezero对深度残差网络的结构做了简单的改变,可以促进动态等距,实现对深度网络的有效训练。研究人员在初始阶段没有使用那些非平凡函数F
。在初始阶段,网络被表示为常数函数,并且通常满足动态等距关系在架构的修改中,即使某一层的雅可比值消失,深度网络也可以被训练(正如ReLU激活函数或自我注意机制具有这样的情况)这项技术还可以为现有的训练网络增加新的层次
实验结果
更快的深度全连接网络培训
图3显示了培训损失的演变在一个简单的实验中,使用ReZero的32层网络的收敛速度比其他拟合训练数据的技术快7到15倍。值得注意的是,与传统的全连通网络相比,当没有额外的标准化层时,剩余连接会降低收敛速度。这可能是因为初始化阶段信号的变化与网络深度无关。
随着深度的增加,ReZero架构的优势变得更加明显。为了验证该体系结构是否可用于深入的网络培训,研究人员在一台配有图形处理器的笔记本电脑上成功培训了多达10,000层完全连接的ReZero网络,使其适合培训数据集。

图3:由256 width和ReLU激活的32层全连通网络的四种变体在训练期间的交叉熵损失
更快的深层变压器培训
研究人员提出,传统变压器会抑制深层信号传输。他们评估输入序列X的n×d项在无穷小变化下的变化,以获得注意处理的输入-输出雅可比,从而验证先前的观点。
图5a示出了使用泽维尔在不同深度均匀初始化权重的变换器编码层的输入-输出雅可比值浅层的变压器呈现单峰分布,在零点附近有峰值。可以发现,在深层结构中,雅可比矩阵有大量超过计算精度的峰值。尽管这些分布依赖于不同的初始化方法,但上述定量结论在很大程度上是有效的。这些结果与人们普遍认为的深层变压器难以训练的观点一致。

图5:多输入输出雅可比矩阵中对数奇异值λ_io的直方图变压器编码器网络,分别有4层、12层和64层;(b)是第64层培训之前和期间的ReZero变压器编码器网络。深层变压器远离动态等距,即λ _ Io1,而ReZero变压器更接近动态等距,平均奇异值λ_io ≈ 1可以在许多自然语言处理任务中实现SOTA的
转换器模型通常少于24层。在这项研究中,最深的模型使用多达78层,需要256个GPU来训练研究人员已经将该模型扩展到数百个变压器层,并且仍然可以在桌面上进行培训。为了检查该方法是否可以扩展到更深的变压器模型,研究人员将ReZero变压器扩展到64层和128层,并将其与普通变压器进行比较。
结果表明,经过收敛后,12层ReZero变压器达到了与传统变压器相同的BPB。换句话说,用ReZero替换层表单不会损失任何模型性能。训练普通变压器模型会导致收敛困难或训练缓慢。当达到64层时,即使使用预热,普通变压器模型也不能收敛。当α被初始化为1时,ReZero变换器发散,从而支持α = 0的初始化理论深层变压器比浅层变压器表现出更好的性能。

表enwiki8测试装置上的变压器(TX)比较
的收敛速度比较
选择在enwiki8上的语言建模作为基准,因为更难的语言模型是NLP任务性能的良好指标在实验中,目标是通过测量12层变压器在恩威8上达到1.2比特/字节(BPB)所需的迭代次数来测量每种建议方法的收敛速度

表ReZero的标准化12层变压器以及与enwiki8验证集上1.2 BPB所需的训练迭代的比较
更快的剩余网络训练
通过以上部分,我们可以看到ReZero的连接如何使深层网络的训练成为可能,并且这些深层网络都包含将会消失的雅可比奇异值,例如ReLU激活或自我注意但是,如果没有ReZero的连接或其他模式更改,这些体系结构中的一些将无法执行培训。在本节中,将ReZero连接应用于深度残差网络进行图像识别。
虽然这些网络可以在没有ReZero连接的情况下进行训练,但观察显示,在CIFAR-10数据集上训练的ResNet56模型4(最多200个纪元)的验证误差已大大提高:从(7.37±0.06)%提高到(6.46±0.05)%这种效果是通过将模型中的所有剩余连接转换为ReZero连接来获得的。实施ReZero后,验证错误的数量减少到不到15%,同时减少了(32±14)%尽管这些结果目前只提供了有限的信息,但它们仍然指出了ReZero连接具有更广泛的适用性,从而促进了进一步的研究。
手动操作
项目地址:
https://github.com/majumderb/rezero
提供了一个定制的ReZero变压器层(RZTX)。例如,以下操作将创建一个变压器编码器:
importtorch importtorch.nn来自rezero . Transformer import rztencoderlayer _ layer = rztencoderlayer(d _ mod El = 512,nhead=8)transformer_encoder = nn。转换编码器(编码器_层,层数=6)src = torch.rand(10,32,512)out = Transformer _ encoder(src)
创建转换器解码器:
ImportToRCH ImportToRCH。NN Asnn FrOm Rezero。变压器输入RzTxDecoder解码器_ Layer = RzTxDecoder (D _ Model = 51 2,nhead=8)变压器_解码器= nn。transformerDecoder(decoder _ layer,num _ layers = 6)memory = torch . rand(10,32,512)tgt = torch.rand(20,32,512)out = Transformer _ decoder(TGT,memory)
请小心确保norm参数保留为None,以避免在Transformer中使用layer表单
本文由 在线网速测试 整理编辑,转载请注明出处。