论文阅读【自然语言处理-预训练模型2】BART:Denoising Sequence-to-Sequence Pre-training for Natural Language Generation

这篇具有很好参考价值的文章主要介绍了论文阅读【自然语言处理-预训练模型2】BART:Denoising Sequence-to-Sequence Pre-training for Natural Language Generation。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension

BART: 用于自然语言生成、翻译和理解的去噪序列对序列预训练

【机构】:Facebook AI

【作者】:Mike Lewis, Yinhan Liu, Naman Goyal, Marjan Ghazvininejad, Abdelrahman Mohamed, Omer Levy, Ves Stoyanov, Luke Zettlemoyer

【论文地址】:https://www.aminer.cn/pub/5dbab2523a55acea3c05b02b?conf=acl2020

【收录会议】:ACL 2020

【代码】:https://github.com/pytorch/fairseq/tree/master/examples/bart

主要内容

《BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension》是由Facebook AI Research的一组研究人员提出的一种序列到序列的预训练模型。这篇论文主要介绍了BART模型的设计和实现,以及在自然语言生成、翻译和理解等多个领域上的表现。

  • BART(Bidirectional and Auto-Regressive Transformer)模型是一种基于Transformer的序列到序列预训练模型,通过对输入序列进行随机掩码和文本生成,学习对文本进行压缩、生成和解压缩的能力。BART使用了一种特殊的掩码方法,称为“噪声掩码”,以此来实现输入的噪声生成和自监督训练。同时,BART也采用了一种自回归的方式进行训练,即在解码器中逐步生成输出,从而保证生成的输出和原始输入之间的语义一致性。

  • BART的训练主要包括两个部分:

    • 第一个部分是预训练,利用大规模的未标记文本数据进行模型训练;
    • 第二个部分是微调,利用有标记的数据对模型进行微调,以适应具体的任务。
  • BART在多个自然语言处理任务中取得了很好的表现,包括机器翻译、文本生成、问答系统等任务。其表现优于以往的一些经典的预训练模型,如BERT、GPT-2等。

总之,《BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension》这篇论文提出了一种序列到序列的预训练模型,其设计和实现具有创新性,并在多个自然语言处理任务上取得了优秀的表现。

论文解析

论文的创新点

  • 基于自回归的生成模型与基于掩码的填充模型的结合,将两种模型的优势结合起来,提高了模型的表现。
  • 引入了一种新的噪声预处理方式,即Masked Language Modeling (MLM),它通过随机掩盖输入的一部分token来生成噪声样本,从而增加了模型的鲁棒性和泛化能力。
  • 增加了一种生成式训练任务:生成式填充式掩码语言模型 (FPM),这是一种可以同时处理自然语言生成和机器翻译的模型。
  • 提出了一种用于句子分类和文本摘要任务的特定解码器,这些解码器在生成句子和文本时,可以产生更加准确的结果。

论文的总体思想?

BART论文的总体思想是使用一个序列到序列的模型,通过对原始文本进行噪声修复任务的预训练来提高各种自然语言处理任务的性能,包括生成、翻译和理解任务。通过引入不同类型的噪声(如掩码、轮换和删除),模型学习从损坏的输入中重构原始文本的能力,从而增强模型的泛化能力和鲁棒性。此外,论文还引入了一种可控的文本生成方法,称为“填充掩码的语言建模”,以帮助模型进行无监督的多任务预训练。通过这些创新点,BART论文提出了一个全新的预训练模型,成为了自然语言处理领域中最具竞争力的模型之一

论文的methodology是什么?

BART(双向和自动回归转化器)是一种序列到序列(Seq2Seq)模型的预训练方法。它基于变换器结构,使用去噪自动编码器(DAE)框架进行预训练。

BART的方法包括几个步骤:

  • 屏蔽语言建模(MLM): 在这个步骤中,输入序列中一定比例的标记被随机屏蔽,模型被训练为基于被屏蔽的标记来预测原始标记。
  • 洗牌语言建模(SLM): 在这个步骤中,输入序列中的标记的顺序被随机地洗掉,模型被训练来预测原始的顺序。
  • 句子重建(SR):在这一步骤中,模型被训练为重建原始句子,并给出其损坏的版本。损坏是通过随机地用一个特殊的符号替换一些词而引入的。
  • 文本填充(TI):在这一步骤中,模型被训练为在给定的背景下填充文本的缺失部分。缺失的部分可以是一个词或一个较长的跨度。
  • 文档建模(DM): 在这一步骤中,模型被训练来重建一个完整的文档,给定一个损坏的版本。损坏是通过随机删除或替换一些句子而引入的。
  • BART将所有这些预训练步骤结合到一个统一的框架中,并以自动编码器的方式进行训练,其中编码器和解码器被联合训练以最小化重建误差。

在预训练之后,BART模型可以针对各种下游任务进行微调,如机器翻译、总结和问题回答。

论文的模型是什么?

BART(Bidirectional and Auto-Regressive Transformer)是在 "BART: 用于自然语言生成、翻译和理解的去噪序列对序列预训练 "的论文中提出的。它是一个基于Transformer架构的序列到序列模型,并在去噪自动编码器任务上进行了预训练。

  • BART模型由一个编码器和一个解码器组成,其中编码器和解码器的每一层都是一个多头自我注意机制,然后是一个前馈神经网络。该模型采用了双向结构,使编码器能够考虑过去和未来的语境,并采用了自动回归的解码器,每次生成一个标记的输出序列。作者还引入了一个新的预训练目标,称为去噪自动编码,该模型通过预测原始序列来学习重建一个被破坏的输入序列。
  • 在预训练期间,作者使用去噪自动编码和文本填充目标的组合来学习自然语言的通用表示法,该表示法可以针对各种下游任务进行微调,如机器翻译、总结和问题回答。作者还提出了一种被称为 "迭代回译 "的新技术,包括在回译数据上对BART进行微调,这使得机器翻译任务得到了显著的改善。

BART模型解析

架构

  • Encoder: BART的编码器是一个基于transformer结构的模型,由12层transformer encoder block组成,每个block包含多头自注意力机制、全连接层和残差连接。
  • Decoder: BART的解码器也是一个基于transformer结构的模型,由12层transformer decoder block组成,每个block包含多头自注意力机制、全连接层和残差连接。与编码器不同的是,解码器还包含一个encoder-decoder注意力机制,用于从编码器中获取上下文信息。
  • Masked Language Model (MLM): BART使用类似于BERT的MLM任务进行预训练,目的是学习将被mask的单词进行预测的能力,提高模型对语言建模的能力。
  • Sequence-to-Sequence Learning: BART使用类似于T5的序列到序列学习的方式进行预训练,目的是让模型学习将输入序列映射到输出序列的能力。
  • Denoising Autoencoder: 为了增加模型的鲁棒性和泛化能力,BART还使用了一种基于去噪自编码器的预训练任务,该任务是在输入序列中随机mask一些token,然后让模型预测被mask的token,从而学习在输入数据中捕捉到的噪声和变化。

BART预训练

