当前位置:   article > 正文

BART论文解读_bard论文

bard论文

1 概述

  • 全称:Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension。BART来源于Bidirectional and Auto-Regressive Transformers
  • 发表时间: 2019.10.29
  • 团队:Facebook AI

Paper地址​arxiv.org/pdf/1910.13461.pdf

Code地址​github.com/huggingface/transformers/blob/master/tests/test_modeling_bart.py

2. 主要贡献

  • 背景:由于基于BERT类的生成模型大多在预训练和下游任务之间存在一定的差异,导致生成模型的结果并不理想,本文提出了BART模型,更加充分去利用上下文信息自回归特点
  • 主要贡献:BART提出了一个结合双向和自回归的预训练模型。BART模型首先使用任意噪声来破坏原文本,然后学习模型重构原文本。这样使得,BART不仅很好的处理文本生成任务,同时理解任务上的表现也不错。

3 模型架构

3.1 Architecture

BART使用了标准的seq2seq tranformer结构。BART-base使用了6层的encoder和decoder, BART-large使用了12层的encoder和decoder。BART的模型结构与BERT类似,不同点在于:

(1)decoder部分基于encoder的输出节点在每一层增加了cross-attention(类似于tranformer的seq2seq模型);

(2)BERT的词预测之前使用了前馈网络,而BART没有。总的来讲,在同等规模下,BART比BERT多了10%的参数。

3.2 Pre-training BART

BART的预训练是在于破坏原文档然后优化重构loss,通过交叉熵来计算decoder输出与原文档的差异。极端情况下,当原文档信息全部丢失时,BART相当于语言模型。

图1 BART预训练方式

BART采用了多种方式破坏原文档,即采用了多种Noise.

  • Token Masking 随机替换原始token为[MASK]
  • Token Deletion 随机删除输入的token。相比较于Token Masking,模型必须决定哪个位置是遗漏的。
  • Text Infilling Text infilling是基于spanBERT的思路,取连续的token用[MASK]替换,span的长度服从 的泊松分布。特殊情况下,当span长度为0时,相当于插入了一个mask
  • Sentence Permutation 打乱文档中句子的顺序。
  • Document Rotation 随机选择一个token,然后旋转文本使得新的文本以这个token开头。此任务的目的用于判别文本的开头。

3.3 Fine-tuning BART

3.3.1 Sequence Classification Tasks

对于序列分类(文本分类)任务,encoder和decoder部分都用相同的输入,将deocoder最后一个节点用于多类别线性分类器中。此方法与BERT的CLS token较为类似;区别在于,BART在decoder部分最后增加了一个token,如此,便可获得来自完整输入的解码信息。(见图) - 思考:此方法,在inference上会更耗时吗

图2 BART在文本分类上finetune的方式

3.3.2 Token Classification Tasks

对于序列标注任务,同样是在decoder和encoder采用相同的文本输入,以decoder的隐藏节点输出用于预测每个节点的类别。

3.3.3 Sequence Generation Tasks

由于BART的模型框架本身就采用了自回归方式,因而在finetune序列生成任务时,可直接在encoder部分输入原始文本,decoder部分用于预测待生成的文本。

3.3.4 Machine Translation

BART预训练模型同样也可用于将其它语言翻译为英文(BART的预训练模型是基于英语来训练的)。

先前的研究工作已经表明,在机器翻译中,encoder部分融合预训练模型能带来较大的效果提升,然后在decoder部分却受到限制。本文本表明在仅仅在encoder更换部分参数,就可利用到整个BART模型(包括encoder和decoder)。

更准确地说,本文替换encoder的embedding layer的参数为随机初始化所得(因输入语言不再是预训练模型采用的英语)。然后,整个finetue阶段便可分为两步:1)先冻结BART的大部分参数,仅仅更新encoder部分的randomly initialized encoder和BART positional embeddings,以及输入到BART的第一层self-attention映射矩阵。2)更新BART的全部参数,这一步,仅需迭代几次即可。

图3 BART机器翻译finetune的模型结构

4 实验结果

表1 不同的预训练方式对比

表1表明,基于消融实验,上述所采用的噪声处理方式基本上相比之前的模型,在准确率上都有一定的提升。

表2 SQuAD和GLUE任务上实验结果

表2表明,BART在SQuAD和GLUE上的效果堪比RoBERTa和XLNET,在部分任务上效果最优,也说明了采用单向编码器并不会降低判别任务上的效果。

表3 文本摘要上实验结果

表3表明,BART在摘要提取效果都有明显提升,也再次表明,预训任务与下流任务尽可能接近时,下游任务会达到更好的效果。

5 写在最后

5.1 总结

BART通过重构带有噪声的文本,不仅能在判别任务达到与RoBERTa持平的效果,甚至可在生成任务上达到SOTA.

5.2 一点点思考

  • 与MASS和UniLM初衷较为类似,也希望不仅利用到BERT类的上下文信息,同时也希望像GPT一样学到自回归特性。只是做法上较为独特,在自编码上融合了更多的噪声信息,猜想,假设后续出现更多的噪声处理方式,是否也可融入进来?

参考

  1. 好奇的小will 【FB-BART新的预训练模型】阅读笔记 - 知乎
  2. 潘小小 【论文精读】生成式预训练之BART - 知乎
  3. kaiyuan BART原理简介与代码实战 - 知乎
  4. 机器之心 https://zhuanlan.zhihu.com/p/90
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/729443
推荐阅读
  

闽ICP备14008679号