代码
Bart模型论文解读,并基于MindSpore NLP推理复现

Bart模型论文解读,并基于MindSpore NLP推理复现

Bart模型论文解读,并基于MindSpore NLP推理复现

作者:鹤止 来源:知乎

随着自然语言处理(NLP)领域的快速发展,预训练模型成为推动各类任务性能提升的核心驱动力之一。从BERT到GPT,各类模型在理解与生成任务中推动了性能的提升。然而,它们的设计往往局限于特定任务场景,难以在更广泛的任务中兼顾效率与性能。Facebook AI团队提出的BART(Bidirectional and Auto-Regressive Transformers)以其统一的序列到序列框架和创新性的去噪预训练策略,为解决这一问题提供了新的思路。

论文创新点

本文的创新点如下:

**1、通用性强的去噪策略:**BART提出了各种灵活的文本扰动方法,使其能够更高效地学习语言的全局语义和结构特性。

  • 文本填充(Text Infilling):随机选取文本片段并使用mask替换,同时学习缺失内容和缺失长度。
  • 句子随机排列(Sentence Shuffing):打乱句子顺序,增强模型理解跨句依赖的能力。
  • 文本旋转(Document Rotation):随机调整文档的起始位置,训练模型理解文档的整体结构。

单词掩码与删除(Token Masking &Deletion):丰富传统掩码策略,模型不仅需要预测丢失内容,还需要推断丢失位置。

灵活地去噪策略

**2、统一的序列到序列框架:**BART融合了BERT的双向编码器和GPT的自回归解码器。

  • 编码器(encoder):捕捉输入的全局上下文信息。
  • 解码器(decoder):生成自回归输出,适用于生成任务。

数据集上的指标评价得分

01

生成任务

BART在生成任务上展现了极强的能力,特别是文本摘要和对话生成方面。

文本摘要:

  • CNN/DailyMail数据集:ROUGE-1、ROUGE-2和ROUGE-L分别为44.16、21.28和40.90。
  • XSum数据集(更抽象的摘要任务):相比最优基线提升6分,ROUGE-1、ROUGE-2和ROUGE-L分别达到45.14、22.27和37.25。

**对话生成:**在ConvAI2任务中,BART的F1得分为20.72,Perplexity为11.85,显著优于之前的最佳系统。

02

理解任务

尽管BART的设计偏向于生成任务,但在理解任务上表现同样出色。

GLUE基准测试:在MNLI任务中,BART达到89.9/90.1(m/mm)的准确率,与RoBERTa表现相当。在SST、QQP、QNLI任务当中表现出色。

问答任务:在SQuAD 1.1上取得88.8/94.6(EM/F1)的成绩。

相比其他工作的优势

01

更强的生成能力

相比BERT等只适用于理解任务的模型,BART的自回归解码器显著增强了生成任务性能,特别是在高度抽象的文本摘要和对话生成任务上。

02

灵活的预训练目标

BART的多种文本扰动方式(如文本填充和句子随机排列)使其对输入分布的适应能力更强。

03

减少预训练与下游任务的分布差异

通过去噪自编码的预训练目标,BART 的解码器始终在真实上下文中生成输出,大大降低了预训练与下游任务间的分布不匹配问题。

使用MindNLP对数据集进行推理验证

为了验证BART模型的效果,我们使用了MindNLP来进行推理验证。MindNLP是基于MindSpore的一个自然语言处理(NLP)开源库,它提供了大量的数据集、模型和工具,旨在降低进入NLP领域的门槛,加速研究和开发过程。

我们分别使用了transformer和MindNLP两个框架来加载模型,并使用了SST和NPLI两个数据集来进行评估,结果如下表所示,可以看出transformers和MindNLP之间只有及其微小的差距。MindNLP作为一款新兴的开源工具库,MindNLP展现出了极大的潜力和广阔的发展前景。我相信随着其不断完善和优化,未来它将取得更加出色的表现,并且更简单上手。其完整的代码已上传至github,链接如下:luoluo0042/mindnlp_bart: Inference validation of bart models using mindnlp

在两个框架上进行推理验证

使用MindNLP对数据集进行推理验证

BART是一种强大的序列到序列预训练模型,通过结合BERT的双向编码器和GPT的自回归解码器,显著提升了文本生成任务的性能,同时在理解任务上表现稳定。MindNLP中包含了NLP中许多常用的方法,可以帮助我们更方便快捷地构建和训练模型,大家也可以尝试使用MindNLP对模型进行训练和推理验证。