BART:用于自然语言生成、翻译和理解的去噪序列到序列预训练模型
📖阅读时长:19分钟
🕙发布时间:2025-02-13
近日热文:全网最全的神经网络数学原理(代码和公式)直观解释
欢迎关注知乎和公众号的专栏内容
LLM架构专栏
知乎LLM专栏
知乎【柏企】
公众号【柏企科技说】【柏企阅文】
BART是一种基于序列到序列模型构建的去噪自动编码器,适用于广泛的终端任务。预训练分为两个阶段:第一,使用任意噪声函数对文本进行破坏;第二,通过学习序列到序列模型来重构原始文本。这种方法对BERT中最初的单词掩码和下一句预测目标进行了扩展,它促使模型对整个句子长度进行更多推理,并对输入进行更广泛的转换。
架构
BART采用标准的序列到序列Transformer架构,但与GPT类似,将ReLU激活函数修改为GeLU,并将参数初始化为N(0, 0.02)。
基础模型在编码器和解码器中各使用6层,而大型模型在编码器和解码器中各使用12层。总体而言,BART的参数比同等规模的BERT模型大约多10%。
预训练
BART通过破坏文档,然后优化重构损失(即解码器输出与原始文档之间的交叉熵)进行训练。具体使用的转换方法总结如下:
- 词元掩码(Token Masking):和BERT一样,对随机的词元进行采样,并将其替换为[MASK]元素。
- 词元删除(Token Deletion):从输入中随机删除词元。与词元掩码不同,模型必须判断哪些位置缺少输入。
- 文本填充(Text Infilling):对多个文本跨度进行采样,跨度长度服从泊松分布(λ = 3)。每个跨度会被单个[MASK]词元替换。
- 句子置换(Sentence Permutation):根据句号将文档划分为多个句子,然后随机打乱这些句子的顺序。
- 文档旋转(Document Rotation):随机均匀选择一个词元,将文档旋转,使其从该词元开始。此任务训练模型识别文档的开头。
微调
- 序列分类任务(Sequence Classification Tasks):在序列分类任务中,相同的输入会被送入编码器和解码器,解码器最后一个词元的最终隐藏状态会被输入到新的多分类线性分类器中。这种方法与BERT中的CLS词元相关;不过,我们在末尾添加了额外的词元,以便解码器中该词元的表示可以关注来自完整输入的解码器状态。
- 词元分类任务(Token Classification Tasks):对于词元分类任务,比如SQuAD中的答案端点分类,我们将完整的文档输入到编码器和解码器中,并使用解码器的顶层隐藏状态作为每个单词的表示。这个表示会用于对词元进行分类。
- 序列生成任务(Sequence Generation Tasks):由于BART有一个自回归解码器,它可以直接针对序列生成任务进行微调,比如抽象式问答和文本摘要。在这两种任务中,信息从输入中复制,但会经过处理,这与去噪预训练目标密切相关。这里,编码器的输入是输入序列,解码器则自回归地生成输出。
- 机器翻译(Machine Translation):BART的编码器嵌入层会被新的随机初始化编码器取代。模型进行端到端训练,这使得新的编码器将外语单词映射为BART可以去噪为英语的输入。新的编码器可以使用与原始BART模型不同的词汇表。
源编码器分两步进行训练,在这两种情况下,都从BART模型的输出中反向传播交叉熵损失。第一步,冻结BART的大部分参数,只更新随机初始化的源编码器、BART的位置嵌入以及BART编码器第一层的自注意力输入投影矩阵。第二步,对所有模型参数进行少量迭代训练。
任务
- SQuAD:一个在维基百科段落上进行的抽取式问答任务。答案是从给定文档上下文中提取的文本跨度。
- MNLI:一个双文本分类任务,用于预测一个句子是否蕴含另一个句子。微调后的模型会将两个句子连接起来,并附加一个EOS词元,然后将其同时送入BART编码器和解码器。与BERT不同,这里使用EOS词元的表示来对句子关系进行分类。
- ELI5:一个长格式的抽象式问答数据集。模型根据问题和相关支持文档的连接内容生成答案。
- XSum:一个新闻摘要数据集,具有高度抽象的摘要。
- ConvAI2:一个对话回复生成任务,根据上下文和人物角色生成回复。
- CNN/DM:一个新闻摘要数据集。这里的摘要通常与源句子密切相关。
论文
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。