深度学习进阶篇-预训练模型[4]:RoBERTa、SpanBERT、KBERT、ALBERT、ELECTRA算法原理模型构造利用场景区别等详解

1.SpanBERT: Improving Pre-training by Representing and Predicting Spans

1.1. SpanBERT的技术改良点

相比于BERT,SpanBERT次要是在预训练阶段进行了调整,如图1所示,具体蕴含以下几局部:

  • 随机地Masking一段间断的token
  • 减少了一项新的预训练任务:Span boundary Objective (SBO)
  • 去掉了NSP工作

图1 SpanBERT改良点汇总图

在接下来的内容中,咱们将对这些预训练任务进行具体探讨,特地是前两个改良点。然而在正式探讨之前,咱们先来回顾一下经典的BERT模型中的预训练任务。

1.2. BERT模型中的预训练任务

在BERT模型预训练阶段,次要应用了两项预训练任务Masking Language Model (MLM)以及Next Word Prediction (NSP)。

1.2.1 Masking Language Model (MLM)

在训练语料中,会抉择一批token替换为Mask token,MLM工作旨在利用语句的上下文双向信息,复原语句中被Mask的token,以帮忙模型学习语言常识。图2给出了对于MLM工作一个示例,其中在预测单词model的时候,模型将会利用model前后的信息进行推断被Masking的单词,特地是在看到pre-training和natural language processing等信息时,比拟容易可能推断出这个单词就是model。

图2 MLM样例图

在BERT模型预训练阶段,总共Masking掉语料中15%的token,然而这里存在一个问题:在fine-tune阶段以及预测时的输出文本中并不蕴含Mask token,这样就造成了预训练阶段和fine-tune/预测阶段的GAP。所以BERT在这批被Mask的token中采纳了不同的Masking策略,具体如下:

  • 80%的token被替换为Mask token
  • 10%的token被随机替换为其余词
  • 10%的token放弃不变

1.2.2 Next Word Prediction (NSP)

在BERT的训练语料中,局部输出文本是由无关的两段语句进行拼接而成,局部输出文本是由原本就前后相邻的两段语句拼接而成。NSP工作旨在去辨认一个输出文本是否是相邻的两句话拼接而成。图3给出了对于NSP的一个语料文本示例。

图3 NSP样例图

1.3. SpanBERT的预训练任务

1.3.1 Span Masking

在BERT的Masking策略中,每个被mask的token被随机抉择,所以被抉择的这些token是比拟扩散的。然而Span Masking则是须要随机地Mask间断的多个token。

具体来讲,首先SpanBERT依据几何散布$Geo(p)$采样一个Span的长度$l$,该几何散布偏向于抉择短Span。而后在文本中随机抉择起始点,即从起始点开始的$l$长度token将会被Mask。图4展现了Span采样长度图。

这里须要留神一点,SpanBERT在采样时,抉择的是残缺的word序列,而不是subword序列。

图4 Span采样长度图

1.3.2 Span Boundary Object (SBO)

SpanBERT冀望Span边界的token可能尽可能多地汇总Span外部的信息,所以引入了SBO预训练指标。如图5所示,masking的间断token为””an American football game”,SBO工作冀望应用Span的边界token$x_4$和$x_9$来预测Span内容。

图5 SBO样例图

具体来讲,给定一串序列$\text{X}=\{x_1, x_2, ..., x_n\}$,假如Mask的间断token为$(x_s,...,x_e)$, $x_s$和$x_e$代表起始token和末端token。SpanBERT将应用边界token $x_{s-1}$和$x_{e+1}$来计算Span外部的每个token。

$$y_i = f(x_{s-1}, x_{e+1}, P_{i-s+1})$$

其中,$P_{i-s+1}$代表Span外部的token$x_i$绝对于边界token$x_{s-1}$的绝对地位编码。以上公式具体是这么计算的。

$$\begin{split} \begin{align} h_0 &= [x_{s-1};x_{e+1};P_{i-s+1}] \\ h_1 &= \text{LayerNorm}(\text{GeLU}(W_1h_0))\\ y_i &= \text{LayerNorm}(\text{GeLU}(W_2h_1)) \end{align} \end{split}$$

1.3.3 MLM与SBO交融计算

