赞
踩
可以在https://github.com/google-research/ALBERT上找到代码和预先训练的模型。
全面的网络预训练在语言表示学习方面取得了一系列突破。许多非平凡的NLP任务,包括那些训练数据有限的任务,都从这些预 训练的模型中受益匪浅。这些突破最令人信服的迹象之一是针对中国的中学和高中英语考试而设计的阅读理解任务RACE测试上机器性能的演变:该论文最初描述了这项任务,并制定了建模挑战报告,然后最先进的机器精度为44.1%;最新公布的结果显示,他们的模型性能为83.2% ;我们在这里展示的工作将其进一步提高到89.4%,一个惊人的45.3%的改进,这主要归功于我们当前构建高性能预训练语言表示的能力。
这些改进的证据表明,大型网络对于实现最新性能至关重要。大型预训练模型并将其提炼成较小的模型已成为常见的实际应用。考虑到模型大小的重要性,我们问:拥有更好的NLP模型是否像拥有更大的模型一样容易?
回答此问题的障碍是可用硬件的内存限制。鉴于当前最先进的模型通常具有数亿甚至数十亿个参数,当我们尝试扩展模型时,很容易遇到这些限制。由于开销与模型中参数的数量成正比,因此在分布式训练中,训练速度也可能受到很大的阻碍。
解决上述问题的现有解决方案包括模型并行化和内存管理。
这些解决方案解决了内存限制问题,但没有解决通信开销。 在本文中,我们通过设计具有比传统BERT架构更少的参数的Lite BERT(ALBERT)架构来解决所有上述问题。
ALBERT结合了两种参数减少技术,这些技术可消除预训练模型时的主要障碍。第一个是分解式嵌入参数化。通过将大的词汇嵌入矩阵分解为两个小的矩阵,我们将隐藏层的大小与词嵌入层的大小分开。这种分解使得在不显着增加词汇表的嵌入参数大小的情况下,更容易增加隐藏的大小。第二种技术是跨层参数共享。此技术可防止参数随着网络的深度而增长。与BERT-large相似的ALBERT配置参数减少了18倍,并且训练速度提高了约1.7倍。参数减少技术还可以充当正则化的形式,从而稳定训练并有助于泛化。
为了进一步提高ALBERT的性能,我们还引入了一种自监督的句子顺序预测(SOP)损失。 SOP主要关注句子间的连贯性,旨在解决原始BERT中提出的下一个句子预测(NSP)的无效性。
这些设计决定的结果是,我们能够扩展到更大的ALBERT配置,这些配置的参数仍然比BERT-large少,但性能却明显好于BERT。
已经证明,学习自然语言的表示形式对广泛的自然语言处理很有用任务并已被广泛采用等。最重大的变化之一在过去的两年中,无论是标准的或情境化,进行全网络预训练,然后进行针对特定任务的微调。在这方面的工作中,通常显示出更大的模型尺寸可以改善性能。例如,Devlin等。 显示了三种选定的自然语言理解任务,使用更大的hidden size
,更多hidden layers
和更多attention heads
导致更好的性能。但是,它们的隐藏大小为1024,可能是因为模型大小和计算成本问题。
由于计算限制,尤其是在GPU / TPU内存限制方面,很难对大型模型进行实验。 鉴于当前最先进的模型通常具有数亿甚至数十亿个参数,我们可以轻松达到内存限制。 为了解决这个问题,Chen等。 提出了一种称为梯度检查点的方法,以减少额外的前向通过为代价的亚线性存储需求。 Gomez等。 提出了一种从下一层重建每个层的激活的方法,这样它们就不需要存储中间激活。 两种方法都以速度为代价减少了内存消耗。 Raffel等。建议使用模型并行化来训练巨型模型。 相反,我们的参数减少技术可减少内存消耗并提高训练速度。
具有跨层参数共享的网络(Universal Transformer,UT)在语言建模和主谓词一致方面比标准转换器具有更好的性能。 最近,提出了transformer网络的Deep Equilibrium Model(DQE),并表明DQE可以达到一个平衡点,对于该平衡点,某层的输入嵌入和输出嵌入保持相同。 将参数共享transformer与标准transformer相结合,这进一步增加了标准transformer的参数数量。
ALBERT根据预测两个连续文本段的顺序使用预训练损失。话语中的连贯性和衔接性已得到广泛研究,并且已经发现许多现象将相邻的文本片段连接起来。在实践中发现大多数有效的目标都非常简单。 句子嵌入通过使用句子编码来预测相邻句子中的单词来学习。句子嵌入学习的其他目标包括预测未来的句子而不是仅预测邻居和预测显式话语标记。ALBERT的损失与句子排序目标最相似, 学习句子嵌入以确定两个连续句子的顺序。但是,与上述大多数工作不同,ALBERT的损失是按文本段而不是句子来定义的。 BERT使用损失的依据是预测对中的第二个片段是否已与另一个文档中的一个片段交换。排序是一项更具挑战性的预训练任务,并且对某些下游任务更有用, 还尝试预测文本的两个连续段的顺序,将其与原始的下一句预测结合在三向分类任务中。
ALBERT架构的主干与BERT相似,因为它使用具有GELU非线性的transformer encoder。将词汇embedding size表示为E,将encoder layers层数表示为L,将hidden size表示为H,将feed forward/filter size设置为4H,attention heads数设置为H / 64。
ALBERT对BERT的设计选择有三个主要的贡献。
在BERT中,以及随后的建模改进(例如XLNet和RoBERTa)中,单词 embedding size E与hidden layer size H捆绑在一起,即 E ≡ H E≡H E≡H 出于建模和实际原因,此决定似乎不是最佳选择,如图 1 所示。
从建模角度来看,单词 embeddings旨在学习上下文无关的表示,而 hidden-layer embeddings 旨在学习上下文相关的表示。 类似BERT是使用上下文来获得表示,以提供学习此类依赖于上下文的表示的信号。 这样,将单词 embedding size E与hidden layer size H脱开,就可以使我们更有效地利用由建模需求所决定的总模型参数,从而决定了 H ≫ E H \gg E H≫E。
从实际的角度来看,自然语言处理通常需要词汇量V很大。如果 E ≡ H E ≡H E≡H ,则增加H会增加embedding矩阵的大小,其大小 V × E V\times E V×E 。这很容易产生一个拥有数十亿参数的模型,其中大多数参数在训练期间只进行少量更新。
因此,对于ALBERT,我们对embedding参数使用因式分解,将它们分解成两个更小的矩阵。我们不直接将one-hot vectors投影到大小为 H H H的hidden space中,而是先将其投影到大小为 E E E的低尺寸的embedding space中,然后再将其投影到隐藏空间中。即分解 O ( V × H ) O(V×H) O(V×H)到 O ( V × E + E × H ) O(V×E + E×H) O(V×E+E×H)。
当 H ≫ E H \gg E H≫E时,此参数的减少意义重大。我们选择对所有单词使用相同的E,因为与全词embedding相比,它们在文档中的分布要均匀得多。具有不同embedding大小对于不同的单词很重要。
图 1 因 式 分 解 过 程 图 1 因式分解过程 图1因式分解过程
参数减少:
V ∗ H = 30000 ∗ 768 = 23 , 040 , 000 V ∗ E + E ∗ H = 30000 ∗ 256 + 256 ∗ 768 = 7 , 876 , 608 V∗H=30000∗768=23,040,000\\ V∗E+E∗H=30000∗256+256∗768=7,876,608 V∗H=
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。