微软研究院在2月底发布的UniLM 2.0(Unified Language Model \ 统一语言模型)文章,相比于19年上半年发布的UniLM 1.0,更加有效地整合了自然语言理解(NLU)与自然语言生成(NLG)这两种不同目标下的训练任务。无论是两种训练目标结合的统一性,还是在测评数据集上表现的性能,UniLM 2.0都在前一代的基础上有较大的改进。

本文将就近年来基于Transformer的预训练语言模型在NLU与NLG两种不同训练目标上的分化做简单介绍,再研究UniLM 1.0如何有机地结合这两种训练目标,进而介绍UniLM 2.0在1.0的基础上的变化和进步

1   预训练语言模型的分化

预训练语言模型(Pre-trained Language Model)的应用,使得原本无法针对各种语境变化的静态词向量表征,向着真正基于语境的语义特征表示(Contextual Word Representation)演进。而Transformer[1]的出现,无疑让这次演进焕发出了勃勃生机。

Transformer的提出,最早是为了解决循环神经网络RNN在神经机器翻译(Neural Machine Translation \ NMT)中无法有效地并行计算的效率问题。而Transformer的结构,也天然地有着NMT任务中典型的Encoder-Decoder结构。编码器encoder用于生成原始文本的语义表征,而解码器decoder则利用原始文本的语义表征,转写得到目标语言的翻译文本。

图1 Transformer有着典型的NMT任务中的Encoder-Decoder结构

Transformer encoder有将文本序列转为特征表示的天然能力,且编码高效,语义信息的编码不因序列长度而衰减,成为了后续问世的pre-trained LM的标配,比如来自OpenAI的GPT语言模型[2]和Google的BERT语言模型[3],都是基于Transformer encoder名噪一时的语言模型。不过两者在预训练的实现逻辑和原理的差别,也分化出了预训练语言模型的两种典型目标:

  • 适用于NLG任务的自回归(AutoRegressive \ AR)语言模型

  • 适用于NLU任务的自编码(AutoEncoding \ AE)语言模型

1.1 自回归(AR)语言模型

自回归AR语言模型是一种有着先后解码顺序的语言模型。比如从左往右,根据前文预测当前token(字符)的概率

































。这一点非常契合按照时间步对序列进行编码的RNN网络,基于2个单向LSTM的语言模型ELMo也属于这类。GPT沿袭AR语言模型的做法,从左往右编码,不过使用的是Transformer encoder作为编码器。值得注意的是,Transformer利用self-attention的机制,使得每个位置的token,都有机会attend(注意)到任意位置的token。那么GPT又是如何做到避免下文信息泄露的呢?答案在于attention mask。

Attention mask矩阵经过配置,可以让







屏蔽来自







的注意力,只需要把矩阵对应位置元素










设置为





。注意力权重加上





后经过softmax规整后对应权重










为0,从而避免







指向







的信息泄露。下面的公式[4]中,M代表attention mask,Q/K/V分别代表了self-attention中的输入序列在l层的query/key/value特征向量:

下图中,attention mask矩阵是一个右上角均为





的矩阵,表示任意位置token,都无法接收来自下文的信息。GPT采用的attention mask矩阵就是如此。

图2 attention mask图示

Attention mask并非GPT首创,在Transformer decoder中就有提出,是为了避免在翻译解码的过程中看到后文的翻译结果。有些地方称GPT采用的是Transformer decoder,其实并不严谨。准确来说,GPT是有着decoder特征的encoder,自然地也更适用于NLG类型任务,包括翻译、摘要生成和对话生成等等。

1.2 自编码(AE)语言模型

自编码AE语言模型没有顺序和次序约束,可以一次性获取到序列中的所有信息。可以简单理解AR模型是有顺序的,而AE模型是无序的。BERT就是一个利用Transformer encoder实现的AE模型,它没有去预测「下一个」token,而是预测缺失的token。原始输入序列带有被掩盖(mask)的token,根据上下文的信息去预测masked token,类似于英语考试中的完形填空(cloze task)。BERT的出现使得很多NLU任务的最好成绩都有不小的提升,比如实体识别、答案抽取和文本分类等等。

