当前位置: 首页 > 科技观察

战胜BERT,谷歌优秀的NLP预训练模型开源

时间:2023-03-19 21:54:38 科技观察

近日,谷歌宣布发布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%),这减少了它们可以从每个句子中获取的信息量并增加了计算成本。.Google'sBestNLPPre-TrainingModelOpenSource》>现有的预训练方法及其缺点。箭头表示使用了哪些token来生成给定的输出表示(矩形)。左:传统语言模型(如GPT)仅使用当前的左边的单词上下文。右图:Masked语言模型(如BERT)从左到右使用上下文,但只为每个输入预测少量单词。新的预训练模型ELECTRA就是为了克服以上两类语言模型的不足。Google提出了ELECTRA(EfficientlyLearninganEncoderthatClassifiesTokenReplacementsAccurately)语言模型。这是一种新的预训练方法,其关键点是使用预训练的文本编码器作为标识符而不是生成器来处理现有语言模型的问题。Google最好的NLP预训练模型开源》>论文地址:https://openreview.net/pdf?id=r1xMH1BtvB在模型大小、数据、计算量相同的情况下,该方法的性能明显更好比MLM方法,如BERT、XLNet;而且ELECTRA小模型只需要在1个GPU上训练4天,具体实验数据表明,这个小模型比BERT小模型在term上高了5分的GLUE分数,甚至更大GPT模型(使用30多倍的计算能力)甚至更好。而ELECTRA在使用不到1/4的情况下,可以在GLUE自然语言理解基准上达到RoBERTa和XLNet的性能计算能力。如果使用更多的计算机来训练大规模的ELECTRA,并且该模型在SQuAD2.0问答数据集和语言理解任务排行榜上取得了最先进的性能。(具体数据见第四节)ta)核心思想——替换令牌检测ELECTRA使用一个新的预训练任务,称为替换令牌检测(RTD),它训练一个双向模型(例如:MLM),同时从所有输入位置(例如:LM)学习。具体来说,ELECTRA的目标是学习区分输入的单词。它不使用掩码,而是从建议分布中采样单词来替换输入,解决了掩码带来的预训练和微调不一致的问题。然后该模型训练一个判别式来预测每个词是原始词还是替换词。鉴别器的一个优点是模型从所有输入词中学习,而不是像MLM那样只使用掩码词,因此计算效率更高。作为很多开发者想到的对抗性学习方法,ELECTRA确实受到了生成对抗网络(GAN)的启发。但不同的是,该模型使用最大似然而不是对抗性学习。例如,在下图中,单词“cooked”可以替换为“ate”。虽然这有一定道理,但并不适合整个上下文。预训练任务需要一个模型(即鉴别器)来确定原始输入中的哪些标记已被替换或保持不变。正是因为模型的二元分类任务应用于每个输入词,而不是仅应用于少量掩码词(BERT样式模型中为15%),所以RTD方法比MLM更有效。这也解释了为什么ELECTRA可以用更少的示例实现与其他语言模型相同的性能。谷歌最好的NLP预训练模型开源》>替换标记检测可以双向训练,从所有输入位置学习,替换标记来自生成器的神经网络。生成器的目标是训练一个masked语言模型,即经过给定输入序列,将输入中的词按照一定比例(通常为15%)替换为掩码;然后通过网络得到向量表示;然后使用softmax层对输入中的词进行预测maskedpositionininputsequence.虽然生成生成器的结构类似于GAN,但是由于很难将这种方法应用到文本任务中,所以得到的训练目标函数是maskedword的最大似然。generator和discriminator共享同一个inputwordembedding,discriminator的目标是判断输入序列每个位置的词是否被替换由发电机。如果与原输入序列对应位置的词不相同,则判断为替换。Google最好的NLP预训练模型是开源的”>生成器和鉴别器神经网络模型特定发现的比较研究人员将ELECTRA与其他最先进的NLP模型进行了比较,发现在相同的计算预算下,它提高了大大超过以前的方法,性能与RoBERTa和XLNet相当,但使用不到1/4的计算。谷歌最好的NLP预训练模型开源》>x轴显示计算量(以FLOPs为单位)用于训练模型,y轴显示devGLUE分数。与现有的预训练NLP模型相比,ELECTRA的学习效率要高得多。但值得注意的是,目前GLUE上最好的模型(如T5(11B))并不适合这张图,因为它们使用的计算量比其他模型多得多(是RoBERTa的10倍)。为了提高效率,研究人员尝试了一种可以在4天内在单个GPU上很好地训练的小型ELECTRA模型。虽然无法达到需要训练许多TPU的大型模型的准确度,但ELECTRA-small仍然表现良好,甚至比GPT更好,同时需要三分之一的计算量。然后,为了测试这一结果是否可以大规模实施,研究人员使用更多的计算量(与RoBERTa的数量大致相同,约为T5的10%)训练了一个大型ELECTRA模型。研究人员在SQuAD2.0问答数据集上测试了大规模ELECTRA、RoBERTa、XLNet、BERT和ALBERT模型的性能,结果如下表所示;可以看出,ELECTRA在GLUE排行榜上的表现优于所有其他模型。但后者在GLUE上的得分仍然高于大型T5-11b模型。但值得注意的是,ELECTRA的大小只有它的三分之一,并使用10%的计算量进行训练。谷歌最好的NLP预训练模型开源》>SQUAD2.0数据集在ELECTRA-Large等state-of-the-art模型中得分目前已经发布预训练ELECTRA并在下游任务上对其进行微调的代码,目前支持tasksinclude:TextClassification,QuestionAnsweringandSequenceLabeling.此代码支持在一个GPU上快速训练小型ELECTRA模型。稍后,Google还计划发布ELECTRA-Large、ELECTRA-Base和ELECTRA-Small的预训练代码。(ELECTRA模型目前仅支持英文,更多语言版本后续会陆续推出)原文地址:https://ai.googleblog.com/2020/03/more-efficient-nlp-model-pre-training.htmlGitHub地址:https//github.com/google-research/electra