如上图所示, 在预测单词football的时候,即应用了MLM工作去预测单词football,同时又应用了SBO工作去预测football,最终将二者进行相加。相应公式为:

$$\begin{split} \begin{align} L(x_i) &= L_{\text{MLM}}(x_i)+L_{\text{SBO}}(x_i) \\ & = -\text{log}P(x_i|\text{x}_i) - \text{log}P(x_i|y_i) \end{align} \end{split}$$

1.3.4 去掉NSP工作

SpanBERT去掉了NSP工作,即输出文本是一个比拟长的句子,大部分状况下这样的设置,试验成果会更好。

  1. 相干材料
  2. SpanBERT: Improving Pre-training by Representing and Predicting Spans
  3. SpanBERT Github

2.RoBERTa: A Robustly Optimized BERT Pretraining Approach

从模型构造上讲,相比BERT,RoBERTa根本没有什么翻新,它更像是对于BERT在预训练方面进一步的摸索。其改良了BERT很多的预训练策略,其结果显示,原始BERT可能训练有余,并没有充沛地学习到训练数据中的语言常识。

图1展现了RoBERTa次要摸索的几个方面,并这些方面进行交融,最终训练失去的模型就是RoBERTa。

图1 RoBERT的改良点

2.1. Dynamic Masking

BERT中有个Masking Language Model(MLM)预训练任务,在筹备训练数据的时候,须要Mask掉一些token,训练过程中让模型去预测这些token,这里将数据Mask后,训练数据将不再变动,将应用这些数据始终训练直到完结,这种Mask形式被称为Static Masking。

如果在训练过程中,冀望每轮的训练数据中,Mask的地位也相应地发生变化,这就是Dynamic MaskingRoBERTa应用的就是Dynamic Masking

在RoBERTa中,它具体是这么实现的,将原始的训练数据复制多份,而后进行Masking。这样雷同的数据被随机Masking的地位也就产生了变动,相当于实现了Dynamic Masking的目标。例如原始数据共计复制了10份数据,共计须要训练40轮,则每种mask的形式在训练中会被应用4次。

2.2. Full-Sentences without NSP

BERT中在结构数据进行NSP工作的时候是这么做的,将两个segment进行拼接作为一串序列输出模型,而后应用NSP工作去预测这两个segment是否具备上下文的关系,但序列整体的长度小于512。

然而,RoBERTa通过试验发现,去掉NSP工作将会晋升down-stream工作的指标,如图2所示。

图2 NSP试验

其中,SEGMENT-PAIR、SENTENCE-PAIR、FULL-SENTENCES、DOC-SENTENCE别离示意不同的结构输出数据的形式,RoBERTa应用了FULL-SENTENCES,并且去掉了NSP工作。这里咱们重点讨论一下FULL-SENTENCES输出形式,更多详情请参考RoBERTa。

FULL-SENTENCES示意从一篇文章或者多篇文章中间断抽取句子,填充到模型输出序列中。也就是说,一个输出序列有可能是逾越多个文章边界的。具体来讲,它会从一篇文章中间断地抽取句子填充输出序列,然而如果到了文章结尾,那么将会从下一个文章中持续抽取句子填充到该序列中,不同文章中的内容还是依照SEP分隔符进行宰割。

2.3. Larger Batch Size

RoBERTa通过减少训练过程中Batch Size的大小,来观看模型的在预训练任务和down-stream工作上的体现。发现减少Batch Size有利于升高保留的训练数据的Perplexity,进步down-stream的指标。

图3 batch size 试验

2.4. Byte-Level BPE

Byte-Pair Encodeing(BPE)是一种示意单词,生成词表的形式。BERT中的BPE算法是基于字符的BPE算法,由它结构的”单词”往往位于字符和单词之间,常见的模式就是单词中的片段作为一个独立的”单词”,特地是对于那些比拟长的单词。比方单词woderful有可能会被拆分成两个子单词”wonder”和”ful”。

不同于BERT,RoBERTa应用了基于Byte的BPE,词表中共计蕴含50K左右的单词,这种形式的不须要放心未登录词的呈现,因为它会从Byte的层面去合成单词。

2.5. More Data and More Training Steps

相比BERT, RoBERTa应用了更多的训练数据,详情如图4所示。

图4 RoBERTa预训练数据集

