0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Transformer的细节和效果如何

深度学习自然语言处理 来源:深度学习自然语言处理 作者:深度学习自然语言 2022-08-30 10:12 次阅读

在文本理解任务(Natural Language Understanding)上,预训练模型已经取得了质的飞跃,语言模型预训练+下游任务fine-tune基本上已经成为标配。

很多人曾经尝试将 BERT 等预训练语言模型应用于文本生成任务(Natural Language Generation),然而结果并不理想。究其原因,是在于预训练阶段和下游任务阶段的差异。

BART这篇文章提出的是一种符合生成任务的预训练方法,BART的全称是Bidirectional and Auto-Regressive Transformers,顾名思义,就是兼具上下文语境信息和自回归特性的Transformer。那么它的细节和效果如何呢,就让我们一起来看看吧

论文名称:《BART: Denoising Sequence-to-Sequence Pre-training for NaturalLanguage Generation, Translation, and Comprehension》

论文链接:https://arxiv.org/pdf/1910.13461.pdf

1. 从GPT,BERT到BART

GPT:是一种 Auto-Regressive(自回归)的语言模型。它也可以看作是Transformer model的Decoder部分,它的优化目标就是标准的语言模型目标:序列中所有token的联合概率。GPT采用的是自然序列中的从左到右(或者从右到左)的因式分解。

BERT:是一种Auto-Encoding(自编码)的语言模型。它也可以看作是Transformer model的Encoder部分,在输入端随机使用一种特殊的[MASK]token来替换序列中的token,这也可以看作是一种noise,所以BERT也叫Masked Language Model。

1245fc58-27dd-11ed-ba43-dac502259ad0.png表1. GPT和BERT的对比

BART:吸收了 BERTbidirectional encoderGPTleft-to-right decoder 各自的特点;是建立在标准的 seq2seq Transformer model 的基础之上,这使得它比 BERT 更适合文本生成的场景;此外,相比GPT也多了双向上下文语境信息。在生成任务上获得进步的同时,它也可以在一些文本理解类任务上取得SOTA。

1256211e-27dd-11ed-ba43-dac502259ad0.png图1. BERT、GPT和BART对比

1.1. 关于BART的讨论

Loss Function 就是重构损失, 也就是decoder的输出和原文ground truth之间的交叉熵。

BART 的结构在上图中已经很明确了:就是一个BERT+GPT的结构;但是不同之处在于(也是作者通篇在强调的),相对于BERT中单一的noise类型(只有简单地用[MASK] token进行替换这一种noise),BART在encoder端尝试了多种noise。其原因和目的也很简单:

BERT的这种简单替换导致的是encoder端的输入携带了有关序列结构的一些信息(比如序列的长度等信息),而这些信息在文本生成任务中一般是不会提供给模型的。

BART采用更加多样的noise,意图是破坏掉这些有关序列结构的信息,防止模型去“依赖”这样的信息。

1.2. BART中的多种Noise

Token Masking: 就是BERT的方法----随机将token替换成[MASK]。

Token Deletion: 随机删去token。

Text Infilling: 随机将一段连续的token(称作span)替换成一个[MASK],span的长度服从 的泊松分布。注意span长度为0就相当于插入一个[MASK]。

Sentence Permutation: 将一个document的句子打乱。

Document Rotation: 从document序列中随机选择一个token,然后使得该token作为document的开头。

129d6bbe-27dd-11ed-ba43-dac502259ad0.png表2. 不同noise及其作用

注意这里不同的noising变换方式还可以组合。

2. BART在下游任务上的应用

2.1. Sequence Classification Task

将该序列同时输入给encoder端和decoder端,然后取decoder最后一个token对应的final hidden state作为label,输入给一个线性多分类器。

12bd259e-27dd-11ed-ba43-dac502259ad0.png图2. BART用于序列分类任务

注意在序列的最后要加一个token,保证seq2seq模型输出的label包含序列中每一个token的信息,这是因为decoder的输入是right-shifted的,不这样做的话label将不包含最后一个token的信息。

2.2. Token Classification Task

这一类问题意思是,将序列的所有token都看作独立的选项,序列长度为M,那么选项的个数就是M,在序列的所有token中选择k个。属于这类的经典问题有SQuAD,即answer endpoint classification

将该序列同时输入给encoder端和decoder端,使用decoder的final hidden states作为每个token的向量表征,该向量表征作为分类问题的输入,输入到分类系统中去。