BART预训练包含以下几个部分:

  • Masked Language Model (MLM):在输入序列中,将随机一定比例的token替换为特殊的掩码标记,让模型预测掩码标记所代表的单词。

  • Sequence-to-Sequence Learning (Seq2Seq):将一段文本作为输入序列,在输出序列中生成一段文本,用于翻译、摘要等任务。

  • Denoising Autoencoder:将输入序列损坏后作为模型的输入,模型的目标是还原原始输入序列。

    DAE主要应用于BART预训练的第一阶段,即Masked Language Model(MLM)和Sequence-to-Sequence Learning(Seq2Seq)之前

  • Shuffled Language Modeling (SLM):将输入序列中的一些token随机打乱,让模型重新将它们组合成原始序列。

  • Sentence Reconstruction (SR):将输入序列分为若干个段落或句子,随机删除其中一些句子或段落,并让模型重新生成完整的原始序列。

  • Text Infilling (TI):在输入序列中随机删除一些单词或短语,并让模型填充缺失的部分。

  • Document Modeling (DM):将输入序列分为若干个段落或文档,随机删除其中一些段落或文档,并让模型重新生成完整的原始序列。


  • BART模型的Sequence-to-Sequence Learning(Seq2Seq)和洗牌语言建模(SLM),句子重建(SR),文本填充(TI),文档建模(DM)这几个技术都是BART模型中的预训练任务。
  • 具体来说,Seq2Seq任务在BART的训练中起到了基础的作用,通过大量的无监督训练,BART的Seq2Seq部分能够自动学习到输入输出序列之间的对应关系,这对后续的生成任务有很大帮助。
  • SLM任务和SR任务也有助于训练BART的Seq2Seq部分,因为它们通过改变输入和输出的顺序,引入了更多的随机性和噪声,可以使模型更加健壮。
  • TI任务则可以帮助模型学习到填充缺失的文本信息,从而提高模型的生成能力。
  • 最后,DM任务则可以使模型学习到更长的文本结构和关系,从而提高其理解能力。

总的来说,BART模型中的这些预训练任务相辅相成,共同构建了一个强大的自然语言处理模型。


BART模型的Masked Language Model (MLM)与洗牌语言建模(SLM),句子重建(SR),文本填充(TI),文档建模(DM)都是预训练任务。其中,MLM是基础任务,其他任务都是在MLM的基础上进行的补充,以进一步提高BART模型的能力。

  • SLM任务通过对输入序列中的随机位置进行洗牌,使得模型更加关注输入序列的全局结构,学习序列的长期依赖关系。
  • SR任务则通过将输入序列分为两个部分,随机删除其中的一部分,并要求模型根据另一部分重构原始序列,从而促进模型学习语义信息和句子结构。
  • TI任务则通过将输入序列中的随机位置替换为特定的占位符(如[MASK]),然后要求模型预测这些占位符所代表的单词。这使得模型更加注重局部信息和上下文,从而提高了模型的上下文感知能力。
  • DM任务则通过将多个文档合并成一个较长的文档,并将这个文档随机分成多个段落,要求模型根据上下文生成下一个段落。这个任务可以帮助模型理解文档的整体结构和语义关系,提高模型的文档生成能力。

BART的预训练分为两个阶段,第一个阶段使用MLM、SLM和SR三个任务进行预训练,第二个阶段使用TI和DM两个任务进行微调。

具体来说,第一个阶段分别使用以下任务:

  • 屏蔽语言建模(Masked Language Modeling,MLM):在输入的句子中随机屏蔽一些单词,并训练模型预测这些单词。
  • 洗牌语言建模(Shuffled Language Modeling,SLM):将输入的句子中的单词随机排序,训练模型预测它们的正确顺序。
  • 句子重建(Sentence Reconstruction,SR):将输入的句子拆分为两个子句并打乱它们的顺序,训练模型将它们正确地重构回原来的句子。

第二个阶段分别使用以下任务:

  • 文本填充(Text Infilling,TI):给定一些句子中的部分内容,训练模型填充缺失的部分。
  • 文档建模(Document Modeling,DM):给定一个文档,训练模型生成与之相似的文档。

这些任务的目标是让BART学习自然语言的各个方面,使其能够适应各种下游任务,例如机器翻译、文本摘要和对话生成。

Masked Language Model (MLM)部分

BART模型的Masked Language Model (MLM)部分与BERT模型的MLM部分相似,都是将输入序列的一部分token进行遮盖(mask),然后预测被遮盖的token。

  • 具体来说,BART模型的MLM部分的输入是随机遮盖的token序列,遮盖的位置可以是单个token或者一段token,被遮盖的token会被替换成特殊的占位符。模型的任务是根据上下文信息预测被遮盖的token。
  • 为了增强模型的泛化能力,BART模型的MLM部分在训练过程中使用了一些tricks。首先,每个token有50%的概率被保留不进行遮盖,这样可以保证模型训练的时候能够看到真实的token。其次,一部分被遮盖的token会被替换成随机的token,而不是特殊的占位符,这样可以增加模型对噪声的容忍度。最后,为了减少训练中的偏差,BART模型在MLM部分使用了不同的遮盖策略,比如随机mask、固定mask等,以增加模型的鲁棒性。

总之,BART模型的MLM部分通过遮盖一部分token来预测被遮盖的token,同时使用了多种tricks来增强模型的泛化能力和鲁棒性。

Sequence-to-Sequence Learning部分

BART模型的Sequence-to-Sequence Learning部分包含了两个阶段的训练过程:预训练和微调。

  • 在预训练阶段,BART模型的输入是被随机mask的文本序列。模型通过Encoder把输入的序列映射到一组高维的特征向量,然后通过Decoder根据这些特征向量生成一个与原序列相同长度的序列,其中被mask的位置需要预测其原始词语。预训练的目标是通过最大化被mask的位置上词语的似然概率来学习到对输入序列的概率分布建模的能力。预训练包含了两个阶段:mask部分位置的输入文本并把其余位置作为Decoder的输入,以及mask掉Decoder的输入序列中的部分位置并要求模型生成正确的序列。
  • 在微调阶段,BART模型的目标是在特定的自然语言处理任务上进行优化。以文本分类任务为例,微调过程中,BART模型将输入序列通过Encoder映射成特征向量,并通过Decoder生成预测标签。为了最小化预测标签与真实标签之间的差异,微调阶段的目标是最小化交叉熵损失函数。微调时可以使用多种任务特定的结构,如额外的输出层或修改损失函数,以适应不同的任务需求。

总之,BART模型的Sequence-to-Sequence Learning部分通过预训练和微调两个阶段的训练过程,实现了在自然语言处理任务上的高效学习和应用。

Denoising Autoencoder部分

BART模型的Denoising Autoencoder (DAE)部分是用于预训练BART的一个关键组成部分。它的目的是让模型从噪声数据中学习如何生成干净的数据。

  • 具体来说,DAE部分采用了一种类似于BERT的方法,将输入序列的一部分随机遮盖掉(即用特殊的[mask]符号替换),并要求模型预测这些被遮盖的词。
  • 与BERT不同的是,BART的DAE部分是以序列到序列的方式训练的。具体来说,对于一个被遮盖的输入序列,模型需要输出一个完整的、经过恢复的、与原始序列尽可能相似的输出序列。该模型的输入和输出都是token序列,模型的目标是学习一个将噪声序列映射到干净序列的映射函数。
  • 为了进一步提高DAE的效果,BART使用了两个策略:第一个是将噪声序列随机打乱顺序,从而使模型不仅学会替换遮盖的词,还能正确排序整个序列;第二个是使用了一种多样性惩罚机制,即对于每个被遮盖的位置,让模型分别预测多个可能的token,从而避免了过拟合。
Shuffled Language Modeling(SLM)

BART模型中的洗牌语言建模(Shuffled Language Modeling, SLM)是一种自监督学习任务,旨在进一步提高模型的泛化能力。

在SLM中,模型需要预测一个句子中打乱顺序的单词序列的正确顺序。具体来说,给定一个句子,首先随机打乱其中的单词顺序,然后将这个打乱顺序后的句子作为模型的输入,模型需要输出原始句子中单词的正确顺序。这个任务要求模型对单词在句子中的位置有更深入的理解,进一步提高了模型的泛化能力。

  • 为了训练SLM任务,BART模型将打乱顺序的句子作为输入,通过Transformer解码器生成对应的概率分布。对于每个位置,模型会选择最有可能的下一个单词,然后计算正确顺序的损失函数。具体来说,对于一个长度为 T T T的句子,首先从中随机选取一个位置 i i i,将句子分成两部分,然后交换这两部分的位置,得到打乱顺序的句子。然后将这个打乱顺序的句子送入模型,得到预测的概率分布 P ( y t ∣ x 1 : t ) P(y_t|x_{1:t}) P(ytx1:t),其中 t t t表示当前位置。最后,计算正确顺序的负对数似然损失:

