关于人工智能:深度学习进阶篇预训练模型4RoBERTaKBERTALBERTELECTRA算法原理模型结构应用场景等详解

4次阅读

共计 13233 个字符,预计需要花费 34 分钟才能阅读完成。

深度学习进阶篇 - 预训练模型[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 还是有不少差异,作者列出了如下几点:

ELECTRA GAN
输出 真是文本 随机噪声
指标 生成器学习语言模型,判断器学习辨别虚实文本 生成器尽可能坑骗判断器,判断器尽量辨别虚实图片
反向流传 梯度无奈从 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。
Model ELECTRA All-Tokens MLM Replace MLM ELECTRA 15% BERT
GLUE score 85.0 84.3 82.4 82.4 82.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

正文完
 0