2.3. Sequence Generation Task

由于BART本身就是在sequence-to-sequence的基础上构建并且预训练的,它天然比较适合做序列生成的任务,比如概括性的问答,文本摘要,机器翻译等。

2.4. Machine Translation

具体的做法是将BART的encoder端的embedding层替换成randomly initialized encoder,新的encoder也可以用不同的vocabulary

通过新加的Encoder,我们可以将新的语言映射到BART能解码到English(假设BART是在English的语料上进行的预训练)的空间。具体的finetune过程分两阶段:

第一步只更新randomly initialized encoder + BART positional embedding + BART的encoder第一层的self-attention 输入映射矩阵。

第二步更新全部参数,但是只训练很少的几轮。

12f8aace-27dd-11ed-ba43-dac502259ad0.png图3. BART用于机器翻译

3. 实验1: 不同预训练目标的比较

论文对不同的pretrain objective,在多个下游任务上进行了比较严谨详尽的实验对比。模型结构: Transformer-base。

不同的Pre-train Objective有:

GPT: (Auto-Regressive) Language model

XLNET: Permuted Language Model

BERT: Masked Language Model

UniLM: Multitask Masked Language Model

MASS: Masked Seq-to-Seq

对比实验涉及的下游任务有:

SQuAD: 将context和question连在一起输入Encoder和Decoder,输出的是context中的span。

MNLI: 将2个句子连在一起输入Encoder和Decoder(中间加上[EOS]表示隔开),模型输出的是两个句子之间的关系,是典型的序列分类问题。

ELI5: 抽象的问答,将context和question连在一起输入,模型输出抽象摘要文本。

XSum: 新闻摘要生成任务

ConvAI2: 对话生成任务

CNN/DM:摘要生成任务

132030d0-27dd-11ed-ba43-dac502259ad0.png

3.1 结论

不同预训练方法各有千秋,在不同下游任务上的效果差异很大:比如说Language Model在ELI5任务上最好,但是在SQuAD任务上是最差的。

BART预训练中的Token Masking作用很关键:Token Masking包括Token Masking,Token Deletion,Text Infilling。从表中可以看出,只做Document Rotation / Sentence Shuffling的预训练模型效果很差。另外,Deletion比Masking效果好。

134d5e52-27dd-11ed-ba43-dac502259ad0.png

Left-to-Right Pretraining会提升生成任务的效果:和Masked Language Model和Permuted Language Model相比,包含Left-to-Right预训练的模型在生成任务上表现更好。

1383ff2a-27dd-11ed-ba43-dac502259ad0.pngMasked Language Model和Permuted Language Model相比于包含Left-to-Right Auto-regressive Pre-training的模型,在生成任务上明显表现要差一些

双向的encoder对于SQuAD任务很重要

ELI5任务上单纯的Language Model (Left-to-Right AR Language Model)表现最好,一个可能的解释是该任务的输出和输入关系不大,因此BART没有优势。

预训练目标不是唯一的重要因素,比如表中的Permuted Language Model的效果不如XLNet,作者提到,可能的原因有XLNet中有一些结构上的改进(比如relative-position embedding和segment-level recurrence)

4. 实验2: 大规模实验

实验发现,在discriminative任务(NLU)上和RoBERTa/XLNet效果持平,在生成任务上显著高于BERT, UniLM, XLNet, RoBERTa等模型

4.1. Discriminative Tasks

BART并没有因为单向的decoder而影响在文本理解类任务上的效果:

13ba9bfc-27dd-11ed-ba43-dac502259ad0.png

4.2. Generation Tasks

BART得益于单向的decoder,在三大类生成任务上效果拔群

摘要生成:

13d2a97c-27dd-11ed-ba43-dac502259ad0.png摘要任务上的对比

对话生成:

13e45b4a-27dd-11ed-ba43-dac502259ad0.png对话生成任务上的对比

抽象问答

1408de3e-27dd-11ed-ba43-dac502259ad0.png抽象问答任务上的对比

4.3. 翻译

143900be-27dd-11ed-ba43-dac502259ad0.png

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 语言模型
    +关注

    关注

    0

    文章

    521

    浏览量

    10268
  • 机器翻译
    +关注

    关注

    0

    文章

    139

    浏览量

    14880
  • Transformer
    +关注

    关注

    0

    文章

    143

    浏览量

    5997