L S L M = − l o g P ( y t ∣ x 1 : t ) L_{SLM} = -logP(y_t|x_{1:t}) LSLM=logP(ytx1:t)

通过最小化SLM损失函数,模型能够学习到单词在句子中的位置信息,进一步提高模型的泛化能力。

Sentence Reconstruction

BART模型的句子重建(Sentence Reconstruction,SR)部分是指对输入句子进行随机删除、添加、替换等操作,然后将操作后的句子输入到BART模型中,通过最小化重建句子与原始句子的差异来进一步训练模型。这一部分的主要目的是使模型更好地学习语言的局部上下文和语义信息,提高其对输入序列的理解能力。具体来说,SR部分分为两个阶段:

  • 生成随机删除、添加、替换等操作的掩码,将原始句子与掩码相乘得到操作后的句子作为输入。
  • 将操作后的句子输入到BART模型中,让模型进行预测,然后通过最小化重建句子与原始句子之间的差异来训练模型。

整个SR部分的训练过程可以看作是一个无监督的预训练过程,通过训练模型对不完整的句子进行重建,从而提高模型的鲁棒性和泛化能力。

Text Infilling,TI

BART模型的文本填充(Text Infilling,TI)部分是指在训练时,随机遮蔽句子中的一些单词,并要求模型预测被遮蔽的单词。这个任务可以被看作是句子层面的语言模型,其中模型需要对整个句子进行理解,并预测遮蔽单词的上下文。这个任务可以提高模型对文本上下文的理解和生成能力。

  • 具体来说,在训练时,模型会随机选择一些单词,并将它们用特殊的标记进行遮蔽,然后将整个句子输入模型。模型需要对整个句子进行理解,包括上下文和语法结构,并预测被遮蔽的单词。具体来说,对于每个被遮蔽的单词,模型会输出一个概率分布,表示该位置可能出现的所有单词。在训练时,模型会使用交叉熵损失函数来最小化预测和真实值之间的差距。

在预测时,TI部分可以用于生成带有缺失单词的文本。具体来说,可以将一个完整的句子输入模型,并遮蔽一些单词。模型会预测被遮蔽的单词,并输出一个完整的句子。这个任务可以用于生成缺失的文本,比如自动摘要、机器翻译等。

Document Modeling,DM

BART模型的文档建模(Document Modeling,DM)是其预训练中的另一任务。该任务的目标是将一个文档中的多个句子合并成单个连续的文本序列,并在此基础上预测下一个句子。具体来说,该任务将一个文档拆分成多个句子,对每个句子进行一些噪声处理,然后将它们合并成一个文本序列,其中不同句子之间用一个特殊的分隔符进行分割。这个序列作为模型的输入,而目标是预测下一个句子。为了使模型能够更好地理解文档级别的语义,DM任务还引入了一个掩码机制,用于掩盖输入序列中的一些句子,以便模型在训练时必须学习如何从其余句子中推断出被掩盖的句子的内容。

  • 具体来说,在DM任务中,模型输入一个文档的多个句子,其中一些句子被掩盖。模型的任务是预测在给定的上下文中,被掩盖的句子的内容。这个任务在一定程度上类似于语言建模,不同之处在于文本序列中的多个句子之间有一个分隔符。为了处理这种情况,BART在输入序列中引入了一种特殊的掩码记号,用于表示分隔符的位置。在训练过程中,模型被要求预测在给定的上下文中被掩盖的句子,同时保持其他句子的连续性和流畅性。这样,模型可以学习到如何将不同的句子组合成有意义的文档,并对文档中可能存在的噪声和缺失数据进行建模。
训练的目标函数

BART模型的训练目标是最大化给定输入序列x的条件概率 P ( y ∣ x ) P(y|x) P(yx),其中y表示目标序列。

  • 具体地,BART使用了一种基于掩码的语言建模(Masked Language Modeling, MLM)的目标函数。
  • 在每个训练样本中,BART以一定概率随机掩盖一些输入标记,并将这些掩盖的标记作为模型的预测目标,让模型预测被掩盖的标记。
  • 在预测掩盖标记的过程中,模型只能看到掩盖标记之前的上下文信息,这使得模型必须学会从上下文中推断出被掩盖的标记。
  • 在训练过程中,BART的目标是最小化预测掩盖标记的交叉熵损失函数。

BART的微调

实现过程

BART模型的微调是指在预训练阶段之后,将模型进一步调整以适应特定任务的过程。通常情况下,微调阶段包括以下步骤:

  • 加载预训练模型:首先,需要加载已经预训练好的BART模型,可以使用Hugging Face Transformers库中的预训练模型。预训练模型可以是通用的,也可以是针对特定任务的。

  • 数据准备:准备一个包含有标注数据的数据集,该数据集应与模型预训练时使用的数据集相似。此外,需要将数据集转换为BART模型的输入格式,通常是将输入序列编码为tokens或token IDs,并将标注的目标序列进行相应的编码和处理。

  • 定义微调目标:根据具体任务需要,定义合适的微调目标和损失函数。例如,对于文本摘要任务,可以使用ROUGE指标作为微调目标,对于文本翻译任务,可以使用BLEU指标作为微调目标。

  • 微调模型:使用预训练模型初始化模型参数,并在任务特定的数据集上进行微调。在微调过程中,可以选择冻结部分模型参数,如编码器或解码器的一部分,以避免过拟合。

  • 超参数调整:调整学习率、批次大小、梯度累积等超参数,以提高模型性能和稳定性。

  • 训练和验证:使用训练集进行训练,使用验证集进行调参,通过监测验证集的性能来确定何时停止训练。

  • 评估性能:使用评估指标对模型性能进行评估,如ROUGE或BLEU指标。

  • 保存模型:在微调完成后,需要保存微调后的模型以备后续使用。可以将模型保存为Hugging Face Transformers库支持的格式,如PyTorch模型或TensorFlow模型。

在实现上,可以使用PyTorch等深度学习框架来实现BART模型的微调。PyTorch提供了许多方便的工具和函数,例如预训练模型的加载、优化器的选择、损失函数的定义等。同时,也可以借助开源的工具库,如Hugging Face的transformers库等,来快速构建微调模型。

微调的目标函数

BART模型微调的目标函数取决于具体的任务。对于文本生成任务,如机器翻译和文本摘要,通常采用交叉熵损失作为目标函数。对于序列标注任务,如命名实体识别和情感分析,通常采用序列标注损失函数,如交叉熵损失和F1损失。而对于问答任务,通常采用交叉熵损失和辅助损失函数来优化模型。需要根据具体任务和数据集来选择合适的目标函数。

BART模型的优缺点

BART模型的优点

  • 多用途性:BART模型可以应用于各种自然语言处理任务,包括文本生成、机器翻译和问答系统等。
  • 预训练和微调框架:BART模型基于Transformer模型,使用了预训练和微调框架,使得模型在各种任务上的表现良好。
  • 多种预训练任务:BART模型使用多种预训练任务(如Masked Language Model,Denoising Autoencoder,Sequence-to-Sequence Learning等)进行预训练,从而提高模型的性能和鲁棒性。
  • 生成高质量文本:BART模型在生成文本方面表现出色,能够生成高质量、连贯、准确的文本,尤其是在生成长文本时更为优秀。