AE语言模型有着解决NLU任务的天然属性,却也是处理NLG任务的先天不足。而微软提出UniLM统一语言模型,目的就是为了整合这2种不同的语言模型训练目标。

2  UniLM 1.0

UniLM 1.0是微软发表于2019年的文章[4]中提出的模型,从它的名字「统一」(unified) 看出文章实现的是NLU与NLG的统一预训练模型。文章引入了4种不同的训练目标:

  • Left-to-Right LM \ 从左往右单向LM

  • Right-to-Left LM \ 从右往左单向LM

  • Bidirectional LM \ 双向LM

  • Sequence-to-sequence LM \ 序列到序列LM

上述目标的统一训练实现,依靠的就是attention mask。

图3 UniLM 1.0的实现原理

上图中3路不同走向的具体解释:

  • Bidirectional LM的attention mask矩阵全是白色方格,表示任何位置的token可以相互attend,与BERT训练目标一致

  • Left-to-Right LM的attention mask矩阵右上角为灰(对应为





    ),表示每个token只能attend到该token左侧的token,与GPT训练目标一致

  • Seq-to-Seq LM是上述2种目标的组合,参考下图4

    • 左上角蓝框内矩阵为全白格,与双向的情况一致,表示Segment1 (S1) 内的token可以相互attend

    • 右下角粉框内矩阵为上三角阵,与从左往右的单向情况一致,表示Segment2 (S2) 的token只能attend到其自身左侧的token信息

图4 Seq-to-Seq情况下的attention mask

Seq-to-Seq LM的设计,是将S1看作source,S2看作target,其中target与source可能是引申、推导等关系。因此在S1上做NLU式的双向完整的理解,S2则是NLG式的单向的生成,符合Seq-to-Seq的应用需求

4种目标的训练可以在一套模型参数上同时进行,只需要调整不同的attention mask即可。文章总结了Unified 1.0的3点优势:

  • 一个Transformer模型结构和参数可以适用于不同的训练目标

  • 不同的训练目标下的参数共享,可以得到更具普适性的文本表征

  • Seq-to-Seq目标的训练,可以很好地适用于NLG的任务

在Unified 1.0中,Seq-to-Seq LM展示了该团队用统一的encoder来同时编码AE和AR模型的尝试。而2019年语言模型领域的更新变化,也让微软的这支团队看到了更优的解决方案的可能性。

3  UniLM 2.0

在微软发表UniLM 1.0之后没多久,由Google Brain和CMU联合研制的XLNet[5]发布。XLNet利用不同的factorization order,使目标token下文的token得以先被编码,从而实现了一种能够attend到全序列信息的自回归AR语言模型。具体的实现也是通过设计包含次序信息的attention mask来达到的。

图5 XLNet中,factorization order(3-2-4-1)可能和输入的sequence order(1-2-3-4)完全不同,前者代表的是预测顺序,通过attention mask可以表示顺序变化

Factorization order直译为因式分解顺序,此处译为解析顺序或者预测顺序更为贴切。它描述的是序列中token被预测的先后顺序,这个顺序可以和序列本身的sequence order完全不同。虽然常见的NLG任务遵循从左往右的序列顺序依次解码,但这并不意味着训练编码的顺序也要求从左往右。XLNet就成功实现了下文token提前编码的自回归预训练,且达到了不错的效果。这里要介绍的UniLM 2.0[6]也利用了这一点。

UniLM 2.0相比于1.0的主要改进,在于它支持更多样的factorization order且无需重复构建训练实体。这一目标的实现,主要是借助文章提出的伪掩码语言模型(Pseudo-Masked Language Models \ PMLM),参考下图。

图6 原始输入序列为


































,其中

















均被掩盖,图中展示2种不同的流程用来预测这3个掩码的内容

图中的例子是一个factorization order为{4,5 -> 2}的输入序列:

将上述流程按2个阶段展开:

