UNILM
Posted Facico
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UNILM相关的知识,希望对你有一定的参考价值。
UNILM
Unified Language Model Pre-training for Natural Language Understanding and Generation
key
- 综合所有的LM
- - 像bert在NLU任务上表现很好,但是在NLG任务上表现就不太行,UNILM就可以兼备两个任务
- 采用三个无监督目标:双向LM,单向LM,Sequence-to-Sequence LM
UNILM模型
- 单向LM,双向LM和Sequence-to-Sequence LM之间的transformer共享参数
- 不过文章对不同模型的/elf-attention使用了不同的masks,即使用了不同的mask方式来控制带预测token所考虑到的上下文范围
embedding
embedding和bert相同=token embedding + position embedding + segment embedding
transformer
使用多层transformer
Q
=
H
l
−
1
W
l
Q
,
K
=
H
l
−
1
W
l
K
,
V
=
H
l
−
1
W
l
V
M
i
j
=
0
,
allow to attend
−
∞
,
prevent from attending
A
l
=
s
o
f
t
m
a
x
(
Q
K
⊤
d
k
+
M
)
V
l
Q=H^l-1W_l^Q,K=H^l-1W_l^K,V=H^l-1W_l^V \\\\ M_ij=\\left\\ \\beginaligned 0,&&\\textallow to attend\\\\ -∞,&&\\textprevent from attending \\endaligned \\right.\\\\ A_l=softmax(\\fracQK^\\top\\sqrtd_k+M)V_l
Q=Hl−1WlQ,K=Hl−1WlK,V=Hl−1WlVMij=0,−∞,allow to attendprevent from attendingAl=softmax(dkQK⊤+M)Vl
预训练部分
[mask]的模式和bert的MLM相同,就是最小化预测的token和[mask]掉的交叉熵
单向LM
- 预测x1x2[mask]x4的时候,只有x1,x2和它自己会被用上,类似最朴素的encoder-decoder模型,但是使用multi-attention实现的
- 实现的方式即使mask matrix是一个上三角矩阵,如上图
- 灰色的部分值为无穷大表示堵塞
- 白色的部分为0表示能attend
- 实现的方式即使mask matrix是一个上三角矩阵,如上图
双向LM
bert的MLM即双向LM
Sequence-to-Sequence LM(Seq2Seq LM)
- 如上图
- 1、第一个segment(S1)中在segment内部能够attend到任意token
- 2、第二个segment(S2)内部是个单向LM
- 3、第二个segment可以attend第一个segment,第一个segment不能attend第二个segment
NSP
- 同bert的NSP
预训练设置
- 预训练目标是多个模型目标的总和
- 每个batch中,1/3的时间用双向LM,1/3的时间用Seq2SeqLM,1/6的时间从左到右的单向,1/6的时间从右到左的单向
fine-tune
- NLU
- 与bert相同
- NLG
- 例如Seq2Seq任务,就弄个[SOS]S1[EOS]S2[EOS]
- 然后随机mask S2中的tokens,注意[EOS]也可能被mask(标志着模型还要学习什么时候生成句子结束)
实验
- 在摘要生成、QA、问题生成等各种NLG任务上表现不错
- GLUE上只比BERT_LARGE多0.3
评价
- 联合多种语言模型的想法很好,但是文章没有做消融实验,直接结合的有些粗暴。直观的来说,双向和单向就是把MLM任务剖析成两个部分,但却没有探究这到底是否有用。
- mask矩阵设置的那块很漂亮
- Seq2Seq对后续NLG任务设置启发很大
以上是关于UNILM的主要内容,如果未能解决你的问题,请参考以下文章
6.5bert的家族成员-百度的ERNIE,ERNIE2.0,清华的ERNIE,RoBERTa,BERT-WWM,UniLM,MASS,TinyBERT,ELECTRA,SpanBERT