图5展现了RoBERTa随着训练数据减少和训练步数减少的试验成果,显然随着两者的减少,模型在down-stream的体现也一直晋升。

图5 减少数据和训练步数试验效果图

  1. 相干材料
  2. RoBERTa: A Robustly Optimized BERT Pretraining Approach
  3. RoBERTa Github

3.KBERT: Enabling Language Representation with Knowledge Graph

3.1. KBERT简介

以后的预训练模型(比方 BERT、GPT 等)往往在大规模的语料上进行预训练,学习丰盛的语言常识,而后在上游的特定工作上进行微调。但这些模型根本都没有应用 常识图谱(KG) 这种结构化的常识,而 KG 自身能提供大量精确的常识信息,通过向预训练语言模型中引入这些内部常识能够帮忙模型了解语言常识。基于这样的思考,作者提出了一种向预训练模型中引入常识的形式,即 KBERT,其引入常识的机会是在 fine tune 阶段。在引入常识的同时,会存在以下两个问题:

  • Heterogeneous Embedding Space (HES): 艰深来讲,及时文本的词向量示意和 KG 实体的示意是通过独立不相干的两种形式别离训练失去的,这造成了两种向量空间独立不相干。
  • Knowledge Noise (KN):向原始的文本中引入太多常识有可能会造成扭曲原始文本的语义。

为了解决上边的两个问题,KBERT 采纳了一种语句树的模式向原始文本序列中注入常识,并在预训练模型的示意空间中获取向量示意;另外其还应用了 soft-position 和 visible matrix 的形式解决了 KN 问题。

3.2. KBERT 的模型构造

图 1 KBERT 的模型构造

图 1 展现了 KBERT 的模型构造,其中次要蕴含 4 个组件:Knowledge layer, Embedding layer, Seeing layer 和 Mask-Transformer Encoder。

对于输出的文本序列,KBERT 会依据序列中存在的实体,在 Knowledge Graph (KG) 中找到相应的 fact,例如 < Cook, CEO, Apple>,而后在 Knowledge layer 中进行交融,并输入相应的 Sentence tree。而后将其别离输出至 Embedding layer 和 Seeing layer 后别离失去 token 对应的 Embedding 和 Visible matrix, 最初将两者传入 Mask-Transformer Encoder 中进行计算,并取得相应的输入向量。这些输入向量接下来将被利用于上游工作,比方文本分类,序列标注等。

这是对于 KBERT 整个的解决流程,其中比拟外围的,也就是预训练模型和常识图谱交融的中央在 Knowledge layer。上面咱们来具体探讨 KBERT 模型的细节内容。

3.2.1 Knowledge layer: 结构 Sentence tree 交融 KG 常识

图 2 Sentence tree 转换成 Embedding 和 Visible matrix 的流程

图 2 展现了 KBERT 整体的从结构 Sentence tree 到生成相应的 Embedding 和 Visible Matrix 的过程。咱们先来看 Sentence tree 生成这部分,其大抵分为两个步骤:

  1. 找出文本序列中存在的实体,而后依据这些实体在 KG 中找出相应的事实三元组 (fact triples)。
  2. 将找出的三元组注入到原始的文本序列中,生成 Sentence tree。

给定一串文本序列 [CLS, Time, Cook, is, visiting, Beijing, now], 序列中存在两个实体:Cook 和 Beijing,这两个实体在 KG 中的 fact triples 别离是 < Cook, CEO, Apple>、<Beijing, captial, China > 和 < Beijing, is_a, City>,最初将这些三元组注入到原始的文本序列中生成 Sentence Tree,如图 2 所示。

但这里须要留神的是,KBERT 采纳的 BERT 作为模型骨架,BERT 的输出模式是一串文本序列,并不是上述的 Sentence tree 的模式,所以在理论输出的时候,咱们须要对 Sentence tree 进行拉平,造成一串文本序列。这样的操作同时会带来一些问题:

  1. 间接拉平 Sentence tree 造成句子自身交叉 fact triples,毁坏了句子自身的语义程序和构造,造成信息的凌乱。
  2. fact triples 的插入造成上述的 KN 问题,扭曲原始句子自身的语义信息。

基于这些思考,KBERT 提出了 soft-position 和 visible matrix 两种技术解决这些问题。这些将会在以下两大节中进行展开讨论。