BART模型的缺点:

  • 训练时间长:BART模型的训练时间较长,需要大量的计算资源和时间。

  • 参数过多:BART模型的参数较多,需要较大的存储空间和计算能力。

    BART模型的参数量可以有不同的大小,取决于所选择的预训练和微调的规模和任务。根据论文中的描述,BART-base包含了约1.4亿个参数,BART-large包含了约3亿个参数。微调过程中,还可以根据具体任务对BART进行更改,例如添加或减少一些层或隐藏单元,从而更改模型的规模和参数数量。因此,BART的参数量是可以灵活调整的。

  • 生成质量不稳定:虽然BART模型在生成文本方面表现良好,但是有时会出现生成的文本不连贯或不准确的情况,尤其是在生成长文本时。

    BART模型接受的最长输入文本长度可以根据具体的实现而有所不同,一般来说,BART在预训练时使用的文本长度可能比在微调时使用的文本长度要长。

    根据BART论文中的描述,预训练时使用的最大文本长度为1024个token,而微调时可以根据具体任务进行调整。在使用BART进行生成任务时,输出文本长度也可以根据需要进行调整。

  • 可解释性差:BART模型是一种黑盒模型,其生成文本的过程难以解释,可能会导致一些不可预测的错误。

BART模型的输入输出是什么

  • BART模型的输入是一个由若干个文本序列组成的批量(batch)数据,每个序列由token序列组成,每个token都是一个词或一个子词。
    • 在输入的时候,BART模型的输入序列通常需要在首尾添加特殊的开始(BOS)和结束(EOS)标记。
    • 此外,BART还可以接受一个额外的mask输入,用于控制模型在预测时的注意力机制。例如,下面是一个输入batch的示例
input_batch = [  ["BOS", "The", "cat", "is", "sleeping", "EOS"],
  ["BOS", "I", "love", "you", "EOS"],
  ["BOS", "He", "likes", "to", "eat", "fish", "EOS"]
]
  • BART模型的输出也是一个由若干个文本序列组成的批量数据,每个序列同样由token序列组成,每个token都是一个词或一个子词。在输出的时候,BART模型的输出序列中通常会包含一些特殊的标记,例如特殊的开始(BOS)和结束(EOS)标记,以及用于指示删除或替换的标记。例如,下面是一个输出batch的示例
output_batch = [  ["BOS", "The", "cat", "is", "sleeping", "EOS"],
  ["BOS", "I", "like", "you", "too", "EOS"],
  ["BOS", "He", "loves", "to", "eat", "fish", "EOS"]
]

  • 在训练BART模型时,通常会使用输入batch作为模型的输入,并使用相应的输出batch作为模型的目标输出,用于计算模型的损失,并进行反向传播进行参数更新。在生成时,可以通过给定一个输入序列,使用BART模型来生成一个输出序列,例如:
input_seq = ["BOS", "I", "like", "apples", "EOS"]
output_seq = bart_model.generate(input_seq)

其中,output_seq就是由BART模型生成的一个文本序列,例如["BOS", "I", "like", "eating", "bananas", "EOS"]

BART模型代码实现

首先加载了预训练的BART模型和分词器,然后通过微调BART模型来适应特定的任务,最后使用微调后的模型生成文本摘要。在微调阶段,需要定义优化器和损失函数,并循环遍历训练数据集来更新模型参数。在生成摘要时,需要将输入文本编码为模型可接受的格式,然后使用模型的generate方法生成摘要,最后使用分词器将摘要解码为可读的文本格式。

import torch
import torch.nn as nn
from transformers import BartTokenizer, BartForConditionalGeneration

# 加载预训练的BART模型和分词器
tokenizer = BartTokenizer.from_pretrained('facebook/bart-large')
model = BartForConditionalGeneration.from_pretrained('facebook/bart-large')

# 微调BART模型
optimizer = torch.optim.Adam(model.parameters(), lr=3e-5)
loss_fn = nn.CrossEntropyLoss()

for epoch in range(3):
    for input_ids, attention_mask, labels in train_dataloader:
        optimizer.zero_grad()
        outputs = model(input_ids=input_ids, attention_mask=attention_mask, labels=labels)
        loss = loss_fn(outputs.logits.view(-1, model.config.vocab_size), labels.view(-1))
        loss.backward()
        optimizer.step()

# 使用微调后的模型生成摘要
input_text = "BART is a powerful model for sequence-to-sequence learning."
input_ids = tokenizer.encode(input_text, return_tensors='pt')
summary_ids = model.generate(input_ids)
summary_text = tokenizer.decode(summary_ids[0], skip_special_tokens=True)

print("Input text:", input_text)
print("Generated summary:", summary_text)

论文的应用是什么?

BART模型的应用范围非常广泛,主要涵盖了自然语言生成、翻译和理解等任务。在自然语言生成方面,BART模型可以用于生成对话、摘要、问题回答等;在机器翻译方面,BART模型可以用于跨语言翻译任务;在自然语言理解方面,BART模型可以用于命名实体识别、语义角色标注、关系抽取等任务。由于BART模型在预训练阶段充分学习了语言的潜在表示,因此在各种自然语言处理任务中都取得了很好的效果。

实现思路是什么?

  • 数据预处理:将原始数据分成句子对(source, target)。
  • 序列标记:对于目标序列,将其随机替换成一些特殊的标记(如MASK,整个词语替换,或随机删除一部分词语),以训练模型对于噪声的鲁棒性。
  • 模型架构:使用Transformer作为编码器和解码器,其中编码器和解码器都是12层深,每层的隐藏层大小为1024,有16个头。与此同时,为了在生成任务中处理长序列,作者使用了一个BART-Base模型和一个BART-Large模型,分别是小型和大型模型。
  • 模型训练:模型的预训练和微调都使用了两个不同的目标函数,一个是自编码器,用于学习输入序列到输出序列的映射;另一个是seq2seq模型,用于学习将源序列翻译成目标序列的映射。对于自编码器目标函数,作者采用了一个新的无监督的目标函数:denoising auto-encoder(DAE),将序列标记的目标序列作为输入序列,原始目标序列作为输出序列,用于学习去噪和压缩,以及解码器中的掩码自注意力机制。对于seq2seq目标函数,使用了带有学习率调整的标准交叉熵损失。
  • 微调:使用对应任务的监督数据来对模型进行微调,如生成式任务中的文本生成,翻译任务中的翻译,阅读理解任务中的答案提取等。
  • 推理:使用预训练模型对输入序列进行编码,并使用解码器生成目标序列。生成的目标序列可以用于文本生成、机器翻译、问答等多种自然语言处理任务。

值得注意的是,作者使用了一种新颖的方法来处理从原始数据中提取的语言生成任务,即将它们分成三个不同的类别(generation, translation和comprehension),分别使用不同的任务和目标函数进行预训练和微调。这种方法有效地扩展了BART的应用范围,同时也可以为未来的自然语言处理任务提供一种可行的框架。

论文的数据集是什么?

BART使用了多种类型的数据集进行预训练和微调。对于预训练,它使用了包括BooksCorpus、Wikipedia、OpenWebText等在内的大规模文本数据集,用于生成无噪声的输入输出对。对于微调,它使用了各种自然语言处理任务相关的数据集,例如GLUE、SQuAD、WMT等。这些数据集都是公开可用的,可以从官方网站或其他相关资源中获取。

论文的评估指标是什么

BART模型论文中给出了多个评估指标,具体如下:

  • Perplexity: 评估语言模型的性能,计算每个预测词的困惑度,越低表示模型越好。
  • BLEU Score: 评估机器翻译任务的性能,用于衡量机器翻译结果与参考翻译之间的相似度。
  • ROUGE: 评估生成式摘要任务的性能,用于衡量生成的摘要与参考摘要之间的相似度。
  • Meteor: 评估机器翻译和生成式摘要任务的性能,考虑了句子级别的语义信息和单词级别的重叠度。
  • BART Score: 一种基于语义相似性的自定义指标,考虑了生成文本和参考文本之间的语义相似度和长度等因素。
  • Human Evaluation: 通过人工评估来衡量生成文本的质量,包括语法正确性、语义连贯性、可读性等方面。