AE \ AutoEncoding \ 自编码

  • 图中左半部分,仅使用前一半输入序列































  • 序列的任意token间可以互相attend,[M]代表mask掩码,训练目标是一次给出序列中所有[M]的预测概率,与BERT训练一致

  • 具体的预测流程:

PAR \ Partially AutoRegressive \ 部分自回归

  • 图中右半部分,使用全部输入序列

  • 使用[P]代表pseudo mask,直译为伪掩码,目的是为了与前一步骤中的[M]区别开。先同时预测



















    ,再在已有







    ,







    的基础上预测









  • 具体的预测流程:

 

说明

  • partially AR之所以是「部分」,是因为模型支持一次预测出连续的掩码。之前需要{4->5->2},现在支持{4,5->2},由token级别改进为span级别,是AR模型的一种拓展;

  • 选用{4,5 -> 2}这样的预测顺序只是其中一种factorization order,亦可选用{2 -> 4,5}这样的顺序;

  • 引入伪掩码[P]是为了避免重复构建训练实体,否则上面PAR步骤中的2步流程需要2次构建不同的样本才能分别实现;

  • 一个token在输入序列中的真实位置并不重要,只要2个token有着相同的position embedding,模型会认为它们在文本中的位置一样

这里再解释一下引入[P]伪掩码的作用。

[P]其实和[M]的作用一致,只是作用的阶段不同。AE阶段预测[M]的内容,PAR阶段预测[P]的内容,这是文章为了让2个不同的训练目标可以在一次输入的情况下完成而设计的一种策略。如果这里还是按照UniLM 1.0,AR阶段的训练是从左往右单向的,那么只用[M]就足够。UniLM 2.0为了实现不同的factorization order,允许下文的token先被预测,且不需要每步预测后再重新构建输入序列,故引入[P]掩码。

在构建好输入序列之后,为了避免信息泄露,这里也是通过独特设计的attention mask矩阵来保证的。文章的例子{4,5->2}所用的attention mask如下图,大家可自行对照,这里不做展开。

图7 Factorization order为{4,5->2}的attention mask矩阵。注意:这里的灰色块代表允许attend,白色块代表不允许attend,与UniLM 1.0的表示正好相反。

虽然UniLM 2.0以一种不太直观的形式准备了预训练的输入序列,但它却向我们展示了在不同的factorization order的条件下,AR和AE训练目标在一个单一encoder中的统一实现。而与此同时,又有一些预训练LM开始回归最初的Encoder-Decoder的结构,比如谷歌的T5和微软的MASS,也让我们看到了预训练语言模型的更多的可能性。新的预训练语言模型不断涌现,我们也会持续跟进,为大家带来更多新颖模型的解读。

参考资料

[1]

TransformerAttention Is All You Need (2017)

[2]

GPT Improving Language Understanding by Generative Pre-Training (2018)

[3]

BERTBERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (2018)

[4]

UniLM 1.0Unified Language Model Pre-training for Natural Language Understanding and Generation (2019)

[5]

XLNetGeneralized Autoregressive Pretraining for Language Understanding (2019)

[6]

UniLM 2.0UNILMv2: Pseudo-Masked Language Models for Unified Language Model Pre-Training (2020)

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习在线手册深度学习在线手册AI基础下载(pdf更新到25集)本站qq群1003271085,加入微信群请回复“加群”获取一折本站知识星球优惠券,请回复“知识星球”喜欢文章,点个在看

