(一)BERT
由B idirectional E ncoder R epresentations from Transformers的首字母组成,是encoder-only结构类型的代表。
模型分预训练和微调两步,预训练任务有两类:masked language model(MLM)、next sentence prediction(NSP);微调时全部参数都更新
模型结构
输入序列总是以[CLS]这一特殊token开头,其在最后一个隐藏层的向量表示记为C,C是输入序列的整合表示,在分类任务中,C被喂进输出层。两个句子之间以[SEP]这个token分割。
预训练
Task #1: Masked LM
输入序列中15%的token被随机mask,被mask的token的最后隐藏层向量表示链接一个softmax输出层,维度为词典大小,预测被mask的token是什么。
Task #2: Next Sentence Prediction (NSP)
任务1是一个句子内,token粒度的学习,而QA和推断任务都是基于对句子之间关系的理解。所以任务2是为了学习句子之间的关系而设计的。训练数据中句子A和句子B,预测B是否A的下一句。
微调
几类微调任务:下图中a和b是sequence-level任务,c和d是token-level任务
bert、GPT、elmo的区别
(二)BART
B idirectional and A uto-R egressive Transformers首字母缩写,BART结合双向和自回归Transformer 对模型进行预训练
预训练包括两步:1)使用任意噪声函数破坏文本;2)学习模型来重建原始文本。
BERT难用于生成任务,GPT无法学习双向交互。BART使用双向模型编码被破坏的文本(左),然后使用自回归解码器计算原始文档的似然(右)。至于微调,未被破坏的文档是编码器和解码器的输入,研究者使用来自解码器最终隐藏状态的表征。
架构
BART采用标准的transformer,除了将激活函数从ReLU改为GeLU这一小改动。
base模型encoder和decoder各6层,large模型各12层。
预训练
BART训练是通过破坏原文档,然后优化重构损失------decoder的输出和原文档的交叉熵
噪声变换:
- token 掩码:按照 BERT 模型,BART 采样随机 token,并用掩码替换它们。
- token 删除:从输入中随机删除 token。与 token 掩码不同,模型必须确定缺失输入的位置。
- 文本填充:采样多个文本段,文本段长度取决于泊松分布 (λ = 3)。用单个掩码 token 替换每个文本段。长度为 0 的文本段对应掩码 token 的插入。
- 句子排列变换:按句号将文档分割成多个句子,然后以随机顺序打乱这些句子。
- 文档旋转:随机均匀地选择 token,旋转文档使文档从该 token 开始。该任务的目的是训练模型识别文档开头。
模型微调
序列分类任务
序列分类任务中,编码器和解码器的输入相同,最终解码器 token 的最终隐藏状态被输入到新的多类别线性分类器中。该方法与 BERT 中的 CLS token 类似,不过 BART 在解码器最后额外添加了一个 token,这样该 token 的表征可以处理来自完整输入的解码器状态(见图 3a)。
token 分类任务
对于 token 分类任务,例如SQuAD答案提取------起始点判断,将完整文档输入到编码器和解码器中,使用解码器最上方的隐藏状态作为每个单词的表征。该表征的用途是分类 token。
序列生成任务
由于 BART 具备自回归解码器,因此它可以针对序列生成任务进行直接微调,如抽象问答和摘要。在这两项任务中,信息复制自输入但是经过了处理,这与去燥预训练目标紧密相关。这里,编码器的输入是输入序列,解码器以自回归的方式生成输出。
机器翻译
用新的随机初始化编码器替换 BART 的编码器嵌入层。该模型以端到端的方式接受训练,即训练一个新的编码器将外来词映射到输入(BART 可将其去噪为英文)。新的编码器可以使用不同于原始 BART 模型的词汇。
源编码器的训练分两步,均需要将来自 BART 模型输出的交叉熵损失进行反向传播。第一步中,冻结 BART 的大部分参数,仅更新随机初始化的源编码器、BART 位置嵌入和 BART 编码器第一层的自注意力输入投影矩阵。第二步中,将所有模型参数进行少量迭代训练。
(三)T5
Text-to-Text Transfer Transformer
参考文章:https://www.bilibili.com/read/cv22768750/
LLM模型比较全的一个盘点:简单之美 | 大模型(LLMs)盘点跟踪
未完待续