博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
论文笔记 | All NLP Tasks Are Generation Tasks: A General Pretraining Framework
阅读量:4290 次
发布时间:2019-05-27

本文共 1388 字,大约阅读时间需要 4 分钟。


作者:景

单位:燕山大学


论文作者:Zhengxiao Du, Yujie Qian, Xiao Liu, Ming Ding, Jiezhong Qiu, Zhilin Yang, Jie Tang
论文单位:清华大学

概述

  现有的预训练模型可分为三种:自回归模型(如GPT)、自编码模型(如BERT)、编解码模型(如T5),然而不同类型的预训练模型各自擅长的领域也不一致。作者致力于提出一种通用的预训练模型来解决不同种类的自然语言任务,这就是论文中提出的General Language Model,GLM。

创新点

  • 区别于以往的自编码注意力和自回归注意力,作者提出了一种新式的掩码矩阵来结合自编码注意力和自回归注意力
  • 下游的任务与预训练任务保持了一致性,在很大程度上降低了模型的性能损耗(说的就是你BERT)

预训练结构

  GLM的结构与BERT相似(准确来说是与Transformer比较相似),重新安排了归一化和残差的顺序。

在这里插入图片描述

  • 作者首先清空输入文本的若干部分,取出后做了乱序(对应自编码结构)
  • 再将取出的部分和空缺了的文本做了MASK的拼接,如上图c所示(对应自回归结构)
  • 将处理过的文本、自注意力掩码一起投入GLM模型,开始预训练任务

那么为什么说这种预训练结构能够同时兼顾抽取式任务和生成式任务呢?

  首先,对预训练语料的随机清空,既包括了类似于完形填空式的(上图a的x3),也包括小句(上图的x5x6),而预训练任务,就是以自回归的方式对x3和x5x6来进行预测,一视同仁,众生平等。

  对比来看看BERT,它的预训练任务是随机MASK掉15%的Token,而下游任务则是五花八门,有分类任务、抽取任务,甚至也能做生成式的任务——虽然BERT对生成式任务也取得了不错的结果,但是生成式这一类任务的实现方式显然与它完形填空式的预训练任务不相匹配——原始文本中不包含需要生成的内容,这就造成BERT模型天生擅长抽取式任务,如NER。

  再回到GLM,不论文本中空缺的长短,都当做生成式来做,但又区别于GPT模型,因为GPT模型采用的掩码自注意力矩阵是严格按照前文看不见后文来设计的,而在GLM中,空缺了的文本(上图B的Part A)是一种内部可见的状态。只但看这部分,其掩码矩阵类似于(或者说就是)自注意力机制的掩码。被取出来的部分(上图B的Part B)则是采用的自回归式的掩码,即模型以自回归式的方法每次预测一个Token来完成预训练任务。

微调结构

微调设计

GLM的微调结构如图所示,左侧为分类任务,右侧为生成式任务。

实验结果

SuperGLUE

在这里插入图片描述

SEQ2SEQ

在这里插入图片描述

LANGUAGE MODELING

在这里插入图片描述

消融实验

在这里插入图片描述

总结

模型 结构 特点
BERT 自编码结构 mask token是独立的,bert不能捕捉mask token之间的依赖性
GPT 自回归结构 不做mask,但是其单向特性只能捕捉到上文(或下文)的信息
XLnet 自回归结构 可以兼顾上下文信息,但需要知道预测token的长度,且模型复杂度较高
Transformer 编解码结构 传统的编解码模型,拥有强悍的性能和巨大的改善空间(二者并不矛盾)
GLM 编解码结构 结合了两种结构的优点,提出了新式的预训练任务,是首个同时在NLU、有条件生成和无条件生成三个任务上都有很好的效果预训练模型

转载地址:http://jqmgi.baihongyu.com/

你可能感兴趣的文章
jdbc_javax包
查看>>
Android 6.0 APIs_新特性(google官方)
查看>>
maxwell斗胆也来谈谈"学习方法“_转自黑马论坛
查看>>
XML解析
查看>>
AndroidManifest.xml详解
查看>>
activity的xml详解
查看>>
JNI 简介与实现-JavaNativeInterface
查看>>
ResourceBundle和Properties
查看>>
javascript *** is not a function
查看>>
老韩思考:卖点----卖豆腐的能转行IT
查看>>
Android_属性动画
查看>>
网络下载-xUtils,HttpUtils
查看>>
网络下载-AsyncHttpClient
查看>>
myUtils-多线程下载
查看>>
网络下载-断点续传原理
查看>>
线程-消息回环处理机制
查看>>
感谢伤害我的人
查看>>
请不要做浮躁的人----(学习编程的忠告)
查看>>
网络_volley_使用方法和代码
查看>>
网络_AsyncHttpClient_使用方法和代码
查看>>