专栏首页AI小白入门【NLP】Facebook提出的预训练模型BART

【NLP】Facebook提出的预训练模型BART

论文选自arXiv

作者:Mike Lewis等

机器之心编译

参与:魔王、一鸣

FaceBook 近日提出了一个名为BART的预训练语言模型。该模型结合双向和自回归 Transformer 进行模型预训练,在一些自然语言处理任务上取得了SOTA性能表现。

近日,Facebook 发表论文,提出一种为预训练序列到序列模型而设计的去噪自编码器 BART。BART 通过以下步骤训练得到:1)使用任意噪声函数破坏文本;2)学习模型来重建原始文本。BART 使用基于 Transformer 的标准神经机器翻译架构,可泛化 BERT(具备双向编码器)、GPT(具备从左至右的解码器)等近期出现的预训练模型,尽管它非常简洁。Facebook 研究人员评估了多种噪声方法,最终通过随机打乱原始句子的顺序,再使用新型文本填充方法(即用单个 mask token 替换文本段)找出最优性能。

BART 尤其擅长处理文本生成任务,不过它在理解任务中的性能也不错。在提供同等的训练资源时,BART 可在 GLUE 和 SQuAD 数据集上实现与 RoBERTa 相当的性能,并在抽象对话、问答和文本摘要等任务中获得新的当前最优结果,在 XSum 数据集上的性能比之前研究提升了 6 ROUGE。在机器翻译任务中,BART 在仅使用目标语言预训练的情况下,获得了比回译系统高出 1.1 个 BLEU 值的结果。研究人员还使用控制变量实验复制了 BART 框架内的其他预训练机制,从而更好地评估影响终端任务性能的最大因素。

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

引言

自监督方法在大量 NLP 任务中取得了卓越的成绩。近期研究通过改进 masked token 的分布(即 masked token 被预测的顺序)和替换 masked token 的可用语境,性能获得提升。然而,这些方法通常聚焦于特定类型和任务(如 span prediction、生成等),应用较为有限。

Facebook 的这项研究提出了新架构 BART,它结合双向和自回归 Transformer 对模型进行预训练。BART 是一个适用于序列到序列模型的去噪自编码器,可应用于大量终端任务。预训练包括两个阶段:1)使用任意噪声函数破坏文本;2)学得序列到序列模型来重建原始文本。BART 使用基于 Tranformer 的标准神经机器翻译架构,可泛化 BERT、GPT 等近期提出的预训练模型。

图 1a:BERT:用掩码替换随机 token,双向编码文档。由于缺失 token 被单独预测,因此 BERT 较难用于生成任务。

图 1b:GPT:使用自回归方式预测 token,这意味着 GPT 可用于生成任务。但是,该模型仅基于左侧上下文预测单词,无法学习双向交互。

图 1c:BART:编码器输入与解码器输出无需对齐,即允许任意噪声变换。使用掩码符号替换文本段,从而破坏文本。使用双向模型编码被破坏的文本(左),然后使用自回归解码器计算原始文档的似然(右)。至于微调,未被破坏的文档是编码器和解码器的输入,研究者使用来自解码器最终隐藏状态的表征。

模型

去噪自编码器 BART 可将被破坏文档映射至原始文档。它是一个具备双向编码器(对被破坏文本使用)和从左至右自回归解码器的序列到序列模型。至于预训练,研究人员优化了原始文档的负 log 似然。

架构

BART 使用 (Vaswani et al., 2017) 提出的标准序列到序列 Transformer 架构,不过做了少许改动:按照 GPT 模型,将 ReLU 激活函数更改为 GeLU,从 N (0, 0.02) 初始化参数。BART base 模型的编码器和解码器各有 6 层,large 模型中层数各增加到了 12。BART 架构与 BERT 所用架构类似,区别如下:1)解码器的每个层对编码器最终隐藏层额外执行 cross-attention(和 Transformer 序列到序列模型一样);2)BERT 在词预测之前使用了额外的前馈网络,而 BART 没有。总之,BART 相比同等规模的 BERT 模型大约多出 10% 的参数。

预训练 BART