这些评估指标用于评估BART模型在各种自然语言处理任务上的性能。

每个部分的内容

  • 引言:介绍了序列到序列模型在自然语言处理领域的广泛应用,并指出了这些模型面临的训练数据不足和训练时间过长等问题。
  • 相关工作:讨论了先前的序列到序列模型和预训练方法,以及它们的局限性。
  • BART模型:介绍了BART模型的结构,包括编码器和解码器,以及模型的目标函数。该模型使用了一个特殊的无噪声自编码器来进行预训练,并提供了对各种下游任务的微调接口。
  • 实验设计:描述了用于评估BART模型的实验设置和数据集。
  • 实验结果:介绍了BART在各种下游任务中的性能表现,包括语言生成、机器翻译和文本理解。该模型在多个任务上都超过了其他预训练模型和基线模型。
  • 分析:对BART进行了分析,包括对预训练阶段的编码器解码器结构、预训练损失函数的不同组合和微调阶段的技术选择的探讨。
  • 结论:总结了BART的优点,并讨论了未来的研究方向。

总体来说,论文介绍了BART模型的结构和目标函数,该模型使用无噪声自编码器进行预训练,并具有在各种下游任务上进行微调的接口。论文还对BART模型进行了实验和分析,并对其性能和结构进行了评估和解释。该模型在各种下游任务上都表现出色,具有广泛的应用前景。

论文翻译

摘要

我们介绍了 BART,一种用于预训练序列到序列模型的去噪自动编码器。 BART 通过 (1) 使用任意噪声函数破坏文本,以及 (2) 学习模型来重建原始文本进行训练。它使用标准的基于 Tranformer 的神经机器翻译架构,尽管它很简单,但可以看作是对 BERT(由于双向编码器)、GPT(具有从左到右的解码器)和许多其他更新预训练计划。我们评估了许多噪声方法,通过随机打乱原始句子的顺序和使用新颖的填充方案找到最佳性能,其中文本跨度被替换为单个掩码标记。 BART 在针对文本生成进行微调时特别有效,但也适用于理解任务。它将 RoBERTa 的性能与 GLUE 和 SQuAD 上的可比训练资源相匹配,在一系列抽象对话、问答和摘要任务上取得了最新的最新成果,增益高达 6 ROUGE。 BART 还为机器翻译提供了比回译系统高 1.1 BLEU,仅使用目标语言预训练。我们还报告了在 BART 框架内复制其他预训练方案的消融实验,以更好地衡量哪些因素对最终任务的表现影响最大。

1 简介

  • 自监督方法在广泛的 NLP 任务中取得了显着的成功(Mikolov 等人,2013 年;Peters 等人,2018 年;Devlin 等人,2019 年;Joshi 等人,2019 年;Yang 等人。 , 2019; Liu et al., 2019).最成功的方法是屏蔽语言模型的变体,它们是去噪自动编码器,经过训练可以重建文本,其中单词的随机子集被屏蔽掉了。最近的工作表明,通过改进屏蔽标记的分布(Joshi 等人,2019 年)、预测屏蔽标记的顺序(Yang 等人,2019 年)以及替换屏蔽标记的可用上下文(Dong 等人, ., 2019).然而,这些方法通常侧重于特定类型的最终任务(例如跨度预测、生成等),限制了它们的适用性。在本文中,我们介绍了 BART,它预训练了一个结合了双向和自回归变压器的模型。

  • BART 是一种使用序列到序列模型构建的去噪自动编码器,适用于非常广泛的终端任务。预训练有两个阶段

    • (1)文本被任意噪声函数破坏,
    • (2)学习序列到序列模型以重建原始文本。
  • BART 使用标准的基于 Tranformer 的神经机器翻译架构,尽管它很简单,但可以看作是对 BERT(由于双向编码器)、GPT(具有从左到右的解码器)和许多其他最近的预训练方案的概括(见图 1)。这种设置的一个关键优势是噪声灵活性;可以对原始文本应用任意变换,包括改变其长度。我们评估了许多噪声方法,通过随机打乱原始句子的顺序和使用新颖的填充方案找到最佳性能,其中任意长度的文本跨度(包括零长度)被替换为单个掩码标记.该方法通过强制模型对整体句子长度进行更多推理并对输入进行更大范围的转换,从而概括了 BERT 中的原始单词掩码和下一句预测目标。

bart: denoising sequence-to-sequence pre-training for natural language gener,自然语言处理,自然语言处理,论文阅读,深度学习,人工智能

  • BART 在针对文本生成进行微调时特别有效,但也适用于理解任务。它将 RoBERTa(Liu et al., 2019)的性能与 GLUE(Wang et al., 2018)和 SQuAD(Rajpurkar et al., 2016)上的可比培训资源相匹配,并取得了新的最先进的结果一系列抽象对话、问题回答和总结任务。例如,它比之前在 XSum 上的工作提高了 6 ROUGE 的性能(Narayan 等人,2018)。 BART 还开辟了微调的新思路。我们提出了一种新的机器翻译方案,其中 BART 模型堆叠在几个额外的转换器层之上。这些层经过训练,通过 BART 传播,基本上将外语翻译成带噪声的英语,从而将 BART 用作预训练的目标端语言模型。这种方法在 WMT 罗马尼亚语-英语基准测试中将性能提高了 1.1 BLEU。为了更好地理解这些影响,我们还报告了一项消融分析,该分析复制了最近提出的其他培训目标。这项研究使我们能够完全控制许多因素,包括数据和优化参数,这些因素已被证明对整体性能与训练目标的选择同样重要(Liu 等人,2019 年)。我们发现 BART 在我们考虑的所有任务中都表现出最稳定的表现。

2 模型

BART 是一种去噪自动编码器,可将损坏的文档映射到原始文档。它被实现为一个序列到序列模型,在损坏的文本上有一个双向编码器和一个从左到右的自回归解码器。对于预训练,我们优化了原始文档的负对数似然。

2.1 架构

  • BART 使用来自 (Vaswani et al., 2017) 的标准序列到序列 Transformer 架构,除了遵循 GPT,我们将 ReLU 激活函数修改为 GeLU (Hendrycks & Gimpel, 2016) 并初始化来自N (0, 0.02)。对于我们的基础模型,我们在编码器和解码器中使用了 6 层,而对于我们的大型模型,我们在每个层中使用了 12 层。该体系结构与 BERT 中使用的体系结构密切相关,但存在以下差异:(1) 解码器的每一层额外地对编码器的最终隐藏层执行交叉注意(如在变换器序列到序列模型中) ; (2) BERT 在单词预测之前使用了一个额外的前馈网络,而 BART 没有。总的来说,BART 包含的参数比同等大小的 BERT 模型多大约 10%。

2.2 预训练 BART

  • BART 是通过破坏文档然后优化重建损失——解码器输出和原始文档之间的交叉熵来训练的。与针对特定噪声方案量身定制的现有去噪自动编码器不同,BART 允许我们应用任何类型的文档损坏。在极端情况下,关于源的所有信息都丢失了,BART 相当于一个语言模型。
  • 我们尝试了几个先前提出的新颖的转换,但我们相信开发其他新替代品的潜力巨大。下面总结了我们使用的转换,图 2 中显示了示例。
    • Token Masking标记掩码:遵循 BERT(Devlin 等人,2019),随机标记被采样并替换为 [MASK] 元素。
    • Token Deletion令牌删除:随机令牌从输入中删除。与标记屏蔽相反,模型必须决定哪些位置缺少输入。
    • Text Infifilling文本填充:对许多文本跨度进行采样,跨度长度从泊松分布 (λ = 3) 中得出。每个跨度都替换为单个 [MASK] 令牌。 0 长度跨度对应于 [MASK] 标记的插入。文本填充的灵感来自 Span BERT(Joshi 等人,2019),但 SpanBERT 从不同的(钳制几何)分布中采样跨度长度,并用长度完全相同的一系列 [MASK] 标记替换每个跨度。 Text infilling 教导模型预测跨度中丢失了多少标记。
    • Sentence Permutation :根据句点将文档分成句子,这些句子以随机顺序打乱。
    • Document Rotation 随机统一选择一个 token,然后旋转文档,使其从该 token 开始。此任务训练模型以识别文档的开头。