原文标题:4. 实验2: 大规模实验

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    adxl加速度mems测量低频振动的效果如何?

    之前选用了adxl372 和adxl345,我想请问一下,这些mems对低频振动的检测效果如何 目前项目需求测量0.5Hz-1000kHz频率的振动,量程大概在±20g 以上两种mems是否满足。
    发表于 12-28 07:09

    如何实现在图标图像中实现一个点,效果如下图

    如何实现在图标图像中实现一个点,效果如下图,红色的点可以动。坐标为(x°,Y°)
    发表于 07-13 08:39

    如何更改ABBYY PDF Transformer+界面语言

    在安装ABBYY PDF Transformer+时会让您选择界面语言。此语言将用于所有消息、对话框、按钮和菜单项。在特殊情况下,您可能需要在安装完成后更改界面语言以适应需求,方法其实很简单,本文
    发表于 10-11 16:13

    PDF Transformer+“调整亮度”警告消息解决办法

    在扫描期间,如果亮度设置不正确,ABBYY PDF Transformer+将显示警告消息。用黑白模式扫描时,也可能需要调整亮度设置。下面小编给大家讲讲ABBYY PDF Transformer
    发表于 10-13 14:20

    如何更改ABBYY PDF Transformer+旋转页面

    为了实现最佳识别效果,页面应有标准方向,即,水平线条和字母应向上。所以有时不得不对文档页面进行旋转,以优化ABBYY PDF Transformer+转换结果。下面小编给大家讲讲如何更改ABBYY
    发表于 10-16 10:19

    LabVIEW中图像滤波Vi以及实现效果如何实现

    新手求助!!!LabVIEW中图像滤波Vi以及实现效果如何实现,能提供子Vi最好先谢谢大神
    发表于 01-11 22:58

    VL53L1水下使用效果如何?

    我知道旧的vl6180x在水下工作,但我找不到任何有关VL53L1的信息。有人试过吗?如果是这样,它的效果如何?我主要关注接近检测/距离测量,但有限的手势/运动检测将是一个很好的奖励
    发表于 04-15 09:23

    请问AT24C64和MX25L6406E效果如何?

    想试试AT24C64,MX25L6406E看看效果如何,不知道是否有人试过
    发表于 08-06 02:39

    CJMCU-115或者GY-33传感器的效果如何,是否没有色差?

    CJMCU-115或者GY-33传感器的效果如何,是否没有色差?
    发表于 10-17 06:01

    空调制热效果如何?空调制热多少度最合适?

    空调制热效果如何? 首先,空调不制热并不能说明是空调本身的质量出了问题,因为空调制热也受到外界低温条件的影响。陈先
    发表于 11-22 16:52 6680次阅读

    EE-26:AD184x Sigma Delta转换器:它们使用直流输入的效果如何?

    EE-26:AD184x Sigma Delta转换器:它们使用直流输入的效果如何?
    发表于 04-17 17:21 7次下载
    EE-26:AD184x Sigma Delta转换器:它们使用直流输入的<b class='flag-5'>效果如</b>何?

    我们可以使用transformer来干什么?

    技术细节问题。 解读以上所有问题不再本文范畴内,但笔者也将在后续文章中继续探索以上问题。本文重点关注:我们用transformer干啥? 我们用transformer干啥?笔者突
    的头像 发表于 04-22 10:49 1.2w次阅读
    我们可以使用<b class='flag-5'>transformer</b>来干什么?

    Go项目中引入中间件的目的和效果如

    中间件是什么?Go 项目中引入中间件的目的和效果如何?本文详细介绍了Golang 中间件。 中间件是一种计算机 软件,可为 操作系统 提供的 软件应用程序 提供服务,以便于各个软件之间的沟通,特别是
    的头像 发表于 08-14 14:24 2032次阅读

    基于Transformer的目标检测算法

    掌握基于Transformer的目标检测算法的思路和创新点,一些Transformer论文涉及的新概念比较多,话术没有那么通俗易懂,读完论文仍然不理解算法的细节部分。
    发表于 08-16 10:51 649次阅读
    基于<b class='flag-5'>Transformer</b>的目标检测算法

    使用PyTorch搭建Transformer模型

    Transformer模型自其问世以来,在自然语言处理(NLP)领域取得了巨大的成功,并成为了许多先进模型(如BERT、GPT等)的基础。本文将深入解读如何使用PyTorch框架搭建Transformer模型,包括模型的结构、训练过程、关键组件以及实现
    的头像 发表于 07-02 11:41 1603次阅读