深度学习进阶篇-预练习模型[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使命

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

图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。

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

图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的一个语料文本示例。

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

图3 NSP样例图

1.3. SpanBERT的预练习使命

1.3.1 Span Masking

在BERT的Masking战略中,每个被mask的token被随机挑选,所以被挑选的这些token是比较涣散的。然而Span Masking则是需求随机地Mask接连的多个token。

具体来讲,首要SpanBERT依据几许分布Geo(p)Geo(p)采样一个Span的长度ll,该几许分布倾向于挑选短Span。然后在文本中随机挑选开始点,即从开始点开始的ll长度token将会被Mask。图4展现了Span采样长度图。

这儿需求留意一点,SpanBERT在采样时,挑选的是完整的word序列,而不是subword序列。

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

图4 Span采样长度图

1.3.2 Span Boundary Object (SBO)

SpanBERT希望Span鸿沟的token能够尽或许多地汇总Span内部的信息,所以引进了SBO预练习方针。如图5所示,masking的接连token为””an American football game”,SBO使命希望运用Span的鸿沟tokenx4x_4x9x_9​​来猜想Span内容。

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

图5 SBO样例图

具体来讲,给定一串序列X={x1,x2,…,xn}\text{X}=\{x_1, x_2, …, x_n\}​,假设Mask的接连token为(xs,…,xe)(x_s,…,x_e)​, xsx_s​和xex_e​代表开始token和结束token。SpanBERT将运用鸿沟token xs−1x_{s-1}​和xe+1x_{e+1}​​来核算Span内部的每个token。

yi=f(xs−1,xe+1,Pi−s+1)y_i = f(x_{s-1}, x_{e+1}, P_{i-s+1})

其间,Pi−s+1P_{i-s+1}代表Span内部的tokenxix_i相对于鸿沟tokenxs−1x_{s-1}​的相对方位编码。以上公式具体是这么核算的。

1.3.3 MLM与SBO交融核算

如上图所示, 在猜想单词football的时分,即运用了MLM使命去猜想单词football,一同又运用了SBO使命去猜想football,终究将二者进行相加。相应公式为:

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。

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

图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所示。

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

图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的方针。

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

图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、SpanBERT、KBERT、ALBERT、ELECTRA算法原理模型结构应用场景区别等详解

图4 RoBERTa预练习数据集

图5展现了RoBERTa跟着练习数据添加和练习步数添加的试验作用,显着跟着两者的添加,模型在down-stream的体现也不断提高。

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

图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 的模型结构

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

图 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 常识

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

图 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 名称的由来。具体公式如下:

Qi+1,Ki+1,Vi+1=hiWq,  hiWk,  hiWvSi+1=softmax(Qi+1Ki+1T+Mdk)hi+1=Si+1Vi+1Q^{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}

其间, WqW_qWkW_kWvW_v是可练习的模型参数,hih_i是第 ii层 Mask-Transformer 的输出向量,dkd_k用于缩放核算的 Attention 权重,MM是 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]:RoBERTa、SpanBERT、KBERT、ALBERT、ELECTRA算法原理模型结构应用场景区别等详解

4.1.1Factorized embedding parameterization

在 BERT 中,Token Embedding 的参数矩阵巨细为VHV \times H,其间V表明词汇的长度,H为躲藏层的巨细。即:

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

而 ALBERT 为了削减参数数量,在映射中心加入一个巨细为E的躲藏层,这样矩阵的参数巨细就从O(VH)O(V \times H)下降为O(VE+EH)O(V \times E + E \times H),而E≪HE \ll H

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

之所以能够这样做是因为每次反向传达时都只会更新一个 Token 相关参数,其他参数都不会变。并且在第一次投影的过程中,词与词之间是不会进行交互的,只有在后面的 Attention 过程中才会做交互,咱们称为 Sparsely updated。假如词不做交互的话,完全没有必要用一个很高维度的向量去表明,所以就引进一个小的躲藏层。

4.1.2 Cross-layer parameter sharing

ALBERT 的参数同享首要是针对一切子模块内部进行的,这样便能够把 Attention feed-forward 模块参数量从 O(12LHH)O(12 \times L \times H \times H) 下降到12HH12 \times H \times H,其间L为层数,H为躲藏层的巨细。

参数同享能显着削减参数。同享能够分为全衔接层、留意力层的参数同享;留意力层的参数对作用的减弱影响小一点。

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

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

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所学习的上下文表明。

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

上图中,左面的图是右边的放大版,纵轴是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去判别哪个字被修改过,如下:

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

5.1.1 Replaced Token Detection

但上述结构有个问题,输入语句通过生成器,输出改写过的语句,因为语句的字词是离散的,所以梯度无法反向传达,判别器的梯度无法传给生成器,所以生成器的方针仍是MLM,判别器的方针是序列标注(判别每个字符是真是假),两者一同练习,可是判别器的梯度不会传给生成器,方针函数如下:

minG,D∑x∈XLMLM(x,G)+LDisc(x,D)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的设置下削减了层数,得到了下图所示的联系图:

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

能够看到,生成器的巨细在判别器的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掉,用生成器的权重初始化判别器,再接着练习相同步数的判别器。

比照三种练习战略,得到下图:

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

可见“阻隔式”的练习战略作用仍是最好的,而两段式的练习弱一些,作者猜想是生成器太强了导致判别使命难度增大。不过两段式终究作用也比BERT自身要强,进一步证明了判别式预练习的作用。

5.3.仿真试验

作者的意图是提高预练习功率,所以做了GPU单卡就能够练习ELECTRA-Small和BERT-Small,接着和层数不变的ELMo、GPT等进行比照。成果如下:

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

体现十分亮眼,仅用14M参数数量,以前13%的体积,在提高练习速度的一同还提高了作用。

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

深度学习进阶篇-预训练模型[4]:RoBERTa、SpanBERT、KBERT、ALBERT、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尽管对上下文有很强的编码才能,却缺少细粒度语义的表明。下图能够显着体现出上述问题:

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

这是把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