bart: denoising sequence-to-sequence pre-training for natural language gener,自然语言处理,自然语言处理,论文阅读,深度学习,人工智能

3 微调 BART

BART 生成的表示可以多种方式用于下游应用程序。

bart: denoising sequence-to-sequence pre-training for natural language gener,自然语言处理,自然语言处理,论文阅读,深度学习,人工智能

3.1 序列分类任务

  • 对于序列分类任务,将相同的输入输入编码器和解码器,并将最终解码器令牌的最终隐藏状态输入新的多类线性分类器。这种做法与BERT中的CLS token有关;然而,我们将额外的标记添加到末尾,以便解码器中标记的表示可以处理来自完整输入的解码器状态(图 3a)。

3.2 token 分类任务

  • 对于 token 分类任务,例如 SQuAD 的答案端点分类,我们将完整的文档输入编码器和解码器,并使用解码器的顶部隐藏状态作为每个单词的表示。此表示用于对令牌进行分类。

3.3 序列生成任务

  • 由于BART有自回归解码器,可以直接微调用于抽象问答、摘要等序列生成任务。在这两个任务中,信息都是从输入中复制但被操纵的,这与去噪预训练目标密切相关。这里,输入的编码器是输入序列,解码器自回归生成输出。

3.4 机器翻译

  • 我们还探索使用 BART 改进机器翻译解码器以翻译成英语。以前的工作 Edunov 等人。 (2019) 表明可以通过结合预训练的编码器来改进模型,但是在解码器中使用预训练的语言模型的收益是有限的。我们表明,通过添加一组从双文本中学习的新编码器参数,可以将整个 BART 模型(包括编码器和解码器)用作机器翻译的单个预训练解码器(参见图 3b)。
  • 更准确地说,我们用一个新的随机初始化的编码器替换了 BART 的编码器嵌入层。该模型是端到端训练的,它训练新的编码器将外来词映射到 BART 可以降噪为英语的输入。新编码器可以使用与原始 BART 模型不同的词汇表。
  • 我们分两步训练源编码器,在这两种情况下都从 BART 模型的输出中反向传播交叉熵损失。在第一步中,我们冻结了大部分 BART 参数,只更新随机初始化的源编码器、BART 位置嵌入和 BART 编码器第一层的自注意力输入投影矩阵。在第二步中,我们训练所有模型参数进行少量迭代。

4 比较预训练目标

BART 在预训练期间比以前的工作支持更广泛的噪声方案。我们使用基本大小模型(6 个编码器层和 6 个解码器层,隐藏大小为 768)比较一系列选项,对我们将在第 5 节中的完整大规模实验中考虑的代表性任务子集进行评估。

4.1 比较目标

  • 虽然已经提出了许多预训练目标,但很难对这些目标进行公平比较,至少部分原因是训练数据、训练资源、模型之间的架构差异和微调程序。我们重新实施了最近针对判别和生成任务提出的强大的预训练方法。我们的目标是尽可能控制与预训练目标无关的差异。然而,我们确实对学习率和层归一化的使用进行了微小的更改以提高性能(针对每个目标分别进行调整)。作为参考,我们将我们的实现与 BERT 发布的数字进行比较,BERT 也在书籍和维基百科数据的组合上接受了 1M 步的训练。我们比较了以下方法:

    • Language Model:语言模型 与 GPT(Radford 等人,2018)类似,我们训练了一个从左到右的 Transformer 语言模型。这个模型相当于BART解码器,没有cross-attention。
    • Permuted Language Model:基于 XLNet (Yang et al., 2019) 的置换语言模型,我们对 1/6 的标记进行采样,并以随机顺序自回归生成它们。为了与其他模型保持一致,我们没有实现 XLNet 的相对位置嵌入或跨段注意力。
    • Masked Language Model : 遵循 BERT (Devlin et al., 2019),我们将 15% 的 token 替换为 [MASK] 符号,并训练模型独立预测原始 token。
    • Multitask Masked Language Model 多任务掩码语言模型:与 UniLM(Dong 等人,2019)一样,我们训练了一个带有额外自我注意掩码的掩码语言模型。自注意力掩码按以下比例随机选择:1/6 从左到右,1/6 从右到左,1/3 未掩码,1/3 前 50% 的标记未被掩码和其余部分的从左到右的掩码。
    • Masked Seq-to-Seq:受 MASS(Song 等人,2019)的启发,我们屏蔽了包含 50% 标记的跨度,并训练了一个序列到序列模型来预测屏蔽标记。
  • 对于 Permuted LM、Masked LM 和 Multitask Masked LM,我们使用双流注意力 (Yang et al., 2019) 来有效地计算序列输出部分的可能性(在输出上使用对角线自注意力掩码来预测从左到右的单词)。我们尝试

    • (1)将任务视为标准的序列到序列问题,其中编码器的源输入和目标是解码器的输出,或者
    • (2)将源作为前缀添加到目标中解码器,仅在序列的目标部分有损失。我们发现前者对 BART 模型效果更好,而后者对其他模型效果更好。为了最直接地比较我们的模型对微调目标建模的能力(人类文本的对数似然),我们在表 1 中报告了困惑度。

bart: denoising sequence-to-sequence pre-training for natural language gener,自然语言处理,自然语言处理,论文阅读,深度学习,人工智能

表1:预训练目标的比较。所有的模型都具有可比性,并在书籍和维基百科数据的组合上训练了100万步。底部两个区块中的条目使用相同的代码库在相同的数据上进行训练,并使用相同的程序进行微调。第二块中的条目受到以前工作中提出的预训练目标的启发,但已被简化,以专注于评估目标(见4.1节)。不同任务的性能差异很大,但带有文本填充的BART模型表现出最稳定的性能。

4.2 Tasks

  • SQuAD:(Rajpurkar et al., 2016)a 维基百科段落上的提取问答任务。答案是从给定文档上下文中提取的文本范围。与 BERT(Devlin 等人,2019)类似,我们使用连接的问题和上下文作为 BART 编码器的输入,并将它们额外传递给解码器。该模型包括用于预测每个标记的开始和结束索引的分类器。
  • MNLI :(Williams et al., 2017),一项双文本分类任务,用于预测一个句子是否包含另一个句子。微调模型将两个句子连接起来并附加一个 EOS 令牌,并将它们传递给 BART 编码器和解码器。与 BERT 相比,EOS 令牌的表示用于对句子关系进行分类。
  • ELI5 : (Fan et al., 2019),一个长格式的抽象问答数据集。模型根据问题和支持文档的串联生成答案。
  • XSum : (Narayan et al., 2018),一个具有高度抽象摘要的新闻摘要数据集。
  • ConvAI2 :(Dinan 等人,2019 年),一项对话响应生成任务,以上下文和角色为条件。
  • CNN/DM: (Hermann et al., 2015),新闻摘要数据集。这里的摘要通常与源语句密切相关。

4.3 结果

