前言
百度的ERNIE做了三件事
- 掩膜Entity
- 掩膜Phrase
- 加入了
引言
BERT的缺点:
- BERT的MLM关注细粒度文本单元的表示(word\subword\characters),而很少考虑粗粒度的语言学上的信息(命名实体\短语\中文的单词)
前人进一步的工作:
- 独立地掩膜、预测连续的n-grams(命名实体、短语、text spans)
本文的观点:
- 前人关于n-grams的工作忽略了n-grams内部的依赖
- 特别的,给定一个被掩膜的n-grams w={ x 1 , x 2 , . . . x n x_1,x_2,...x_n x1,x2,...xn}, x ∈ V F x∈V_F x∈VF,模型需要最大化 p ( w ) = ∏ i = 1 n p ( x i ∣ C ) p(w)=\prod_{i=1}^{n}p(x_i | C) p(w)=∏i=1np(xi∣C),预测空间为 ∣ V F ∣ n |V_F|^n ∣VF∣n。(其中, V F V_F VF表示词表,C表示上下文的向量表示)。该空间过于稀疏。
本文工作:
- [Explicitly N-gram MLM] 用单个[MASK]掩膜整个n-grams,预测空间为 ∣ V N ∣ |V_N| ∣VN∣。所以要先构建一个n-grams的词表,大小为 V N V_N VN(远大于 V F V_F VF,但又远小于 ∣ V F ∣ n |V_F|^n ∣VF∣n)
- [Comprehensive N-gram MLM] 同时预测n-grams中的token和n-grams
- [Enhanced n-gram relation modeling] 使用一个生成模型生成看似可信的(plausible)n-grams,掩膜之,用模型恢复之
相关工作
自监督预训练模型:
- GPT:LM
- BERT:MLM(entensions:RoBERTa\UNILM\ALBERT
- XLNET:permutation LM(PLM)来建模被预测tokens之间的依赖
- ELECTRA:replaced token detection(PTD)
粗粒度的语言学信息:
- 隐式地整合(作为辅助的训练任务)
- ERNIE:掩膜命名实体、短语
- BERT-wwm:掩膜整个中文单词
- SpanBERT:掩膜连续的spans
- 显式地插入
- ZEN&AMBERT:使用额外的transformer encoders和计算,来得到额外的n-gram表示。 pre-training和fine-tuning都会用到(存在的问题:n-gram的稀疏性和OOV问题)
- ERNIE-Gram:只是在pre-training阶段使用额外的n-gram分类器和embedding权重
模型
背景介绍——Contiguously MLM(掩膜token)
与MLM不同,Contiguously MLM的符号表示为:
- x = { x 1 , . . . x ∣ x ∣ } x=\{x_1,...x_{|x|}\} x={ x1,...x∣x∣},输入序列
- b = { b 1 , . . . b ∣ b ∣ } b=\{b_1,...b_{|b|}\} b={ b1,...b∣b∣},n-grams的开始边界集
- z = { z 1 , . . . z ∣ b ∣ − 1 } z=\{z_1,...z_{|b|-1}\} z={ z1,...z∣b∣−1},n-grams序列集
- M M M:随机选择的开始边界集
- z M z_M zM: M M M对应的n-grams序列集
- z / M z_{/M} z/M:掩膜了 z M z_M zM之后的序列
举例(如图1):
- x = { 1 , 2 , 3 , 4 , 5 , 6 } x=\{1,2,3,4,5,6\} x={ 1,2,3,4,5,6}
- b = { 1 , 2 , 4 , 5 , 6 , 7 } b=\{1,2,4,5,6,7\} b={ 1,2,4,5,6,7}(7应该是代表结束)
- z = { x 1 , x [ 2 : 4 ) , x 4 , x 5 , x 6 } z=\{x_1,x_{[2:4)},x_4,x_5,x_6\} z={ x1,x[2:4),x4,x5,x6}
做法:
- M = { 2 , 4 } M=\{2,4\} M={ 2,4},从b中随机挑选15%个开始边界,2代表b中第2个(2),4代表b中第4个(5)
- z M = { x [ 2 : 4 ) , X 5 } z_M=\{x_{[2:4),X_5}\} zM={ x[2:4),X5},进一步确定对应的n-grams序列集,用 z / M = { x 1 , [ M ] , [ M ] , x 4 , [ M ] , x 6 } z_{/M}=\{x_1,[M],[M],x_4,[M],x_6\} z/M={ x1,[M],[M],x4,[M],x6}来表示掩膜之后的原序列
训练目标:
− l o g p θ ( z M ∣ z / M ) = − ∑ z ∈ z M ∑ x ∈ z l o g p θ ( x ∣ z / M ) -logp_θ(z_M|z_{/M}) = -\sum_{z∈{z_M}}\sum_{x∈z}logp_θ(x|z_{/M}) −logpθ(zM∣z/M)=−z∈zM∑x∈z∑logpθ(x∣z/M)
Explicitly N-gram MLM(掩膜N-gram)
以n-grams代替原来的token,当然,n=1的gram也就是token
符号表示:
- y = { y 1 , . . . , y ∣ b ∣ − 1 } y = \{y_1,...,y_{|b|-1}\} y={ y1,...,y∣b∣−1},n-grams集
- y M y_M yM,随机选择的n-grams集
- z / M z_{/M} z/M,掩膜过后的原序列
举例(如图2)
- y = { y 1 ( n = 1 ) , y 2 ( n = 2 ) , y 3 ( n = 1 ) , y 4 ( n = 1 ) , y 5 ( n = 2 ) } y=\{y_1(n=1),y_2(n=2),y_3(n=1),y_4(n=1),y_5(n=2)\} y={ y1(n=1),y2(n=2),y3(n=1),y4(n=1),y5(n=2)}
做法:
- y M = { y 2 , y 4 } y_M=\{y_2,y_4\} yM={ y2,y4},选择掩膜掉的n-grams集
- z / M = { x 1 , [ M ] , x 4 , [ M ] , x 6 } z_{/M} = \{x_1,[M],x_4,[M],x_6\} z/M={ x1,[M],x4,[M],x6},直接将n-grams当作token进行掩膜
训练目标:
− l o g p θ ( y M ∣ z / M ) = − ∑ y ∈ y M l o g p θ ( y ∣ z / M ) -logp_θ(y_M|z_{/M}) = -\sum_{y∈y_M}logp_θ(y|z_{/M}) −logpθ(yM∣z/M)=−y∈yM∑logpθ(y∣z/M)
Comprehensive N-gram MLM
就是想把token的MLM也加入到训练目标来,但Explicitly N-gram MLM中可以看到,已经把n-grams压缩成了一个MASK。所以主要是解决三个问题1. 如何恢复n-grams中token的表示 2.预测token需要依赖哪些信息 3.损失函数的表示
[第一个问题] 如何恢复n-grams中token的表示:
[答] 假设 y i = { x i 1 , x i 2 , . . . , x i k } ∈ y M y_i = \{x_{i1},x_{i2},...,x_{ik}\}∈y_M yi={
xi1,xi2,...,xik}∈yM是第i个被掩膜掉的n-grams,其包含k个token。则,显式地引入 { [ M 1 ] , [ M 2 ] , . . . . , [ M k ] } \{[M_1],[M_2],....,[M_k]\} {
[M1],[M2],....,[Mk]}来表示k个token对应的掩膜符号。
[举例] y 2 = { x 2 , x 3 } , y 4 = { x 5 } y_2 = \{x_{2}, x_{3}\}, y_4=\{x_{5}\} y2={
x2,x3},y4={
x5},则分别引入 { [ M 1 ] , [ M 2 ] } 和 { [ M 1 ] } \{[M_1],[M_2]\}和\{[M_1]\} {
[M1],[M2]}和{
[M1]}作为两个token序列的掩膜符号,显式地拼在原来输入序列的后面
[第二个问题]
- 2.1 预测原来的n-grams时需要(能看到)哪些信息
- 2.2 预测n-grams中的token时需要(能看到)哪些信息
[答]
- 2.1 Q: n − g r a m s i {n-grams}_i n−gramsi, K,V: z / M z_{/M} z/M, 其中, z / M z_{/M} z/M包含了 n − g r a m s i {n-grams}_i n−gramsi本身
- 2.2 Q: x i x_i xi,K,V: z / M z_{/M} z/M + x i x_i xi, 因为 x i x_i xi的表示已经被消除了,所以需要显式地加上
[举例]
(上面的表述中,需要预测的部分就是transformer中的Q,能看到的信息来自于K和V,具体来说,Q通过与K进行scaled dot-product attention来决定weight("看"的方式),再使用weight来对V进行加权求和(“看”的具体步骤))
另外值得注意的一点是,上面的操作中,每一个n-grams只知道整个句子的上下文,每一个token只知道整个句子的上下文+本身,n-grams的长度信息被隐藏了,这是因为:
We argue that the length information of n-grams is detrimental to the representation learning,because it will arbitrarily prune a number of semantically related n-grams with different lengths during predicting. 这句话不是很懂。
[第三个问题]
− l o g p θ ( y M , z M ∣ z / M 1 ) -log_{p_{θ}}(y_M,z_M|z^1_{/M}) −logpθ(yM,zM∣z/M1)
Enhanced N-gram Relation Modeling
复杂
三部分:1. 一个explicitly n-gram MLM 用于预测[MASK]所对应的真实n-gram 2.一个comprehensive n-gram MLM 用于预测[special MASK]所对应的真实n-gram以及其中的token,为何special?——因为这里的mask用的是1中预测出来的向量 3.一个replaced token detection objective(RTD) model,用于判别[special mask]部分到底是不是真实n-gram。
具体地:
- Transformer Encoder θ ′ θ^{'} θ′,也就是一个explicity n-gram MLM。损失函数如下:
l o s s 1 = − log p θ ′ ( y M ∣ z / M − ) loss_{1} = -\log_{p_{θ^{'}}}(y_M|z^-_{/M}) loss1=−logpθ′(yM∣z/M−)
其中, y M = { y 2 , y 4 } y_M = \{y_2, y_4\} yM={ y2,y4}, z / M − = { x 1 , [ M ] , x 4 , [ M ] , x 6 } z^-_{/M}=\{x_1,[M],x_4,[M],x_6\} z/M−={ x1,[M],x4,[M],x6},并且,设预测出来的结果为 y M ′ = { y 2 ′ , y 4 ′ } y^{'}_{M}=\{y^{'}_2,y^{'}_4\} yM′={ y2′,y4′}。
- Transformer Encoder θ,一个特殊的comprehensive n-gram MLM。损失函数如下:
l o s s 2 = − l o g p θ ( y M , z M ∣ z / M ′ ) loss_2 = -log_{p_{θ}}(y_M,z_M|z^{'}_{/M}) loss2=−logpθ(yM,zM∣z/M′)
其中, z / M ′ z^{'}_{/M} z/M′是把 y M ′ y^{'}_{M} yM′作为掩膜后的原序列。
- Transformer Encoder θ,完成replaced token detection objective(RTD)
其中, z / M c a r e t z^{caret}_{/M} z/Mcaret和 z M z_M zM本质上是一个东西,只是 z / M c a r e t = { x 1 , y 2 , x 4 , y 4 , x 6 } z^{caret}_{/M}=\{x_1,y_2,x_4,y_4,x_6\} z/Mcaret={
x1,y2,x4,y4,x6},而 z M = { x 1 , x 2 , x 3 , x 4 , x 5 , x 6 } z_M=\{x_1,x_2,x_3,x_4,x_5,x_6\} zM={
x1,x2,x3,x4,x5,x6}
总的来说,1使用上下文信息预测n-gram,捕捉了n-gram和上下文的联系;2使用1中预测出来的结果掩膜过后的序列,去预测n-gram,捕捉了n-gram和n-gram之间的联系(理解为,true n-gram和false n-gram再像,我也要把你识别出来) 3.一方面更加显式地完成了2,另一方面,反过来使用n-gram信息预测上下文的token,加强了联系。(个人理解)
N-gram Extraction
两个问题 1. 如何确定所有的n-grams,即 V N V_N VN 2. 如何确定每一个句子的 b = { b 1 , . . . b ∣ b ∣ } b=\{b_1,...b_{|b|}\} b={ b1,...b∣b∣}(开始边界集),用于后续15%的采样。
[第一个问题] 算法如下:
目标为:不同长度的gram(l>=2)按照各自的分数各采集 k l k_l kl个,组成最后的 V N V_N VN。对于l长度的gram集合 l g r a m s l_{grams} lgrams中的一个 l g r a m l_{gram} lgram来讲,它的分数公式为:
s = ( p ( w ) − p ′ ( w ) ) / ( σ 2 / N t ) s=(p(w)-p^{'}(w))/(\sqrt {σ^2/N_t}) s=(p(w)−p′(w))/(σ2/Nt)
其中:
- p ( w ) = C o u n t ( w ) / N l p(w) = Count(w) / N_l p(w)=Count(w)/Nl,代表w这个l长度的序列在整个 l g r a m s l_{grams} lgrams中出现的频率
- p ′ ( w ) = ∏ i = 1 n p ( x i ) p^{'}(w)=\prod_{i=1}^{n}p(x_i) p′(w)=∏i=1np(xi),代表w这个l长度的序列中,每一个单词在整个词表中出现的频率的累乘。用于表示不是语义完整的概率。
- σ = p ( w ) ( 1 − p ( w ) ) σ=p(w)(1-p(w)) σ=p(w)(1−p(w))
[第二个问题] 首先利用"最大匹配算法?"得到所有边界集合,然后选择最短的边界。
ERNIE-GRAM
ERNIE = Explicitly n-gram MLM + Comprehensive n-gram MLM + Enhanced N-gram Relation Modeling
消融实验
Effect of Explicity N-gram MLM
结果表明Explicity N-gram MLM要比普通的Contiguously MLM得到的困惑度更低,关于困惑度,发现一篇好文
文中说到,一个句子的困惑度的计算公式为:
P P ( W ) = P ( w 1 , w 2 , . . . w N ) − 1 / N ( 公 式 1 ) PP(W)=P(w_1,w_2,...w_N)^{-1/N}(公式1) PP(W)=P(w1,w2,...wN)−1/N(公式1)
其中
P ( w 1 , w 2 , . . . w N ) = p ( w 1 ) p ( w 2 ∣ w 1 ) . . . . p ( w N ∣ w 1 , w 2 , . . . . , w N − 1 ) P(w_1,w_2,...w_N)=p(w_1)p(w_2|w_1)....p(w_N|w_1,w_2,....,w_{N-1}) P(w1,w2,...wN)=p(w1)p(w2∣w1)....p(wN∣w1,w2,....,wN−1)
此概率的计算在uni-gram、bi-gram和tri-gram的LM中表示有所不同,比如uni-gram中就为
P ( w 1 , w 2 , . . . w N ) = p ( w 1 ) ∗ p ( w 2 ) . . . p ( w N ) P(w_1,w_2,...w_N)=p(w_1)*p(w_2)...p(w_N) P(w1,w2,...wN)=p(w1)∗p(w2)...p(wN)
主要有四种模型:
- 统计语言模型:上面的概率都通过count得到
- 主题模型(LDA):待补充
- 半“neural”的统计语言模型:显式地将当前单词的向量表示与之前信息的向量表示结合(理解为以之前信息为条件),然后MLP+softmax得到概率
- 基于循环神经网络(RNN)的深度学习模型:隐式建模
另外,深度学习中的困惑度使用交叉熵来计算,其实和上面公式一样,具体推导如下:
J = 1 / T ∑ t = 1 T J ( t ) ( θ ) = − 1 / T ∑ t = 1 T ∑ j = 1 ∣ V ∣ y t , j × l o g ( y t , j p r e d ) J = 1/T\sum_{t=1}^{T}J^{(t)}(θ)=-1/T\sum_{t=1}^T\sum_{j=1}^{|V|}y_{t,j}×log(y^{pred}_{t,j}) J=1/Tt=1∑TJ(t)(θ)=−1/Tt=1∑Tj=1∑∣V∣yt,j×log(yt,jpred)
由于对于第t个单词而言,词表中只有1个单词是正确答案(记 y t , i y_{t,i} yt,i),所以:
J = 1 / T ∑ t = 1 T J ( t ) ( θ ) = − 1 / T ∑ t = 1 T l o g ( y t , i p r e d ) J = 1/T\sum_{t=1}^{T}J^{(t)}(θ)=-1/T\sum_{t=1}^Tlog(y^{pred}_{t,i}) J=1/Tt=1∑TJ(t)(θ)=−1/Tt=1∑Tlog(yt,ipred)
记 y t , i p r e d y_{t,i}^{pred} yt,ipred为 P ( w t ∣ w t − 1 , . . . ) P(w_t|w_{t-1},...) P(wt∣wt−1,...),得:
J = 1 / T ∑ t = 1 T J ( t ) ( θ ) = − 1 / T ∑ t = 1 T l o g ( P ( w t ∣ w t − 1 , . . . ) ) J = 1/T\sum_{t=1}^{T}J^{(t)}(θ)=-1/T\sum_{t=1}^Tlog(P(w_t|w_{t-1},...)) J=1/Tt=1∑TJ(t)(θ)=−1/Tt=1∑Tlog(P(wt∣wt−1,...))
最后,以2为底(交叉熵中,log也默认以2为底,表示比特),得困惑度:
P P ( V ) = P ( w 1 , w 2 , . . . w T ) − 1 / T , V 代 表 整 个 语 料 库 PP(V)=P(w_1,w_2,...w_T)^{-1/T},V代表整个语料库 PP(V)=P(w1,w2,...wT)−1/T,V代表整个语料库
另外,上式是直接在整个语料上进行困惑度的计算,也可以完全按照公式1的方式,即计算好所有句子的困惑度,然后取平均:
P P ( V ) = ( ∏ i = 1 k P P L ( W k ) ) 1 / k PP(V)=(\prod_{i=1}^kPPL(W_k))^{1/k} PP(V)=(i=1∏kPPL(Wk))1/k
Size of N-gram Lexicon
结果表明:explicitily > continuously,随着size增大,性能先上升后下降。
Effect of Comprehensive N-gram Prediction(CNP) and Enhanced N-gram Relation Modeling(ENRM)
Case study
通过不同长度的NER任务的性能,以及attention patterns的可视化,说明explicitily具有更强的n-gram语义建模能力。
疑问
[1] relative position bias 和 position embeddings有何区别?(作用还挺大)
参考资料
[1] 困惑度(perplexity)的基本概念及比较多种模型下的计算(N-gram, 主题模型/LDA, 神经网络/RNN)