3.2.2 Embedding layer:引入 soft-position 放弃语句自身的语序

图 2 中能够看到,KBERT 在 Embedding 层延用了 BERT Embedding layer 各项相加的形式,共蕴含三局部数据:token embedding、position embedding 和 segment embedding。不过为了将 Sentence tree 拉平转换成一个文本序列输出给模型,KBERT 采纳了一种 soft-position 地位编码的形式。

图 2 中红色的标记示意的就是 soft-position 的索引,彩色的示意的是拉平之后的相对地位索引。在 Embedding 层应用的是 soft-position,从而放弃原始句子的失常的语序。

3.2.3 Seeing layer: Mask 掉不可见的序列局部

Seeing layer 将产生一个 Visible Matrix,其将用来管制将 Sentence tree 拉平成序列后,序列中的词和词之间是否可见,从而保障想原始文本序列引入的 fact triples 不会扭曲原始句子的语义,即 KN 问题。

还是以图 2 展现的案例进行探讨,原始文本序列中的 Beijing 存在一个 triple <Beijing, captial, China>,将这 triple 引入到原始文本序列后在进行 Self-Attention 的时候,China 仅仅可能影响 Beijing 这个单词,而不能影响到其余单词(比方 Apple);另外 CLS 同样也不能越过 Cook 去取得 Apple 的信息,否则将会造成语义信息的凌乱。因而在这种状况下,须要有一个 Visible Matrix 的矩阵用来管制 Sentence tree 拉平之后的各个 token 之间是否可见,相互之间不可见的 token 天然不会有影响。

图 2 中展现的 Visible Matrix,给出了由 Sentence tree 拉平之后的序列 token 之间的可见关系。

3.2.4 Mask-Transformer: 应用拉平后融入 KG 常识的序列进行 transofmer 计算

因为 Visible Matrix 的引入,经典的 transofmer encoder 局部无奈间接去计算,须要做些扭转对序列之间的可见关系进行 mask, 这也是 Mask-Transfomer 名称的由来。具体公式如下:

$$\begin{split} Q^{i+1}, K^{i+1}, V^{i+1} = h^iW_q, \; h^iW_k, \; h^iW_v \\ S^{i+1} = softmax(\frac{Q^{i+1}{K^{i+1}}^\text{T} + M}{\sqrt{d_k}}) \\ h^{i+1} = S^{i+1}V^{i+1} \end{split}$$

其中, $W_q$,$W_k$和 $W_v$是可训练的模型参数,$h_i$是第 $i$层 Mask-Transformer 的输入向量,$d_k$用于缩放计算的 Attention 权重,$M$是 Seeing layer 计算的 Visible Matrix,它将会使得那些不可见的 token 之间的 Self-Attention 权重置 0。

相干材料:

  1. KBERT: Enabling Language Representation with Knowledge Graph
  2. KBERT Github

4.ALBERT

谷歌的研究者设计了一个精简的BERT(A Lite BERT,ALBERT),参数量远远少于传统的 BERT 架构。BERT (Devlin et al., 2019) 的参数很多,模型很大,内存耗费很大,在分布式计算中的通信开销很大。然而 BERT 的高内存耗费边际收益并不高,如果持续增大 BERT-large 这种大模型的隐含层大小,模型成果不升反降。

启发于 mobilenet,ALBERT 通过两个参数削减技术克服了扩大预训练模型面临的次要阻碍:

  • 第一个技术是对嵌入参数化进行因式分解。大的词汇嵌入矩阵合成为两个小的矩阵,将暗藏层的大小与嵌入层的分来到。这种拆散使得暗藏层的减少更加容易,同时不显著减少词汇嵌入的参数量。(不再将 one-hot 向量间接映射到大小为 H 的暗藏空间,先映射到一个低维词嵌入空间 E,而后再映射到暗藏空间。通过这种合成,研究者能够将词嵌入参数从 O(V × H) 升高到 O(V × E + E × H),这在 H 远远大于 E 的时候,参数量减少得非常明显。)
  • 第二种技术是跨层参数共享。这一技术能够防止参数量随着网络深度的减少而减少。

