本文介绍了MSRA今年的一篇文章: UNILM: Unified Language Model Pre-training for Natural Language Understanding and Generation
UNILM基于三个预训练目标
- Unidirectional LM:
- Bidirectional LM:
- Sequence2Sequence LM:
贡献
和BERT对比
- BERT是双向模型,所以自然语言的生成(NLG)任务上不适用
- UNILM采用三种(无监督的)LM目标,其中的Sequence2Sequence LM能够解决文本生成问题
其他一些优点
- 仅使用一个LM(由Transformer构成), 在三个不同的预训练任务上共享参数, 泛化能力强
- 参数共享: 不需要在不同的语言模型(对应不同的预训练任务)上使用不同的模型参数
- 泛化能力强: 多个训练目标同时优化模型,使得模型能够避开因为训练目标引起的过拟合问题
模型结构介绍
结构图

- 输入向量为 →x=(x1,x2,,,x|x|)
- 输入向量表征与BERT相同,由Embedding层(三个Embedding层之和, 和BERT一样):
- Token Embedding, WordPiece
- Position Embedding
- Segment Embedding, 由于UNILM会使用多个LM任务训练,所以Segment Embedding在模型中也扮演着LM标识的作用(对不同的LM目标使用不同的Segment Embeddings)
- 主要网络(Backbone Network)为多层Transformer:
- 每两个Transformer Blocks之间的Self-Attention Masks: For Each Transformer Block, 使用多头Self-Attention来聚合之前层出现的输入向量.(这里的Self-Attention使用了)
- Transformer之间的Self-Attention机制决定了模型什么语言模型(任务)
- 如图所示:
- Bidirectional LM 对应的 Self-Attention Masks为全0的矩阵, 表示所有的Attention都不屏蔽 (attend to all tokens)
- Left-to-Right LM 对应的 Self-Attention Masks为拼屏蔽右上三角的矩阵(左下三角全为0)
- Right-to-Left LM 对应的 Self-Attention Masks为拼屏蔽左下三角的矩阵(右上三角全为0)
- Seq-to-Seq LM 对应的 Self-Attention为
- S1-S1 为全0(0表示开放), 对应为Bidirectional
- S1-S2 为负无穷(负无穷表示屏蔽)
- S2-S1 为全0
- S2-S2 为屏蔽右上三角的矩阵(这里与Left-to-Right的情况相同)
按照结构图分析数据流
- 对于一组输入向量 {→x}|x|i=1, 初始编码为 H0=[→x1,→x2,,,→x|→x|]
- 第一层后编码为上下文表征H1=[→h11,→h12,,,→h1|→x|]
- 第 l 层后编码为上下文表征Hl=[→hl1,→hl2,,,→hl|→x|]
- 每一层的 Transformer Block, 使用 multiple self-attention heads去聚合上一层的输出: L-layer的 Transformer对应的数学表达式为 Hl=Transformerl(Hl−1),l∈[1,L]
- Self-Attention Head Al的详细计算公式如下:
H=Hl−1WQlK=Hl−1WKlV=Hl−1WVlA=softmax(QKT√dk+M)Vlwhere,Mij=0 or −∞- M中的值
- −∞ 表示屏蔽Attention (prevent from Attention)
- 0 表示允许 Attention (allow to Attention)
- M中的值