雷锋网 AI 源创评论按: 近日, 谷歌宣布将 AI 语言模型 ELECTRA 作为 TensorFlow 之上的开源模型发布. 该方法用到了一种称为替换令牌检测 (RTD) 的新预训练任务, 使其能够在从所有输入位置学习的同时, 训练双向模型.
语言模型现状与瓶颈
近年来, 语言预训练模型的最新进展使得自然语言处理也取得了重大进展, 其中不乏一些最先进的模型, 例如: BERT,RoBERTa,XLNet,ALBERT 和 T5 等.
这些方法虽然在设计上有所不同, 但在利用特定的 NLP 任务 (例如: 情感分析和问题解答等) 进行微调时, 有着相同思路, 即: 利用大量未标记的文本, 来构建语言理解的通用模型.
因此, 现有的预训练方法通常分为两类: 语言模型(LM), 例如: GPT. 该类方法按照从左到右的顺序处理输入文本, 然后在给定先前上下文的情况下, 预测下一个单词.
另一个则是掩码语言模型(MLM), 例如: BERT,RoBERTa 和 ALBERT. 这类模型它们分别预测输入中已被屏蔽的少量单词内容. MLM 相比 LM 而言, 具有双向预测的优势, 因为它可以看到要预测的单词左侧和右侧的文本.
但 MLM 模型预测也有缺点, 这些模型的预测仅限于输入标记的某个很小的子集(被掩盖部分的 15%), 从而减少了他们从每个句子中获得信息的量, 增加了计算成本.
现有的预训练方法及其缺点. 箭头指示哪些标记用于生成给定的输出表示形式 (矩形). 左: 传统语言模型(例如 GPT) 仅使用当前单词左侧的上下文. 右: 掩码语言模型 (例如 BERT) 从左到右都使用上下文, 但是对于每个输入仅预测一小部分单词
新型预训练模型 ELECTRA
正是为了克服以上两类语言模型存在的缺点, 谷歌提出了 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%的计算进行训练.
SQU AD 2.0 数据集在 ELECTRA-Large 和其他最新模型中得分
目前, 用于预训练 ELECTRA 并在下游任务上对其进行微调的代码已发布, 当前支持的任务包括: 文本分类, 问题解答和序列标记.
该代码支持在一个 GPU 上快速训练小型 ELECTRA 模型. 之后, 谷歌还计划发布适用于 ELECTRA-Large,ELECTRA-Base 和 ELECTRA-Small 的预训练代码. (ELECTRA 模型目前仅支持英语, 后续将发布更多语言版本)
来源: http://www.tuicool.com/articles/qmQJj2a