两种技术都显著升高了 BERT 的参数量,同时不对其性能造成显著影响,从而晋升了参数效率。ALBERT 的配置相似于 BERT-large,但参数量仅为后者的 1/18,训练速度却是后者的 1.7 倍。

  • 训练任务方面:提出了Sentence-order prediction (SOP)来取代NSP。具体来说,其正例与NSP雷同,但负例是通过抉择一篇文档中的两个间断的句子并将它们的程序替换结构的。这样两个句子就会有雷同的话题,模型学习到的就更多是句子间的连贯性。用于句子级别的预测(SOP)。SOP 次要聚焦于句间连贯,用于解决原版 BERT 中下一句预测(NSP)损失低效的问题。

4.1.ALBERT模型构造

ALBERT 架构的骨干和 BERT 相似,都应用了基于 GELU 的非线性激活函数的 Transformer。然而其别离在两个中央缩小了参数量。

以下图为例能够看到模型的参数次要集中在两块,一块是 Token embedding projection block,另一块是 Attention feed-forward block,前者占有 20% 的参数量,后者占有 80% 的参数量。

4.1.1Factorized embedding parameterization

在 BERT 中,Token Embedding 的参数矩阵大小为$V \times H$,其中V示意词汇的长度,H为暗藏层的大小。即:

而 ALBERT 为了缩小参数数量,在映射两头退出一个大小为E的暗藏层,这样矩阵的参数大小就从$O(V \times H)$升高为$O(V \times E + E \times H)$,而$E \ll H$

之所以能够这样做是因为每次反向流传时都只会更新一个 Token 相干参数,其余参数都不会变。而且在第一次投影的过程中,词与词之间是不会进行交互的,只有在前面的 Attention 过程中才会做交互,咱们称为 Sparsely updated。如果词不做交互的话,齐全没有必要用一个很高维度的向量去示意,所以就引入一个小的暗藏层。

4.1.2 Cross-layer parameter sharing

ALBERT 的参数共享次要是针对所有子模块外部进行的,这样便能够把 Attention feed-forward 模块参数量从 $O(12 \times L \times H \times H)$ 升高到$12 \times H \times H$,其中L为层数,H为暗藏层的大小。

参数共享能显著缩小参数。共享能够分为全连贯层、注意力层的参数共享;注意力层的参数对成果的削弱影响小一点。

ALBERT 之所以这样做是因为,思考到每层其实学习到内容十分类似,所以尝试了将其进行参数共享。下图为不同层 Attention 学到的货色:

4.1.3 Sentence order prediction

谷歌本人把它换成了 SOP。这个在百度 ERNIE 2.0 里也有,叫 Sentence Reordering Task,而且 SRT 比 SOP 更强,因为须要预测更多种句子片段顺序排列。ERNIE 2.0 中还有一些别的货色可挖,比方大小写预测 Captialization Prediction Task、句子间隔 Sentence Distance Task。

  • NSP:下一句预测, 正样本=高低相邻的2个句子,负样本=随机2个句子
  • SOP:句子程序预测,正样本=失常程序的2个相邻句子,负样本=调换程序的2个相邻句子
  • NOP工作过于简略,只有模型发现两个句子的主题不一样就行了,所以SOP预测工作可能让模型学习到更多的信息

SOP工作也很简略,它的正例和NSP工作统一(判断两句话是否有程序关系),反例则是判断两句话是否为反序关系。

咱们举个SOP例子:

正例:1.朱元璋建设的明朝。2.朱元璋处决了蓝玉。

反例:1.朱元璋处决了蓝玉。2.朱元璋建设的明朝。

BERT应用的NSP损失,是预测两个片段在原文本中是否间断呈现的二分类损失。指标是为了进步如NLI等上游工作的性能,然而最近的钻研都示意 NSP 的作用不牢靠,都抉择了不应用NSP。

作者揣测,NSP成果不佳的起因是其难度较小。将主题预测和连贯性预测联合在了一起,但主题预测比连贯性预测简略得多,并且它与LM损失学到的内容是有重合的。

SOP的正例选取形式与BERT统一(来自同一文档的两个间断段),而负例不同于BERT中的sample,同样是来自同一文档的两个间断段,但替换两段的程序,从而防止了主题预测,只关注建模句子之间的连贯性。

  • 应用段落连续性工作。正例,应用从一个文档中间断的两个文本段落;负例,应用从一个文档中间断的两个文本段落,但地位调换了。
  • 防止应用原有的NSP工作,原有的工作蕴含隐含了预测主题这类过于简略的工作。