结果如表 1 所示。几个趋势很明显例如,

  • Performance of pre-training methods varies signifificantly across tasks:一个简单的语言模型实现了最好的 ELI5 性能,但是最差的 SQUAD 结果。
  • Token masking is crucial令牌屏蔽是至关重要的:基于旋转文档或排列句子的预训练目标在孤立情况下表现不佳。成功的方法要么使用令牌删除或屏蔽,要么使用自我注意屏蔽。删除似乎优于生成任务的掩码。
  • Left-to-right pre-training improves generation: Masked Language Model 和 Permuted Language Model 在生成方面的表现不如其他模型,并且是我们认为在预训练期间不包括 left-to-right 自回归语言建模的唯一模型-训练。双向编码器对 SQuAD 至关重要 正如之前的工作(Devlin 等人,2019)所指出的,
  • Bidirectional encoders are crucial for SQuAD仅从左到右的解码器在 SQuAD: 上表现不佳,因为未来的上下文在分类决策中至关重要。然而,BART 仅用一半的双向层数就实现了类似的性能。
  • The pre-training objective is not the only important factor
  • 预训练目标并不是我们的置换语言模型表现不如 XLNet 的唯一重要因素(Yang 等人,2019)。部分差异可能是由于不包括其他架构改进,例如相对位置嵌入或段级递归。
  • Pure language models perform best on ELI5:纯语言模型在 ELI5 上表现最好 ELI5 数据集是一个异常值,比其他任务具有更高的困惑度,并且是其他模型优于 BART 的唯一生成任务。纯语言模型表现最好,这表明当输出仅松散地受输入约束时,BART 的效率较低。
  • BART achieves the most consistently strong performance.
    • BART 实现了最稳定的强劲性能。除了 ELI5,使用文本填充的 BART 模型在所有任务上都表现良好。

5 大规模预训练实验

最近的工作表明,当预训练扩展到大批量(Yang et al., 2019; Liu et al., 2019)和语料库时,下游性能可以显着提高。为了测试 BART 在这种情况下的表现,并为下游任务创建一个有用的模型,我们使用与 RoBERTa 模型相同的规模来训练 BART。

5.1 实验设置

我们预训练一个大型模型,每个编码器和解码器都有 12 层,隐藏大小为 1024。按照 RoBERTa (Liu et al., 2019),我们使用 8000 的批量大小,并训练500000 步的模型。文档使用与 GPT-2 相同的字节对编码进行标记化(Radford 等人,2019)。基于第 §4 节的结果,我们结合使用文本填充和句子排列。我们屏蔽每个文档中 30% 的标记,并排列所有句子。尽管句子置换仅在 CNN/DM 摘要数据集上显示出显着的附加增益,但我们假设更大的预训练模型可能能够更好地从该任务中学习。为了帮助模型更好地拟合数据,我们在最后 10% 的训练步骤中禁用了 dropout。我们使用与 Liu 等人相同的预训练数据。 (2019),包括 160Gb 的新闻、书籍、故事和网络文本。

5.2 判别任务

  • 表 2 比较了 BART 与最近几种方法在经过充分研究的 SQuAD 和 GLUE 任务上的性能(Warstadt 等人,2018 年;Socher 等人,2013 年;Dolan 和 Brockett,2005 年;Agirre 等人, 2007 年;Williams 等人,2018 年;Dagan 等人,2006 年;Levesque 等人,2011 年)。
  • 最直接可比较的基线是 RoBERTa,它使用相同的资源进行预训练,但目标不同。总的来说,BART 表现相似,在大多数任务上模型之间只有很小的差异。这表明 BART 在生成任务上的改进不会以牺牲分类性能为代价。
    bart: denoising sequence-to-sequence pre-training for natural language gener,自然语言处理,自然语言处理,论文阅读,深度学习,人工智能
    bart: denoising sequence-to-sequence pre-training for natural language gener,自然语言处理,自然语言处理,论文阅读,深度学习,人工智能
    bart: denoising sequence-to-sequence pre-training for natural language gener,自然语言处理,自然语言处理,论文阅读,深度学习,人工智能

5.3 生成任务

我们还试验了几个文本生成任务。 BART 被微调为从输入到输出文本的标准序列到序列模型。在微调期间,我们使用标签平滑交叉熵损失(Pereyra 等人,2017),平滑参数设置为 0.1。在生成过程中,我们将 beam 大小设置为 5,在 beam search 中删除重复的 trigram,并在验证集上使用 min-len、max-len、长度惩罚调整模型(Fan 等人,2017)。

  • Summarization 摘要:为了与摘要中的最新技术进行比较,我们展示了两个摘要数据集 CNN/DailyMail 和 XSum 的结果,它们具有不同的属性。
    • CNN/DailyMail 中的摘要往往类似于源语句。提取模型在这里表现不错,甚至前三个源句的基线也具有很强的竞争力。尽管如此,BART 优于所有现有工作。
    • 相比之下,XSum 是高度抽象的,提取模型表现不佳。 BART 在所有 ROUGE 指标上都比之前利用 BERT 的最佳工作高出大约 6.0 分——这代表了在这个问题上性能的显着进步。定性地,样品质量很高(见§6)。
  • Dialogue :对话我们评估 CONVAI2 上的对话响应生成(Dinan 等人,2019 年),其中代理必须根据先前的上下文和文本指定的角色生成响应。 BART 在两个自动化指标数据集上的表现优于之前的工作,以测试模型生成长的自由格式答案的能力。
  • Abstractive QA:我们发现 BART 比之前最好的工作高出 1.2 ROUGE-L,但数据集仍然具有挑战性,因为问题仅给出了很弱的答案。

5.4 翻译

  • 我们还评估了 WMT16 罗马尼亚英语的性能,并增加了 Sennrich 等人的反向翻译数据。 (2016)。我们使用 6 层变换器源编码器将罗马尼亚语映射为 BART 能够降噪为英语的表示,遵循 §3.4 中介绍的方法。实验结果如表 6 所示。我们将我们的结果与具有 Transformer 大设置(基线行)的基线 Transformer 架构(Vaswani 等人,2017)进行了比较。我们在固定的 BART 和调整的 BART 行中展示了我们模型的两个步骤的性能。对于每一行,我们在原始的 WMT16 罗马尼亚语-英语上进行实验,并增加了反向翻译数据。我们使用 5 的波束宽度和 α = 1 的长度惩罚。初步结果表明,我们的方法在没有回译数据的情况下效果较差,并且容易过度拟合——未来的工作应该探索额外的正则化技术。

bart: denoising sequence-to-sequence pre-training for natural language gener,自然语言处理,自然语言处理,论文阅读,深度学习,人工智能

bart: denoising sequence-to-sequence pre-training for natural language gener,自然语言处理,自然语言处理,论文阅读,深度学习,人工智能

表6:基线和BART在WMT’16 RO-EN上的性能(BLEU),并增加了回译数据。BART通过使用单语英语的预训练,比强大的回译(BT)基线有所提高。

6 定性分析

  • BART 显示了摘要指标的巨大改进,比之前的最先进技术提高了多达 6 个百分点。为了了解 BART 在自动化指标之外的表现,我们定性地分析了它的几代人。
  • 表 7 显示了 BART 生成的示例摘要。示例取自预训练语料库创建后发表的维基新闻文章,以消除描述的事件出现在模型训练数据中的可能性。继 Narayan 等人之后。 (2018),我们在总结文章之前删除了文章的第一句,因此没有容易提取的文档摘要。
  • 毫不奇怪,模型输出是流利且合乎语法的英语。然而,模型输出也是高度抽象的,几乎没有从输入中复制的短语。输出通常也是事实准确的,并将输入文档中的支持证据与背景知识相结合(例如,正确填写姓名,或推断 PG&E 在加利福尼亚运营)。在第一个例子中,推断鱼类正在保护珊瑚礁免受全球变暖的影响需要从文本中进行重要的推断。然而,该作品发表在《科学》杂志上的说法并没有得到来源的支持。
  • 这些样本表明 BART 预训练已经学会了自然语言理解和生成的强大组合。
    bart: denoising sequence-to-sequence pre-training for natural language gener,自然语言处理,自然语言处理,论文阅读,深度学习,人工智能