微软统一预训练语言模型UniLM 2.0解读相关推荐

  1. 首个金融领域的开源中文预训练语言模型FinBERT了解下

    背景及下载地址 为了促进自然语言处理技术在金融科技领域的应用和发展,熵简科技 AI Lab 近期开源了基于 BERT 架构的金融领域预训练语言模型 FinBERT 1.0.据我们所知,这是国内首个在金 ...

  2. 开源开放 | 熵简科技 AI Lab 开源金融领域中文预训练语言模型 FinBERT

    1 背景及下载地址 为了促进自然语言处理技术在金融科技领域的应用和发展,熵简科技 AI Lab 近期开源了基于 BERT 架构的金融领域预训练语言模型 FinBERT 1.0.相对于Google发布的 ...

  3. yolov4 火灾检测,烟雾检测、 古文预训练语言模型等AI开源项目分享

    ~ 文末免费送书 ~ 项目一:FinBERT基于 BERT 架构的金融领域预训练语言模型 项目地址: https://github.com/valuesimplex/FinBERT 为了促进自然语言处 ...

  4. 微软提出AdaLM,用于开发小型、快速且有效的领域预训练语言模型

    ©作者 | 常馨 学校 | 北京邮电大学硕士生 研究方向 | NLP.信息检索 论文标题: Adapt-and-Distill: Developing Small, Fast and Effectiv ...

  5. EMNLP 2021 | 大道至简:微软提出可生成高质量文本表示的预训练语言模型

    ©作者 | 常馨 学校 | 北京邮电大学硕士生 研究方向 | NLP.信息检索 Abstract 基于自动编码器的语言模型在 Dense Retrieval(DR)中受到越来越多的关注,因为其训练编码 ...

  6. 直播 | ACL 2021论文解读:提升预训练语言模型实体与关系理解的统一框架

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

  7. ERICA:提升预训练语言模型实体与关系理解的统一框架

    近年来,预训练语言模型(PLM)在各种下游自然语言处理任务中表现出卓越的性能,受益于预训练阶段的自监督学习目标,PLM 可以有效地捕获文本中的语法和语义,并为下游 NLP 任务提供蕴含丰富信息的语言表 ...

  8. 《预训练周刊》第63期:微软视觉语言预训练综述、最新大模型课程

    No.63 智源社区 预训练组 预 训 练 研究 观点 资源 活动 周刊订阅 告诉大家一个好消息,<预训练周刊>已经开启"订阅功能",以后我们会向您自动推送最新版的&l ...

  9. CPT模型:一种中文兼顾NLU和NLG的非平衡预训练语言模型

    写在前面 大家好,我是刘聪NLP. 前几天在做生成任务的时候,在Github里搜索「中文BRAT模型」,一下搜到了复旦大学邱锡鹏老师组的「CPT」(Chinese Pre-trained Unbala ...

最新文章

  1. linux存储--虚拟内存详解MMU、页表(十)
  2. Java编程思想学习(一) 一切都是对象
  3. 用Redis存储Tomcat集群的Session
  4. Jetpack 迁移到 androidX support MD
  5. cad怎么卸载干净_CAD无法卸载,又无法安装怎么办?
  6. 从支付宝SDK的支付流程理解什么是公钥和私钥,什么是加密和数字签名
  7. PIC单片机开发工具
  8. Snell Advanced Media选择金雅拓保护其知识产权
  9. 前置指纹会逐步替代后置指纹
  10. 说说 PWA 和微信小程序--Progressive Web App
  11. 最好的关系,是彼此成就
  12. 文明IV模组(MOD)制作指南
  13. 硕士论文要不要附matlab程序,论文必须要有附录吗_毕业论文附录一定要写吗_毕业论文中附录是不是必须要写的...
  14. android课程设计健身,健身软件课程设计-毕业论文.doc
  15. 【JS Web 前端知识库】6.说一说BFC
  16. 新手怎么把java源码做成app_怎么样将1个编写好的程序源代码做成1个软件!
  17. 求数组中间值的三种方法
  18. 机房监控系统解说—新风机篇
  19. Android多语言设置
  20. 梯度下降和正规方程的区别

热门文章

  1. vue项目中开启Eslint碰到的一些问题及其规范
  2. mysql中修改表的默认编码和表中字段的编码
  3. BZOJ3738 : [Ontak2013]Kapitał
  4. 普通用户Mysql 5.6.13 主从,主主及nagios的mysql slave监控
  5. 如何循序渐进向DotNet架构师发展
  6. asp.net 2.0 TreeView 数据绑定(原创)
  7. BLOG地址变更--博客园启用二级域名
  8. java frame button_java – 从Button打开一个新的JFrame
  9. 面向对象写单片机程序-程序分层
  10. 通过相似性或相异指数的数值分布比较群落Beta多样性高低