4.1.4 No Dropout

RoBERTA 指出 BERT 一系列模型都是” 欠拟合” 的,所以罗唆间接关掉 dropout, 那么在 ALBERT 中也是去掉 Dropout 层能够显著缩小长期变量对内存的占用。同时论文发现,Dropout 会侵害大型 Transformer-based 模型的性能。

5.ELECTRA

掩码语言模型(masked langauge model, MLM),相似BERT通过预训练方法应用[MASK]来替换文本中一些字符,毁坏了文本的原始输出,而后训练模型来重建原始文本。只管它们在上游NLP工作中产生了良好的后果,然而它们通常须要大量计算才无效。作为代替计划,作者提出了一种更无效的预训练任务,称为Replaced Token Detection(RTD),字符替换探测。RTD办法不是覆盖输出,而是通过应用生成网络来生成一些正当替换字符来达到毁坏输出的目标。而后,咱们训练一个判断器模型,该模型能够预测以后字符是否被语言模型替换过。试验结果表明,这种新的预训练任务比MLM更无效,因为该工作是定义在所有文本输出上,而不是仅仅被覆盖的一小部分,在模型大小,数据和计算力雷同的状况下,RTD办法所学习的上下文示意远远优于BERT所学习的上下文示意。

上图中,右边的图是左边的放大版,纵轴是dev GLUE分数,横轴是FLOPs(floating point operations),Tensorflow中提供的浮点数计算量统计。从上图能够看到,同量级的ELECTRA是始终碾压BERT,而且在训练更长的步长步数,达到了过后的SOTA模型RoBERTa的成果。从右边的曲线图上能够看到,ELECTRA成果还有持续回升的空间。

5.1 ELECTRA模型构造

ELECTRA最大的奉献是提出了新的预训练任务和框架,在上述简介中也提到了。将生成式的MLM预训练任务改成了判别式的RTD工作,再判断以后token是否被替换过。那么问题来了,假如,我随机替换一些输出中的字词,再让BERT去预测是否替换过,这样可行吗?有一些人做过试验,但成果并不太好,因为随机替换太简略了。

作者应用一个MLM的G-BERT来对输出句子进行革新,而后丢给D-BERT去判断哪个字被批改过,如下:

5.1.1 Replaced Token Detection

但上述构造有个问题,输出句子通过生成器,输入改写过的句子,因为句子的字词是离散的,所以梯度无奈反向流传,判断器的梯度无奈传给生成器,于是生成器的指标还是MLM,判断器的指标是序列标注(判断每个字符是真是假),两者同时训练,然而判断器的梯度不会传给生成器,指标函数如下:

$$min_{\theta_{G},\theta_{D}} \sum_{x \in X} L_{MLM}(x,\theta_{G})+\lambda L_{Disc}(x,\theta_{D})$$

因为判断器的工作相对来说简略些,RTD损失绝对MLM损失会很小,因而加上一个系数,论文中应用了50。通过预训练,在上游工作的应用中,作者间接给出生成器,在判断器进行微调。

另外,在优化判断器时计算了所有token上的损失,而以往计算BERT的MLM loss时会疏忽没被mask的token。作者在起初的试验中也验证了在所有token上进行损失计算会晋升效率和成果。

事实上,ELECTRA应用的生成-判断架构与GAN还是有不少差异,作者列出了如下几点:

ELECTRAGAN
输出真是文本随机噪声
指标生成器学习语言模型,判断器学习辨别虚实文本生成器尽可能坑骗判断器,判断器尽量辨别虚实图片
反向流传梯度无奈从D传到G梯度能够从D传到G
非凡状况生成出了实在文本,则标记为正例生成的都是负例(假图片)

5.1.2 权重共享

生成器和判断器权重共享是否能够晋升成果呢?作者设置了同样大小的生成器和判断器。在不共享权重下的成果为83.6,只共享token embedding层的成果是84.3,共享所有权重的成果是84.4。作者认为生成器对embedding 有更好的学习能力,这是因为判断器只更新由生成器采样生成的token,而softmax是建设在所有vocab上的,之后反向流传时生成器会更新所有的embedding,最初作者只应用了embedding sharing。

5.1.3 更小的生成器

