LLM:BERT or BART 之BART
文章目录
- 前言
- 一、Model Architechture
- 二、PreTrained
- 三、Fine-tuning BART
- 1、Sequence Classification Tasks
- 2、Token Classification Tasks
- 3、Sequence Generation Tasks
- 4、Machine Translation
- 四、Result
- 总结
前言
这次轮到BART了(在了解这两个之前还真分不太清)
BERT解读可以参考我之前的文章 LLM:BERT or BART 之BERT
BART(Bidirectional and Auto-Regressive Transformers)是一种用于文本生成、序列到序列转换和文本填充的深度学习模型,由 Facebook AI 在 2019 年提出。它结合了 双向编码(Bidirectional Encoding) 和 自回归解码(Auto-Regressive Decoding) 的特点,使其在文本恢复、摘要生成、翻译和对话系统等任务上表现出色。
BART相比于BERT有两大区别:
1)BART沿用了标准的Encoder-Decoder的Transformer结构(激活函数改为GeLU),区别于encoder-only的BERT
2)BERT采用了MLM和NSP两阶段预训练,BART的预训练在BERT的MLM进行了改进,不过核心idea依然是对破坏的句子进行重构
paper:https://arxiv.org/pdf/1910.13461
一、Model Architechture
这张图基本说明BART的功能以及和BERT的区别——
BERT输入一个mask序列,输出被掩码的位置的单词
GPT输入一个序列,输出这个序列的下一个单词
BART则是输入一个mask序列,输出则是填补后的完整序列(既能补词又能预测下一个词)
二、PreTrained
BART相比BERT采用了更丰富的噪声预训练方法,如下:
Token Masking:与BERT一样,将个别词随机替换成[MASK],训练模型推断单个词的能力
Token Deletion:随机删除个别词,训练模型推断单个词及位置的能力。
Text Infilling:将一段连续的词随机替换成[MASK],甚至可以凭空添加[MASK],训练模型根据语义判断[MASK]包含的词及其长度。
Sentence Permutation:随机打乱文本序列的顺序,加强模型对词的关联性的提取能力。
Document Rotation:将文本序列连成圈,随机选择序列的起始词(保留序列的有序性,随机选择文本起始点),以此训练模型识别句首的能力。
文档转换(Document Rotation)或句序打乱(Sentence Permutation)的方式在单独使用时表现不佳。而使用删除(Token Deletion)或掩码(Token MASK)效果比较好。其中,在生成任务上,删除的方式大体上要优于掩码的方式。
在有Text-filling方式参与的情况下,BART的表现都很好。侧面反映了Text-filling的有效性。
三、Fine-tuning BART
1、Sequence Classification Tasks
序列分类任务和BERT中的分类任务很接近,不过方式有些不同。
BERT是在输入序列的第一个位置添加了[CLS]Token,在输出时也是取这个CLS。
BART是在decoder输出的最后一个Token的hidden state接一个分类层进行微调,获得最终的分类。作者认为这样能使最后一个Token的表示参考了前面所有Token的语义信息。
2、Token Classification Tasks
Token级别的分类任务有实体识别、阅读理解、问答等,均为抽取式。该任务和句子分类类似,只不过这里用到了Decoder输出的每一个Token的hidden state,即对每个Token进行分类。
3、Sequence Generation Tasks
BART因为其decoder结构支持序列生成任务,例如抽象问答任务和摘要任务(注意是生成式的非抽取式的),其微调方式也很直接简单,给模型一个原始文本和一个目标文本,编码器接收原始文本,解码器解码出预测文本,并和目标文本求损失。
4、Machine Translation
作者将原来BART的Encoder和Decoder看成了一个整体,作为新的Decoder,然后将原来Encoder的词嵌入层(embedding layer)替换成一个新的Encoder,通过新的Encoder将原始外文编码先编码,再送进原始BART的Encoder-Decoder的结构中。作者可能认为以此能弥补单纯用一个Decoder造成的Decoder能力不足的缺陷。
微调采取了两步走的策略:第一步先只更新随机初始化的源编码器(即新Encoder)、BART的位置嵌入向量和编码器第一层的自注意输入投影矩阵(原Encoder)。其余参数固定住。第二步少量迭代全部参数。
四、Result
这张图主要看一下不同预处理下的实验效果
更多实验可以看看原文,还是很详细的
总结
BART整体来讲创新点不算太多,不过做了大量的详细实验分析还是很nice的,还是很强烈推荐去看看BART原文,作者对不同预处理下的各种任务进行了分析,很有启发性。