本文为转载,原文链接 https://wmathor.com/index.php/archives/1505/
一切都得从 Transformer 说起。Transformer 左半边为 Encoder,右半边为 Decoder。我们将 Encoder 输入的句子称为 source,Decoder 输入的句子称为 target
Encoder 负责将 source 进行 self-attention 并获得句子中每个词的 representation,最经典的 Encoder 架构就是 BERT,通过 Masked Language Model 来学习词之间的关系,另外还有 XLNet, RoBERTa, ALBERT, DistilBERT 等等。但是单独 Encoder 结构不适用于生成任务
Decoder 如下图所示,输入与输出之间差一个位置,主要是模拟在 Inference 时,不能让模型看到未来的词,这种方式称为 AutoRegressive,常见的基于 Decoder 的模型通常是用来做序列生成的,例如 GPT, CTRL 等等。但是单独 Decoder 结构仅基于左侧上下文预测单词,无法学习双向交互
而两者合在一起后,就能当成一种 Seq2Seq 模型,进行翻译任务。下图是 BART 的主要结构,看上去似乎和 Transformer 没什么不同,主要区别在于 source 和 target
训练阶段,Encoder 端使用双向模型编码被破坏的文本,然后 Decoder 采用自回归的方式计算出原始输入;测试阶段或者是微调阶段,Encoder 和 Decoder 的输入都是未被破坏的文本
BART vs Transformer
BART 使用标准的 Transformer 模型,不过做了一些改变:
- 同 GPT 一样,将 ReLU 激活函数改为 GeLU,并且参数初始化服从正态分布
- BART base 模型的 Encoder 和 Decoder 各有 6 层,large 模型增加到了 12 层
- BART 解码器的各层对编码器最终隐藏层额外执行 cross-attention
- BERT 在词预测之前使用了额外的 Feed Forward Layer,而 BART 没有
Pre-training BART
BART 作者尝试了不同的方式来破坏输入:
- Token Masking:Following BERT (Devlin et al., 2019), random tokens are sampled and replaced with [MASK] elements.
- Sentence Permutation:A document is divided into sentences based on full stops, and these sentences are shuffled in a random order.
- Document Rotation:A token is chosen uniformly at random, and the document is rotated so that it begins with that token. This task trains the model to identify the start of the document.
- Token Deletion:Random tokens are deleted from the input. In contrast to token masking, the model must decide which positions are missing inputs.
- Text Infilling:A number of text spans are sampled, with span lengths drawn from a Poisson distribution (). Each span is replaced with a single [MASK] token. 0-length spans correspond to the insertion of [MASK] tokens. Text infilling teaches the model to predict how many tokens are missing from a span.
Fine-tuning BART
Sequence Classification Tasks
序列分类任务中,编码器和解码器的输入相同,解码器 token 的最终隐藏状态被输入到多类别线性分类器中。BART 在解码器最后额外添加了一个 token,如下图所示,该 token 位置的输出可以被认为是该句子的 representation
Sequence Generation Tasks
由于 BART 具备自回归解码器,因此它可以针对序列生成任务进行直接微调,如问答或者文本摘要
Machine Translation
作者采用新的随机初始化 Encoder 替换 BART 编码器的 Embedding 层。该模型以端到端的方式进行训练,即训练一个新的编码器将外来词映射到输入。新的编码器可以使用不同于原始 BART 模型的词汇。其中随机初始化 Encoder 的训练分两步,均需要将来自 BART 模型输出的交叉熵损失进行反向传播。第一步,作者冻结 BART 的大部分参数,仅更新随机初始化的 Encoder、BART 位置嵌入和 BART 编码器第一层的自注意力输入投影矩阵。第二步,作者将所有模型参数进行少量迭代训练
Results
从上表可以看出,貌似带上 Document Rotation 或 Sentence Shuffling 效果都不是太好,可以这么理解,假如模型在训练的时候看到的句子顺序都是乱的,它可能就认为这个世界的句子顺序都是乱的,当你做测试的时候,输入的句子是正序的,可能模型就不知所措了。实际上 Text Infilling 可以看作是 Token Masking+Token Deletion,所以 Text Infilling 效果这么好也可以理解
网友评论