编辑:David 拉燕
【新智元导读】近日,微软研究院的研究人员搞出了一个1000层的Transformer,在多语种机器翻译任务上刷新多项SOTA
近年来,追求大规模的Transformer模型成为了一种潮流。
从一开始的百万级的模型参数,到十亿级,再到万亿级,参数规模极大增加。大规模的模型可以在大量任务中可以有更棒的表现,在小样本和零样本学习的情况下也展现出了出色的能力。
尽管参数的数量越来越大,参数的深度却一直在被Transformer训练的不稳定性所局限。2019年,科学家Nguyen和Salazar发现,基于post-norm连接的pre-norm残差连接可以提升Transformer的稳定性。
底层Pre-LN的梯度会比顶层的要大,这就导致和Post-LN相比,在性能上会有些许衰退。
为了解决这个问题,研究人员尝试提升了深度Transformer的优化。这是通过更好的初始化或是架构实现的。这些办法使Transformer在数百层的情况下也能保持稳定。
但是还是没有一种办法可以使Transformer的层数到达1000.
论文链接:https://arxiv.org/abs/2203.00555
最近,来自微软研究院的一篇论文,成功实现了Transformer层数量级上的突破,达到了1000层。
研究人员的目标就是不断提升Transformer训练的稳定性,继续提升模型的深度。他们研究了优化不稳定的原因所在,发现正是模型参数规模爆炸式的增加导致了这种不稳定性。
基于上述结论,研究人员在残差连接处使用了一种新的规范化函数——DEEPNORM。理论上,这种新的函数可以把模型的更新限制在一个常数以内。
这种办法看似简单,实则有效,只需要改变几行代码而已。
有了新函数,Transformers的稳定性就得到了大幅提升。研究人员也可以把模型的深度扩大到1000层。
此外,DEEPNORM还成功将Post-LN和Pre-LN的优良性能进行结合。新方法是Transformers的上位替代,对于深度的模型和大规模的模型都是如此。
值得一提的是,和目前最先进的有12B参数的48层模型相比,3.2B参数的200层模型实现了5 BLEU的提升。这部分提升主要体现在大规模多语言机器翻译基准上。
在基于Transformer的PostLN上使用新发现的办法不是件难事。和Post-LN相比,DEEPNORM进行层级规范化之前,升级了残差连接。
另外,研究人员在初始化的过程中把参数降级了。特别要指出,他们把前馈网络的占比提高了,一同被提高的还有注意力层的价值投影和输出投影。
研究人员引入了超深Transformer——DEEPNET. 通过缓解极大增长的模型在升级中遇到的问题,DEEPNET可以是优化的过程更加稳定。
首先,研究人员给出了DEEPNET模型升级的预测量级。之后又给出了理论分析,发现只要使用DEEPNORM,DEEPNET升级的过程就可以被限制在一个常数。
DEEPNET基于Transformer架构。和之前的vanilla Transformer相比,在每个子层上,都使用了研究人员最新研究的DEEPNORM,而不是Post-LN。
其中,α是常数,Gl(xl , θl)是第I层Transformer的子层的方程,同时θl是系数。DEEPNET还能残差内部的权重放大了β。
此外,注意力是Transformer一个很重要的部分。
在不失一般性的情况下,研究人员研究了1-head的情况。其中Q、K、V分别指query、key和value。而WQ、WK、WV都是输入的映射矩阵。WO则是输出的映射矩阵。因此,注意力方程式可以写作:
下图展示了在早期的训练阶段,vanilla Post-LN和DEEPNET模型升级时的情况。研究人员将64-128-2微小Transformer进行了可视化,它们的深度从6L6L到100L100L不等。
从该图中我们可以看出,DEEPNET比Post-LN有更稳定的更新。
我们在流行的机器翻译基准上验证了DEEPNET的有效性,包括 IWSLT-14德语-英语(De-En)数据集和WMT-17英语-德语(En-De)数据集。
我们将DEEPNET与多个最先进的深层Transformer模型进行了比较,包括DLCL、NormFormer、ReZero、R-Fixup,T-Fixup,DS-init等。
我们用上述其他模型的开源代码重现了基线标准性能,并设置了相同的超参数。使用BLEU作为所有实验的评估指标,评估结果如下:
上表所示为基线和DEEPNET的结果和DEEPNET在WMT-17 英语-德语翻译数据集上的结果
与Post-LN的模型相比,DEEPNET更加稳定,可以成功扩展到100L-100L,在测试集上达到28.9的BLEU。相比之下,当深度达到50L-50L时,带有Post-LN的基线导致了不稳定的优化。此外,当模型较浅时,DEEPNET取得了与这些基线相当的性能。
我们将模型的深度从10L-10L到100L-100L,间隔为10层。除了ReZero3,所有实验都是在混合精度训练下进行的。上图所示为IWSLT-14数据集上的结果。
我们对模型进行了8000步的训练,因为我们发现大多数收敛发生在优化的开始阶段。总的来说,DEEPNET从浅到深都很稳定,收敛很快,只用了8000步就达到了30多个BLEU,大多数基线达不到这一水平。另外,随着模型深度的增加,其性能不断提高。
我们进一步将DEEPNET分别扩展到更高的学习率、批规模和隐藏维度上。
在每个实验中只改变一个超参数,其他超参数固定。上图所示为WMT-17验证集上的损失曲线。
结果表明,在这一设置下,DEEPNET可以毫无困难地训练。在1024个隐藏大小的情况下,由于过拟合,DEEPNET的损失在10K步之后增加。此外,DEEPNET可以从更大的设置中获益,获得更快的收敛速度和更低的验证损失。
我们在大规模多语言机器翻译上进行了实验,这是大模型的一个很好的测试平台。
首先使用OPUS-100语料库来评估模型。OPUS100是一个以英语为中心的多语言语料库,涵盖了100种语言,它是从OPUS集合中随机抽取的。我们将DEEPNET的规模扩大到1000层。该模型有一个500层的编码器,一个500层的解码器,512个隐藏大小,8个注意力头,以及2048维的前馈层。
如上图所示,实验结果表明,增加网络深度可以显著提高神经机器翻译的翻译质量:48层的基线比12层的模型平均实现了3.2分BLEU分数增长。
DEEPNET可以成功地将深度扩大到1000层,比基线提高了4.4 BLEU。而且DEEPNET只训练了4个epoch,如果有更多的计算预算,其性能还可以进一步提高。
为了探索DEEPNET在多语言神经机器翻译上的局限,我们还使用CCMatrix扩大训练数据的规模。我们扩大了CCAligned、OPUS和Tatoeba4的数据,以覆盖Flores101评估集的所有语言。最终的数据包括102种语言,1932个方向,以及120亿个句子对。
利用这些数据,我们用100层编码器、100层解码器、1024个隐藏维度、16个头和4096个中间维度的前馈层来训练DEEPNET,结果如下:
综上,DEEPNET提高了Transformer的稳定性,并成功地将其扩展到1000层。它在理论上证明了以模型更新的恒定上界来稳定优化。实验结果验证了我们的方法在各种基准中的有效性。
目前的实验专注于机器翻译作为一个测试平台。在未来,我们将扩展DEEPNET,支持更多不同的任务,如语言模型预训练、蛋白质结构预测,以及BEiT视觉预训练等。
参考链接:
https://arxiv.org/abs/2203.00555