今天分享一个论文UniLM,核心点是掌握三种LM任务形式:单向LM,双向LM,序列到序列LM;
1. 生成任务
NLP任务大致可以分为NLU和NLG两种;Bert在NLU任务上效果很好,但是天生不适合处理生成任务。
原因在于Bert的预训练过程是使用的MLM,和生成任务的目标并不一致。
生成任务目标是每次蹦出来一个词,只能看到当前位置之前的词汇。
而Bert采用的是双向的语言模型,除了mask的单词,两个方向的词汇都可以被看到。
所以对Bert的一个改进思路就是让它在具有NLU能力的时候,同时兼备NLG能力。
2. 三种LM任务
UniLM做的就是这样一个事情。
具体的实现方式是设计了一系列的完形填空任务,这些完形填空任务的不同之处在于对上下文的定义。
- 从左到右的LM:使用mask单词的左侧单词来预测被遮掩的单词
- 从右到左的LM:和上面第一个相比就是方向的变化,使用mask单词的右侧单词来预测遮掩的单词
- 双向LM:就是当前mask的左右词汇都可以看到
- sequence-to-sequence LM:这个就是UniLM能够具有生成能力的关键。我们的输入是source句子和target句子,mask单词在target上,那么当前mask的上下文就是source句子的所有单词和ta