BART 是通过破坏文档再优化重建损失(即解码器输出和原始文档之间的交叉熵)训练得到的。与目前仅适合特定噪声机制的去噪自编码器不同,BART 可应用于任意类型的文档破坏。极端情况下,当源文本信息全部缺失时,BART 也等同于语言模型。

  • token 掩码:按照 BERT 模型,BART 采样随机 token,并用掩码替换它们。
  • token 删除:从输入中随机删除 token。与 token 掩码不同,模型必须确定缺失输入的位置。

图 2:向输入添加不同的噪声变换。这些变换是可组合的。

  • 文本填充:采样多个文本段,文本段长度取决于泊松分布 (λ = 3)。用单个掩码 token 替换每个文本段。长度为 0 的文本段对应掩码 token 的插入。
  • 句子排列变换:按句号将文档分割成多个句子,然后以随机顺序打乱这些句子。
  • 文档旋转:随机均匀地选择 token,旋转文档使文档从该 token 开始。该任务的目的是训练模型识别文档开头。

BART 模型微调

序列分类任务

序列分类任务中,编码器和解码器的输入相同,最终解码器 token 的最终隐藏状态被输入到新的多类别线性分类器中。该方法与 BERT 中的 CLS token 类似,不过 BART 在解码器最后额外添加了一个 token,这样该 token 的表征可以处理来自完整输入的解码器状态(见图 3a)。

token 分类任务

对于 token 分类任务,研究人员将完整文档输入到编码器和解码器中,使用解码器最上方的隐藏状态作为每个单词的表征。该表征的用途是分类 token。

序列生成任务

由于 BART 具备自回归解码器,因此它可以针对序列生成任务进行直接微调,如抽象问答和摘要。在这两项任务中,信息复制自输入但是经过了处理,这与去噪预训练目标紧密相关。这里,编码器的输入是输入序列,解码器以自回归的方式生成输出。

机器翻译

研究人员用新的随机初始化编码器替换 BART 的编码器嵌入层。该模型以端到端的方式接受训练,即训练一个新的编码器将外来词映射到输入(BART 可将其去噪为英文)。新的编码器可以使用不同于原始 BART 模型的词汇。

源编码器的训练分两步,均需要将来自 BART 模型输出的交叉熵损失进行反向传播。第一步中,研究人员冻结 BART 的大部分参数,仅更新随机初始化的源编码器、BART 位置嵌入和 BART 编码器第一层的自注意力输入投影矩阵。第二步中,研究人员将所有模型参数进行少量迭代训练。

图 3:a:要想使用 BART 解决分类问题,编码器和解码器的输入要相同,使用最终输出的表征。b:对于机器翻译任务,研究人员训练一个额外的小型编码器来替换 BART 中的词嵌入。新编码器可使用不同的词汇。

结果

表 1:预训练目标对比。所有模型的训练数据都是书籍和维基百科数据。

表 2:大模型在 SQuAD 和 GLUE 任务上的结果。BART 的性能堪比 RoBERTa 和 XLNet,这表明 BART 的单向解码器层不会降低模型在判别任务上的性能。

表 3:在两个标准摘要数据集上的结果。在这两个摘要任务上,BART 在所有度量指标上的性能均优于之前的研究,在更抽象的 XSum 数据集上的性能较之前模型提升了 6 个百分点。

表 4:BART 在对话回答生成任务上的性能优于之前研究。困惑度基于 ConvAI2 官方 tokenizer 进行了重新归一化。

表 5:BART 在难度较高的 ELI5 抽象问答数据集上取得了当前最优结果。

表 6:BART 和基线模型在机器翻译任务上(使用数据集包括 WMT‘16 RO-EN 和回译数据)的性能对比情况。BART 使用单语英文预训练,性能优于强大的回译基线模型。

The End

