BART
BART(Bidirectional and Auto-regressive Transformer)
中文BART模型:huggingface.co/uer/bart-ba…
BART的核心思想
结合了BERT和GPT两种模型的思路,不仅具有双向编码的优势,也具有单向自回归编码的优势。
它能够适用于非常广泛的下游任务,不限于预测和生成。
BART的预训练
第一步:通过任意噪声函数(能够制造破坏文档结构的任何方法)来破坏文章结构;
例如:
- 随机打乱原文句子的顺序;
- 随机将文中的连续小片段(几个字或词)用一个【mask】代替;(Text infilling是BART的核心 )
- 连续小片段的长度(包括0)通过泊松分布采样,不是完全随机;
- 此举强制模型对整个句子长度进行更多推理,并对输入进行更大范围的转换。
forcing the model to reason more about overall sentence length and make longer range transformations to the input.
第二步:训练一个seq2seq模型将结构已经破坏了的文章进行重构,使文章变回原来的样子;
BART模型
BART实现了一个seq2seq模型,输入是通过原始文档派生出来的被损坏的文档,经过一个双向编码器和一个自回归解码器后生成的输出。对于预训练,就是优化输出与源文档的负逻辑似然函数。
架构
BART使用了标准的seq2seq transformer架构,并:
- 激活函数:用GeLU替换ReLU;
- 使用N(0,0.02)初始化参数;
- Model_{base}使用编解码器各6层,Model_{large}使用编解码器各12层;
- 每层解码器和编码器最后一个隐藏层使用交叉注意力机制。
- BART在单词预测前没有使用额外的FFN;
- BART参数比同等大小的BERT多了大约10%;
预训练
破坏文档,优化重建损失——解码器输出和原始文档之间的交叉熵。
文档加噪声的几种方式
- Token Masking:同BERT
- Token Deletion:训练模型注意到哪些位置有缺失;
- Text Infilling:训练模型注意到那些位置缺失了多少token(序列长度信息在生成式任务中一般是不会提供给模型的);
- Sentence Permutation:训练模型注意到句子顺序;
- Document Rotation:随机选择文档中一个词作为开头,将前面的词挪到后面,训练模型识别文档的头部;
Fine-tuning BART
用于下游任务:
Sequence Classification Tasks(序列分类任务)
相同的序列被同时作为输入喂给编码器和解码器,把最后一层解码器的最后一个隐层状态(类似BERT的CLS)送到一个多分类器去(图3.a)。
Token Classification Tasks (token级别分类任务)
Token级别的分类任务有实体识别、阅读理解、问答等,均为抽取式。输入同上,但输出使用的是最后一层decoder的每一个隐层状态来分类token;
Sequence Generation Tasks(序列生成任务)
BART天然支持序列生成任务,如抽象问答任务和摘要任务(生成式)。
Machine Translate(机器翻译)
将BART的encoder嵌入层替换为一个新的随机初始化encoder,该模型是端到端训练的,它训练新的encoder将外文单词映射到BART的输入中,此时BART是原来encoder和decoder构成的一个整体(图3.b)
结论
BART在判别性任务上和RoBERTa实现了相似的性能。在文本生成任务上有新的突破。
Document Rotation 和Sentence Permutation的方式在单独使用时表现不佳。二使用Token Deletion 和Token Masking的效果比较好,其中,在生成任务上,删除的方式大体上要优于掩码的方式。
双向编码的机制有利于SQuAD这样的抽取式任务。