雷锋网 AI 源创评论按:近日,谷歌宣布将 AI 语言模型 ELECTRA 作为 TensorFlow 之上的开源模型发布。该方法用到了一种称为替换令牌检测(RTD)的新预训练任务,使其能够在从所有输入位置学习的同时,训练双向模型。
并且,在同等计算资源的情况下,ELECTRA 的性能优于现有方法;而在参数量只有 1/30 的情况下,取得不逊于最先进 BERT 系列模型的性能。谷歌发布了相关文章介绍这一开源成果,雷锋网 AI 源创评论将其整理编译如下。
近年来,语言预训练模型的最新进展使得自然语言处理也取得了重大进展,其中不乏一些最先进的模型,例如:BERT,RoBERTa,XLNet,ALBERT 和 T5 等。
这些方法虽然在设计上有所不同,但在利用特定的 NLP 任务(例如:情感分析和问题解答等)进行微调时,有着相同思路,即:利用大量未标记的文本,来构建语言理解的通用模型。
因此,现有的预训练方法通常分为两类:语言模型(LM),例如:GPT。该类方法按照从左到右的顺序处理输入文本,然后在给定先前上下文的情况下,预测下一个单词。
另一个则是掩码语言模型(MLM),例如:BERT,RoBERTa 和 ALBERT。这类模型它们分别预测输入中已被屏蔽的少量单词内容。MLM 相比 LM 而言,具有双向预测的优势,因为它可以看到要预测的单词左侧和右侧的文本。
但 MLM 模型预测也有缺点,这些模型的预测仅限于输入标记的某个很小的子集(被掩盖部分的 15%),从而减少了他们从每个句子中获得信息的量,增加了计算成本。
现有的预训练方法及其缺点。箭头指示哪些标记用于生成给定的输出表示形式(矩形)。左:传统语言模型(例如 GPT)仅使用当前单词左侧的上下文。右:掩码语言模型(例如 BERT)从左到右都使用上下文,但是对于每个输入仅预测一小部分单词
正是为了克服以上两类语言模型存在的缺点,谷歌提出了 ELECTRA(Efficiently Learning an Encoder that Classifies Token Replacements Accurately)语言模型。这是一种新型预训练方法,其关键点在于将预训练文本编码器作为标识符而非生成器,来处理现存语言模型的问题。
论文地址:https://openreview.net/pdf?id=r1xMH1BtvB
在相同的模型大小、数据、计算量的情况下,该方法的性能显著优于 MLM 类的方法,例如 BERT 和 XLNet;而且,ELECTRA 小模型仅需要在 1 块 GPU 训练 4 天即可得到。
具体实验数据显示,这个小模型比 BERT 小模型在 GLUE 得分上 高 5 个点,甚至比更大的 GPT 模型(该模型使用 30 倍以上的计算能力)效果还要好。
而 ELECTRA 在使用少于 1/4 的计算量时,可以在 GLUE 自然语言理解基准上达到 RoBERTa 和 XLNet 的性能。如果使用更多的计算机来训练大型 ELECTRA,该模型在 SQuAD 2.0 的问答数据集和语言理解任务的排行榜上,获得了最先进的表现。(具体数据见第四小节)
ELECTRA 使用一种称为替换令牌检测(RTD)的新预训练任务,该任务在从所有输入位置(如:LM)学习的同时,训练双向模型(如:MLM)。
具体而言,ELECTRA 的目标是学习区分输入的词。它不使用掩码,而是从一个建议分布中采样词来替换输入,这解决了掩码带来的预训练和 fine-tune 不一致的问题。
然后模型再训练一个判别器,来预测每个词是原始词还是替换词。而判别器的一个优点则是:模型从输入的所有词中学习,而不是像 MLM 那样,仅使用掩盖的词,因此计算更加有效。
正如很多开发者联想到的对抗学习方法,ELECTRA 确实受到到生成对抗网络的启发(GAN)。但不同的是,模型采用的是最大似然而非对抗学习。
例如下图中,单词「cooked」可以替换为「ate」。尽管这有些道理,但它并不适合整个上下文。预训练任务需要模型(即鉴别器)来确定原始输入中的哪些标记已被替换或保持相同。
正是由于该模型的二进制分类任务适用于每个输入单词,而非仅有少量的掩码单词(在 BERT 样式的模型中为 15%),因此,RTD 方法的效率比 MLM 高。这也解释了为什么 ELECTRA 只需更少的示例,就可以达到与其它语言模型相同性能的原因。
从所有输入位置学习时,替换的令牌检测可进行双向训练
其中,替换令牌来自生成器的神经网络。生成器的目标是训练掩码语言模型,即给定输入序列后,按照一定的比例(通常 15%)将输入中的词替换成掩码;然后通过网络得到向量表示;之后再采用 softmax 层,来预测输入序列中掩盖位置的词。
尽管生成器的结构类似于 GAN,但由于难以将该方法应用于文本任务,因此得到的训练目标函数为掩盖词的最大似然。
之后,生成器和判别器共享相同的输入词嵌入。判别器的目标是判断输入序列每个位置的词是否被生成器替换,如果与原始输入序列对应位置的词不相同,就判别为已替换。
生成器与判别器神经网络模型
研究人员将 ELECTRA 与其他最新的 NLP 模型进行了比较,发现在给定相同的计算预算的情况下,它与以前的方法相比有了实质性的改进,其性能与 RoBERTa 和 XLNet 相当,而使用的计算量不到 1/4。
x 轴显示用于训练模型的计算量(以 FLOPs 为单位),y 轴显示 dev GLUE 得分。与现有的预训练 NLP 模型相比,ELECTRA 的学习效率要高得多。但值得注意的是,目前 GLUE 上的最佳模型(例如 T5(11B))不适合该图,因为它们使用的计算量比其他模型多得多(比 RoBERTa 多 10 倍)
为了进一步提高效率,研究人员尝试了一个小型的 ELECTRA 模型,该模型可以在 4 天的时间内在单个 GPU 上进行良好的训练。
尽管无法达到与需要训练许多 TPU 的大型模型相同的精度,但 ELECTRA-small 的性能仍然很好,甚至比 GPT 还要好,而所需的计算量却只有其三分之一。
之后,为了测试这一结果是否能大规模实施,研究人员使用了更多的计算量(大约与 RoBERTa 相同的数量,大约是 T5 的 10%)训练了一个大型 ELECTRA 模型。
研究人员将大型 ELECTRA、RoBERTa、XLNet、BERT 和 ALBERT 模型在 SQuAD 2.0 问题回答数据集的表现做了测试,结果如下表所示;可以看到在 GLUE 排行榜上,ELECTRA 的表现优于其它所有模型。
但相比大型 T5-11b 模型,后者在 GLUE 上的得分仍然更高。但值得注意的是,ELECTRA 的大小是其三分之一,并使用 10%的计算进行训练。
SQUAD 2.0 数据集在 ELECTRA-Large 和其他最新模型中得分
目前,用于预训练 ELECTRA 并在下游任务上对其进行微调的代码已发布,当前支持的任务包括:文本分类、问题解答和序列标记。
该代码支持在一个 GPU 上快速训练小型 ELECTRA 模型。之后,谷歌还计划发布适用于 ELECTRA-Large,ELECTRA-Base 和 ELECTRA-Small 的预训练代码。(ELECTRA 模型目前仅支持英语,后续将发布更多语言版本)
原文地址:
https://ai.googleblog.com/2020/03/more-efficient-nlp-model-pre-training.html
GitHub 地址:
雷锋网 AI 源创评论 雷锋网