从权重共享的试验中看到,生成器和判断器只须要共享embedding 的权重就足够了。那这样的话是否能够放大生成器的尺寸进行训练效率的晋升呢?作者在放弃原有的hidden size的设置下缩小了层数,失去了下图所示的关系图:

能够看到,生成器的大小在判断器的1/4到1/2之间的成果是最好的。作者认为起因是过强的生成器会减少判断器的难度。

5.2.训练策略

除了MLM损失,作者也尝试了另外两种训练策略:

  1. Adversarial Contrastive Estimation:ELECTRA因为上述一些问题无奈应用GAN,但也能够以一种反抗学习的思维来训练。作者将生成器的指标函数由最小化MLM损失换成了最大化判断器在被替换token上RTD损失。但还有一个问题,就是新的生成器无奈用梯度回升更新生成器,于是作者应用强化学习Policy Gradient思维,最终优化下来生成器在MLM 工作上能够达到54%的准确率,而之前MLE优化下可达到65%。
  2. Two-stage training:即先训练生成器,而后freeze掉,用生成器的权重初始化判断器,再接着训练雷同步数的判断器。

比照三种训练策略,失去下图:

可见“隔离式”的训练策略成果还是最好的,而两段式的训练弱一些,作者猜想是生成器太强了导致判断工作难度增大。不过两段式最终成果也比BERT自身要强,进一步证实了判别式预训练的成果。

5.3.仿真试验

作者的目标是晋升预训练效率,于是做了GPU单卡就能够训练ELECTRA-Small和BERT-Small,接着和层数不变的ELMo、GPT等进行比照。后果如下:

体现非常亮眼,仅用14M参数数量,以前13%的体积,在晋升训练速度的同时还晋升了成果。

大ELECTRA模型的各项体现如下:

下面是各个模型在GLUE dev/text上的体现,能够看到ELECTRA仅用了1/4的计算量就达到了RoBERTa的成果。而且作者应用的是XLNet的语料,大概是126G,但RoBERTa用了160G。因为工夫和精力问题,作者没有把ELECTRA训练更久(应该会有晋升),也没有应用各种Trick。

5.4 后果剖析

BERT的loss只计算被替换的15%个token,而ELECTRA是全副都计算,所以作者又做了几个比照试验,探索哪种形式更好一些:

  1. ELECTRA 15%:让判断器只计算15% token上的损失;
  2. Replace MLM:训练BERT MLM,输出不必[MASK]进行替换,而是其余生成器。这样能够打消pretrain-finetune之间的差异;
  3. All-Tokens MLM :接着用Replace MLM,只不过BERT的指标函数变为预测所有的token,比拟靠近ELECTRA。
ModelELECTRAAll-Tokens MLMReplace MLMELECTRA 15%BERT
GLUE score85.084.382.482.482.2

比照ELECTRA和ECLECTRA15%:在所有token上计算loss的确能晋升成果;比照Replace MLM 和BERT:[MASK]标记的确会对BERT产生影响,而且BERT目前还有一个trick,就是被替换的10%状况下应用原token或其余token,如果没有这个trick预计成果会差一些;比照All-Tokens MLM和BERT:如果BERT预测所有token的话,成果会靠近ELECTRA。

作者还发现,ELECTRA体积越小,相比于BERT就晋升的越显著,阐明fully trained的ELECTRA成果会更好。另外作者推断,因为ELECTRA是判别式工作,不必对整个数据分布建模,所以更parameter-efficient。

5.5 小结结

BERT尽管对上下文有很强的编码能力,却不足细粒度语义的示意。下图能够显著体现出上述问题:

这是把token编码降维后的成果,能够看到sky和sea,明明是天与海的区别,却因为上下文一样而失去了极为类似的编码。细粒度示意能力的缺失会对实在工作造成很大影响,如果被针对性攻打的话更是有力,所以过后就想方法加上更细粒度的工作让BERT去辨别每个token,不过同句内随机替换的成果并不好, 须要进一步开掘。

ELECTRA的RTD工作比MLM的预训练任务好,推出了一种非常实用于NLP的类GAN框架,不再像之前的BERT+模型一样,能够用“more data+parameters+steps+GPU+MONEY”简略概括。

  • 参考文献

Electra: Pre-training text encoders as discriminators rather than generators