BERT利用左右双向上下文表征在无标注文本进行预训练,通过增加额外输出层,应用于下游任务,在多个任务取得SOTA性能;
本文主要贡献:
1、通过MLM(masked language models)进行双向表征预训练;
2、BERT通过finetune而不需特定结构即可达到SOTA;
BERT分为两步:
预训练、finetune;如图1所示,
双向模型比单向模型或两单向模型concate后模型表达能力要强;标准有条件语言模型只能单向训练,双向将导致每个单词间接看到自己;
因此作者对输入token进行随机mask(15%),然后预测这些token,该过程为MLM(masked LM),最终mask token对应中间向量送入输出softmax与标准LM一致;
但是这样会导致预训练与finetuen不一致,因为finetune时没有mask token,为缓和此问题,作者使用仍随机选择15% token,若第i个token被选中,则其有80%概率替换为[MASK],10%概率选择随机token,10%概率保持不变。
为理解句子之间相关关系,比如问答系统(QA)、自然语言推理(NLI),作者增加下句话预测(NSP)任务,具体而言,每个训练样例选择句子A和句子B,句子B有50%概率紧跟句子A,有50%概率为语料库中随机选取,如图1中C用于预测B是否为A的下一句,预训练中可达到97%-98%精度;
作者使用文档级语料库而非打乱句子级别语料库,用于提取长连续序列;
对于每个具体任务,插入任务相关输入、输出,训练BERT所有参数;sequence-level任务如图4a、4b;token-level任务如图4c、4d。
利用最后一层向量
C
∈
R
H
C \in R^H
C∈RH,为输入token[CLS]对应的聚合特征,通过分类层输出需要结果;
结果如表1,BERT大幅超越现有方法;
任务:给出问题及来自维基百科包含该问题答案的一段话,该任务可以预测答案在段落中范围;
作者引入起始位置向量
S
∈
R
H
S \in R^H
S∈RH及结束位置向量
E
∈
R
H
E\in R^H
E∈RH;位置i,j为答案区域得分
S
c
o
r
e
=
S
⋅
T
i
+
E
⋅
T
j
Score=S·T_i + E·T_j
Score=S⋅Ti+E⋅Tj
实验结果如表2,BERT集成系统超越top1方案1.5F1、单系统超越1.3F1;
SQuAD v2.0允许提供段落中可能不存在答案;作者在【CLS】token设置start和end标志位,根据
s
n
u
l
l
=
S
⋅
C
+
E
⋅
C
s_{null} = S·C + E·C
snull=S⋅C+E⋅C判断是否有答案;实验结果如表3,超越最佳方案5.1F1。
任务:给出一个句子,从四个选择中选择最可能的下一句;
实验结果如表4,
B
E
R
T
l
a
r
g
e
BERT_{large}
BERTlarge超越最优方案GPT 8.3
结果如表5,移除NSP对QNLI、MNLI、SQuAD 1.1任务影响比较大;在所有任务上LTR比MLM结果更糟糕;
ppl越小,模型越好
表6展示BERT不同模型大小影响,
如图7,
B
E
R
T
l
a
r
g
e
BERT_{large}
BERTlarge基于预训练方案比整个模型finetune的SOTA方法低0.3
作者提出的双向网络结构,可将同一预训练模型成功处理多个NLP任务。
因篇幅问题不能全部显示,请点此查看更多更全内容