【论文精读】生成式预训练之BART

【概要】 BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehensionhttps://arxiv.org/pdf/1910.13461 BART (Bidirectional and Auto-Regressive Transformers) 是Facebook Al于2019年提出的一种创新的预训练模型架构。它巧妙地结合了BERT的双向编码能力和GPT的自回归生成能力,通过降噪自编码器的方式训练序列到序列模型。这篇论文发表在ACL2020,是预训练语言模型领域的重要里程碑,首次证明了编码器-解码器架构可以同时出色地完成理解和生成任务。

核心思想非常直观:首先用任意噪声函数"破坏"原始文本,然后训练模型重建原始文本。这种设计让BART既能像BERT一样深度理解上下文,又能像GPT一样流畅生成文本,实现了理解与生成的统一。与之前专注于特定任务类型的预训练方法不同,BART的架构灵活性使其适用于广泛的下游任务,从文本分类到机器翻译,从问答系统到摘要生成。

实验结果表明,BART在生成任务上表现卓越,在XSum摘要任务上比前人工作提升3.5个ROUGE分;同时在理解任务上也不逊色,与RoBERTa在GLUE和SQuAD上表现相当。更难得的是,BART通过添加轻量级编码器就能应用于机器翻译,在WMT16罗马尼亚语-英语任

务上比强基线提升1.1个BLEU分。这种通用性使BART成为当时最通用的预训练模型之一。

1. GPT、BERT 和 BART

本节主要介绍 GPT、BERT 和 BART 这三种模型的关联和特点。

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

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

BART吸收了 BERT 的 bidirectional encoder 和 GPT 的 left-to-right decoder 各自的特点,建立在标准的 seq2seq Transformer model 的基础之上,这使得它比 BERT 更适合文本生成的场景;相比GPT,也多了双向上下文语境信息。因此,它对于生成任务和一些文本理解类任务都有较好的效果。

再概括一点:

BART模型是使用标准Transformer模型整体结构的预训练语言模型。

BERT模型是仅使用Transformer-Encoder结构的预训练语言模型。

GPT模型是仅使用Transformer-Decoder结构的预训练语言模型。

2、BART 的训练流程

我们以上图为例,介绍 BART 的训练流程。

BART 在训练时,首先对于 encoder 端,将原始文本(如 A B C D E)做随机破坏,得到一个加噪的输入(如 A _ C _ E)。由于双向自注意力机制的作用,每个 token 都能看到整个序列的所有 token,哪怕是 mask 掉的位置,也能通过上下文推断其含义。从而将这段有噪声的输入编码成一个包含完整的上下文信息的向量表示。

接着看 decoder 端,输入是一段经过 right-shifted 的原始序列,在开头加上了特殊的起始符 <s> (如 <s> A B C D)。这时由于单向自注意力机制的作用,每个 token 只能看到它左边的 token ,保证模型不能知晓未来的 token。同时 decoder 还会接受 encoder 传来的向量,把理解到的上下文信息融入生成的过程。最终 decoder 输出一段未加噪的原始序列。

整体而言,BART 的目标就是从加了噪声的输入,重建出原始文本
BART的训练流程示例

3、BART 在下游任务上的应用

3.1 Sequence Classification Task

将该序列同时输入给 encoder 端和 decoder 端,然后取 decoder 最后一个 token 对应的 final hidden state 作为 label,输入给一个线性多分类器。注意在序列的最后要加一个 token,保证seq2seq 模型输出的 label 包含序列中每一个 token 的信息(因为 decoder 的输入是 right-shifted 的,不这样做的话 label 将不包含最后一个 token 的信息)

3.2 Token Classification Task

这一类问题意思是,将序列的所有token都看作独立的选项,序列长度为M,那么选项的个数就是M,在序列的所有token中选择k个。将该序列同时输入给encoder端和decoder端,使用decoder的 top hidden states作为每个token的向量表达,该表达被作为分类问题的输入,输入到分类系统中去。

简而言之,Token classification 是对序列中每一个 token 独立分类;BART 做该任务时,利用 decoder 最后一层的输出作为每个 token 的特征表示,再通过线性层预测每个 token 的标签。

3.3 Sequence Generation Task

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

3.4 Machine Translation

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

这里可以分为两步:第一步只更新 randomly initialized encoder + BART positional embedding + BART 的 encoder 第一层的 self-attention 输入映射矩阵。第二步更新全部参数,但是只训练很少的几轮。

相关推荐
硅谷秋水13 分钟前
面向长上下文自动驾驶的规划对齐Token压缩
人工智能·深度学习·机器学习·计算机视觉·自动驾驶
郭泽斌之心15 分钟前
MQL5 EA 怎么和外部程序通信?文件三件套协议:参数热更新不重启、状态心跳、远程触发
人工智能·经验分享·深度学习·ea·fay数字人·easydeal
mit6.82425 分钟前
“泄露了windows12“
人工智能
syc789012338 分钟前
中文语境下AI编码工具实战对比:从迭代体验看日常开发选择
linux·人工智能·ubuntu
dualven_in_csdn1 小时前
用户点击“一键起飞“
人工智能
米核AI易山1 小时前
扣子工作流变量体系深度解析:从踩坑到精通
人工智能·coze·扣子工作流·米核ai易山
nap-joker1 小时前
用于转录组信息精确肿瘤学和药物机制分析的多模态可解释深度学习
人工智能·深度学习·药物敏感性·多层级生物网络·细胞异质性·可解释性多模态
一只叫煤球的猫1 小时前
团队使用 Claude Code / Codex 的规范治理——献给所有全员 AI 开发的团队
人工智能·agent·ai编程
虾壳云官方1 小时前
OpenClaw 2.7.9 Windows 一键部署教程:零基础也能搭建 AI 自动化助手
运维·人工智能·windows·自动化·openclaw·openclaw一键部署