本文分享自微信公众号 - AI小白入门(StudyForAI)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 多项NLP任务新SOTA,Facebook提出预训练模型BART​

    近日,Facebook 发表论文,提出一种为预训练序列到序列模型而设计的去噪自编码器 BART。BART 通过以下步骤训练得到:1)使用任意噪声函数破坏文本;2...

    机器之心
  • BART详解

    一切都得从Transformer说起。Transformer左半边为Encoder,右半边为Decoder。我们将Encoder输入的句子称为source,De...

    mathor
  • 【源头活水】mBART:多语言翻译预训练模型

    “问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精...

    马上科普尚尚
  • NLP简报(Issue#7)

    在机器学习的背景下,合成泛化(compositional generalization)是指机器学习从一组训练示例学习上下文表示。迄今为止,尚不清楚如何正确地测...

    NewBeeNLP
  • (含源码)「自然语言处理(NLP)」社区问答评估&&各种Bert模型优化对比

    1、TILE: Predicting Subjective Features from Questions on QA Websites using BERT

    ShuYini
  • [预训练语言模型专题] BART & MASS 自然语言生成任务上的进步

    BART和MASS都是2019年发布的,面向生成任务,基于Transformer神经翻译结构的序列到序列模型。分别由Facebook 和微软亚洲研究院提出。他们...

    朴素人工智能
  • 一口气发布1008种机器翻译模型,GitHub最火NLP项目大更新:涵盖140种语言组合

    没错,就是 Hugging Face (抱抱脸)标星 26.9k 的 Transformer 项目。在最新更新的版本里,抱抱脸发布了 1008 种模型,正式涉足...

    量子位
  • 一口气发布1008种机器翻译模型,GitHub最火NLP项目大更新:涵盖140种语言组合

    模型涵盖 140 种不同语言组合,中文翻英文,英文译法语,法语翻阿拉伯语……还能一对多翻译。

    磐创AI
  • BART原理简介与代码实战

    最近huggingface的transformer库,增加了BART模型,Bart是该库中最早的Seq2Seq模型之一,在文本生成任务,例如摘要抽取方面达到了S...

    NewBeeNLP
  • Facebook开源NLP建模框架PyText,从论文到产品部署只需数天

    Yann LeCun 对此介绍道,「PyText 是一个工业级的开源 NLP 工具包,可用于在 PyTorch 中开发 NLP 模型,并通过 ONNX 部署。其...

    机器之心
  • 480万标记样本:Facebook提出「预微调」,持续提高语言模型性能

    机器学习研究人员在自我监督的语言模型预训练方面取得了非凡的成功。自监督学习是不需要标记数据而进行训练。预训练是指通过一项任务来训练模型,并可应用于其他任务。

    新智元
  • NLP中的范式迁移

    随着预训练模型的发展,NLP领域从各自任务的单打独斗,逐渐转变为几个主流范式的中原逐鹿,近期风头正盛的prompt learning更是隐隐有一统江湖之势。

    NewBeeNLP
  • 为条件文本生成将句子顺序重新表述

    在自然语言处理中,将一组杂乱的句子组织成连贯的文本的任务很重要,它被用来评估机器对因果关系和时间关系的理解。我们提出了Reorder-BART(RE-BART)...

    猪猪奶茶三分糖
  • 5个简单的步骤使用Pytorch进行文本摘要总结

    文本摘要是自然语言处理(NLP)的一项任务,其目的是生成源文本的简明摘要。不像摘录摘要,摘要不仅仅简单地从源文本复制重要的短语,还要提出新的相关短语,这可以被视...

    deephub
  • 拿到参考资料的预训练模型,太可怕了!

    今天和大家分享 Facebook 发表于 NeurIPS 2020 的工作,既然『闭卷考试』不理想,那不如『开卷答题』?

    NewBeeNLP
  • Pytext支持分布式训练,Facebook AI基于PyTorch的NLP框架,简化部署流程

    PyText基于PyTorch,能够加速从研究到应用的进度,从模型的研究到完整实施只需要几天时间。框架里还包含了一些预训练模型,可以直接拿来处理文本分类、序列标...

    机器学习AI算法工程
  • 乘风破浪的PTM:预训练的发动机

    《乘风破浪的PTM》系列,讲述两年来预训练模型(Pre-Training Model, PTM)的技术进展,本篇主要整理预训练模型中的发动机:模型结构。错过...

    炼丹笔记
  • 【NLP】预训练模型综述

    摘要:近年来,预训练模型的出现将自然语言处理带入了一个新的时代。本文概述了面向自然语言处理领域的预训练模型技术。我们首先概述了预训练模型及其发展历史。并详细介绍...

    黄博的机器学习圈子
  • 只用两行代码,我让Transformer推理加速了50倍

    最近有学妹问我,我训了一个Transformer模型,但是预测好慢啊,有啥解决方案吗?

    godweiyang

扫码关注云+社区

领取腾讯云代金券