7 相关工作

  • 早期的预训练方法基于语言模型。 GPT (Radford et al., 2018) 只对离开病房的上下文建模,这对某些任务来说是有问题的。 ELMo (Peters et al., 2018) 连接了仅左和仅右表示,但不预先训练这些特征之间的交互。雷德福等人。 (2019) 证明了非常大的语言模型可以充当无监督的多任务模型。

  • BERT(Devlin 等人,2019 年)引入了掩码语言建模,它允许预训练学习左右上下文单词之间的交互。最近的工作表明,通过更长时间的训练(Liu 等人,2019 年)、跨层绑定参数(Lan 等人,2019 年)以及屏蔽跨度而不是单词(Joshi 等人, ., 2019).预测不是自动回归的,这降低了 BERT 对生成任务的有效性。

  • UniLM(Dong 等人,2019 年)使用一组掩码对 BERT 进行微调,其中一些掩码只允许向左的上下文。与 BART 一样,这允许 UniLM 用于生成和判别任务。不同之处在于 UniLM 预测是条件独立的,而 BART 是自回归的。 BART 减少了预训练和生成任务之间的不匹配,因为解码器总是在未损坏的上下文中进行训练。 MASS(Song 等人,2019 年)可能是与 BART 最相似的模型。将标记的连续跨度被屏蔽的输入序列映射到由缺失标记组成的序列。 MASS 对于判别任务不太有效,因为不相交的标记集被输入编码器和解码器。

  • XL-Net(Yang 等人,2019 年)通过按排列顺序自动回归预测掩码标记来扩展 BERT。这个目标允许预测以左右上下文为条件。相比之下,BART 解码器在预训练期间从左到右工作,匹配生成期间的设置。

  • 几篇论文探索了使用预训练的表示来改进机器翻译。最大的改进来自对源语言和目标语言的预训练(Song 等人,2019 年;Lample & Conneau,2019 年),但这需要对所有感兴趣的语言进行预训练。其他工作表明,可以使用预训练表示来改进编码器(Edunov 等人,2019 年),但解码器的收益更为有限。我们展示了如何使用 BART 来改进机器翻译解码器。

8 结论

我们介绍了 BART,这是一种学习将损坏的文档映射到原始文档的预训练方法。 BART 在判别任务上取得了与 RoBERTa 相似的性能,同时在许多文本生成任务上取得了新的最先进的结果。未来的工作应该探索新的方法来破坏文件以进行预训练,或许可以针对特定的最终任务对其进行定制。文章来源地址https://www.toymoban.com/news/detail-769671.html

到了这里,关于论文阅读【自然语言处理-预训练模型2】BART:Denoising Sequence-to-Sequence Pre-training for Natural Language Generation的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【自然语言处理】:实验4答案,预训练语言模型实现与应用

    代码和报告均为本人自己实现(实验满分),只展示主要任务实验结果,如果需要详细的实验报告或者代码可以私聊博主,接实验技术指导1对1 运行模型,测试模型在有 100% / 50% / 10% training data(通过随机 sample 原 training set 一部分的数据,10%代表低资源的设定)的情况下模型

    2024年02月22日
    浏览(69)
  • 自然语言处理从入门到应用——预训练模型总览:预训练模型的拓展

    分类目录:《自然语言处理从入门到应用》总目录 相关文章: · 预训练模型总览:从宏观视角了解预训练模型 · 预训练模型总览:词嵌入的两大范式 · 预训练模型总览:两大任务类型 · 预训练模型总览:预训练模型的拓展 · 预训练模型总览:迁移学习与微调 · 预训练模型

    2024年02月11日
    浏览(48)
  • 自然语言处理实战9-大语言模型的训练与文本生成过程

    大家好,我是微学AI,今天给大家介绍一下自然语言处理实战项目9-大语言模型的训练与文本生成过程,详细步骤介绍。大语言模型的训练是通过深度学习技术实现的。首先,需要准备一个庞大的文本数据集作为训练样本,这些文本可以是网页、书籍、新闻等大量的非结构化文

    2024年02月07日
    浏览(54)
  • 自然语言处理从入门到应用——动态词向量预训练:双向语言模型

    分类目录:《自然语言处理从入门到应用》总目录 对于给定的一段输入文本 w 1 w 2 ⋯ w n w_1w_2cdots w_n w 1 ​ w 2 ​ ⋯ w n ​ ,双向语言模型从前向(从左到右)和后向(从右到左)两个方向同时建立语言模型。这样做的好处在于,对于文本中任一时刻的词 w t w_t w t ​ ,可以

    2024年02月10日
    浏览(48)
  • 2023年!自然语言处理(NLP)10 大预训练模型

    来源: AINLPer 公众号 (每日干货分享!!) 编辑: ShuYini 校稿: ShuYini 时间: 2022-10-23 语言模型是构建NLP应用程序的关键。现在人们普遍相信基于预训练模型来构建NLP语言模型是切实有效的方法。随着疫情阴霾的散去,相信NLP技术会继续渗透到众多行业中。在此过程中,肯定有很

    2024年02月16日
    浏览(55)
  • 自然语言处理从入门到应用——预训练模型总览:两大任务类型

    分类目录:《自然语言处理从入门到应用》总目录 相关文章: · 预训练模型总览:从宏观视角了解预训练模型 · 预训练模型总览:词嵌入的两大范式 · 预训练模型总览:两大任务类型 · 预训练模型总览:预训练模型的拓展 · 预训练模型总览:迁移学习与微调 · 预训练模型

    2024年02月12日
    浏览(52)
  • 自然语言处理 Paddle NLP - 基于预训练模型完成实体关系抽取

    基础 自然语言处理(NLP) 自然语言处理PaddleNLP-词向量应用展示 自然语言处理(NLP)-前预训练时代的自监督学习 自然语言处理PaddleNLP-预训练语言模型及应用 自然语言处理PaddleNLP-文本语义相似度计算(ERNIE-Gram) 自然语言处理PaddleNLP-词法分析技术及其应用 自然语言处理Pa

    2024年02月10日
    浏览(47)
  • 【自然语言处理】【大模型】CodeGeeX:用于代码生成的多语言预训练模型

    CodeGeeX:用于代码生成的多语言预训练模型 《CodeGeeX: A Pre-Trained Model for Code Generation with Multilingual Evaluations on HumanEval-X》 论文地址:https://arxiv.org/pdf/2303.17568.pdf 相关博客 【自然语言处理】【大模型】RWKV:基于RNN的LLM 【自然语言处理】【大模型】CodeGen:一个用于多轮程序合成

    2024年02月06日
    浏览(43)
  • 7个顶级开源数据集来训练自然语言处理(NLP)和文本模型

    推荐:使用 NSDT场景编辑器快速助你搭建可二次编辑的3D应用场景 NLP现在是一个令人兴奋的领域,特别是在像AutoNLP这样的用例中,但很难掌握。开始使用NLP的主要问题是缺乏适当的指导和该领域的过度广度。很容易迷失在各种论文和代码中,试图吸收所有内容。 要意识到的是

    2024年02月13日
    浏览(56)
  • 自然语言处理实战项目16- 基于CPU的大语言模型的实战训练全流程指导,模型调优与评估

    大家好,我是微学AI,今天给大家介绍一下自然语言处理实战项目16- 基于CPU的生成式大语言模型的实战训练全流程详细讲解,模型调优与评估。该流程涵盖了数据准备、数据预处理、词表构建、模型选择与配置、模型训练、模型调优和模型评估等步骤。通过不断迭代和优化,

    2024年02月10日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包