查看原文
其他

常用预训练语言模型(PTMs)总结

刘聪NLP NLP工作站 2023-11-28

近期,本人在组内进行了一次分享,主要涉及预训练语言模型,之前也对一些预训练语言模型进行过单独地分享,本次进行一下简单地总结。由于时间和精力有限,本次汇总的预训练语言模型仅涉及Transformer结构相关的模型,一些对Transformer结构进行修改的模型和蒸馏模型不在本次分享范围。

从以下5个部分通过QA的方式进行总结:Transformer架构Transformer-Encoder预训练语言模型Transformer-Decoder预训练语言模型Transformer预训练语言模型领域语言模型


Transformer架构

Q:为什么存在Positional Embedding?在该结构中以何种形式表示?

A:Attention机制与CNN结构一样,无法表示文本的时序型,因此相比于LSTM结构,在NLP领域效果要差一些,而加入位置信息,相当于给予了时序特性。位置信息为绝对位置,由Sin+Cos获得,如下:

  

  

Q:为什么在做attention时,需要进行Scale?

A:QK进行点击之后,值之间的方差会较大,也就是大小差距会较大;如果直接通过Softmax操作,会导致大的更大,小的更小;进行缩放,会使参数更平滑,训练效果更好。

Q:代码层面如何实现multi-head self-attention?

A:将真实的维度除以头的个数,获取每个真实计算的子元素维度,也就是将三维向量变成四位向量进行计算self-attention。

Q:为什么Transformer使用LayerNorm ,而不使用BatchNorm?

A:BN的特点是强行拉平数据之间的分布,使得模型收敛速度更快,并且起到了正则化的作用,使模型效果更佳。但是,BatchNorm对Batch Size大小很敏感,并且在LSTM网络上效果极差。

LayerNorm是横向归一化,不受Batch Size大小的影响,并且可以很好地应用在时序数据中,而且不需要额外的储存空间。

《Rethinking Batch Normalization in Transformers》一文对比了LayerNorm和BatchNorm对于Transformer的作用,并且提出了一种新的归一化方式。

Q:Transformer 训练过程的mask机制。

A:在Encode部分,模型训练只有Padding Mask,而在Decoder部分,由于训练与预测是存在差异性的,已知每一步预测前的元素,因此有PaddingMask和Position Offset Mask,即上三角掩码矩阵。

Transformer论文见:https://arxiv.org/abs/1706.03762


Transformer-Encoder预训练语言模型

BERT

Q:BERT模型介绍

A:提出MLM任务,即掩码语言模型,通过对掩码元素的预测,实现基于Transformer-Encoder的双向语言模型。

其中,15%的token被掩掉,其中80%的token使用[mask]替换,10%的token使用随机token替换,10%的token保持不变。

增加NSP任务:预测下一句话,是否是前一句话的下一句话。

Q:为什么BERT在预训练时mask15%的token,不是10%、20%、30%?

A:可能是mask太少会导致学习不充分,增加训练时长;mask太多会导致使一段文本中丢失太多的语义信息。(网上有一个解释,跟CBOW相似,15%相当于7个token预测一个token,刚刚好。)本人觉得还是为效果论,并且后面T5论文在实验中提到过15%是最优参数。

Q:为什么有部分被mask的token保持不变?

A:被mask的文本会丢失一些语义信息,与下游任务不一致。为了改善这种情况,保持部分token不变;并且加入一些随机替换的token和保持token不变也赋予了模型纠错的能力。目前也有论文使用BERT模型进行纠错任务,见《Spelling Error Correctionwith Soft-Masked BERT》。

Q:BERT模型如何构建词表?

A:BERT模型采用WordPiece算法构建词表。WordPiece是基于BPE算法的改进,将通过频率合并字符的频率变成了通过语言模型的似然进行合并。

BPE论文见:https://arxiv.org/abs/1508.07909。

Q:由于WordPiece构建的词表,会有很多子词,掩码时会导致信息不全,怎么解决?

A:Google开源了全词掩码代码,如果将一个word切开了,则全部掩掉。最后提升0.5-1个点。

BERT论文见:https://arxiv.org/abs/1810.04805


RoBerta

Q:Roberta模型介绍

A:RoBERTa模型,相当于一篇BERT模型的调参训练的实验报告,体现了作为一名算法调参工程师的重要性。

主要如下:

增加了训练数据,从16G变成了160G;

修改了超参数,将Adam优化器的β2 参数从0.999改为0.98;

加大batch size,从BERT的256改为2K甚至8K,训练步数从1M降到500K;

在更长的序列上进行MLM训练,并移除NSP任务;

将BERT静态遮掩改为动态遮掩;

采用更大的byte-level的BPE词典,变成了50000个token;

加入了混合精度训练模型。

Q:如何实现动态掩码?

A:离线,将同一份数据掩码10次,达到动态掩码的作用。

Q:上面讲的均是英文的模型,中文模型如何?

A:BERT和RoBerta的中文词表是没有修改。

中文全词掩码和Roberta模型是哈工大讯飞实验室做的。

另外:预训练还是别加NSP任务啦!!!

Roberta论文见:https://arxiv.org/abs/1907.11692


ERNIE-BaiDu

Q:ERNIE模型噱头是什么?

A:引入知识图谱信息。

Q:如何引入知识图谱信息?

A:知识图谱是由实体、关系、实体或实体、属性、值组成。而实体一般是人名、地名、机构名等,因此采用多种掩码机制,通过引入实体级别掩码(Entity-Level Masking)和短语级别掩码(Phrase-levelMasking),来增加知识图谱信息。不过,掩码依然保留BERT原有的字符级别掩码(Basic-level Masking)。

Q:与BERT模型的不同?

A:数据层面:中文维基,百度百科,百度新闻和百度贴吧;

词表大小:17964;

增加DLM任务:处理百度贴吧的线程数据、通过用随机选择的句子替换查询或响应来生成假样本。该模型用于判断多回合对话的真假。

ERNIE1.0论文见:https://arxiv.org/abs/1904.09223

Q:ERNIE2.0有哪些改进?

A:2.0引入了更多的任务,包括:知识掩码任务(Knowledge Masking Task)、大写预测任务(Capitalization Prediction Task)、 词语-文档关系预测任务(Token-Document Relation Prediction Task)、句子重排序任务(Sentence Reordering Task)、句子距离预测任务(SentenceDistance Task)、句子关系任务(Discourse Relation Task)、检索关系任务(IR Relevance Task)。

其中,知识掩码任务,就是ERNIE1.0的掩码任务;大写预测任务,就是预测一个英文词语的首字母是否为大写,一般大写词语都是较重要的词语;词语-文档关系预测任务,就是一篇文档出现的词语,是否在另外一篇出现;句子重排序任务,就是将文本句子打乱顺序,然后预测正确排序;句子距离预测任务,就是预测两个句子之间的距离;句子关系任务,就是根据句子之间的关键词判断,两个句子之间的语义关系;检索关系任务,就是判断一条用户查询和一篇文档题目的相关性程度,包含强相关、弱相关和无关。

ERNIE2.0论文见:https://arxiv.org/abs/1907.12412

 

SpanBERT

Q:SpanBERT模型介绍

A:顾名思义,使用Span片段进行Mask操作;与Roberta一样,舍弃了NSP任务,但是增加了SBO任务;Masktoken的占比依然为15%,并按照811的规则替换。

Q:SBO任务是什么?

A:Span Boundary Objective任务,通过边界两侧的token,预测span里面全部的token。

在训练时获取Span掩码边界的前后两个token(注意,不是边界token,是边界前后的token),然后将这两个token的向量加上 Span被掩掉token的位置向量,来预测被掩掉token的原词是什么,其实,就是将词向量和位置向量拼接起来,过两层全连接层,进行词表预测。

Q:Span掩码的长度是如何选取的?

A:符合长度为10,p为0.2的几何分布。平均span长为3.8。值得注意的是,由于几何分布,最大数只取到10,后面采用截断的方式,因此,后面的概率会分布到前面1-10的概率上,与正常几何分布概率不同。

span长度为1 的概率是 p/(1-q^10)=0.224,

span长度的期望是 p(1+2q+3q^2+...10q^9)/(1-q^10) = 3.797。

Q:Mask效果比较

A:论文实验发现,掩码效果如下:Span > Noun Phrases > Named Entities > Whole Words > SubwordTokens。但是有趣的一点是,该论文在效果比较时,只与GoogleBert,OurBERT、Bert-1Seq进行了比较,没有与ERNIE比较,原因就是,ERNIE采用了几种掩码的集合,因此没有可比性。其中,Bert-1seq为BERT只采用一个长序列进行MLM任务训练,与Roberta任务一致。

SpanBERT论文见:https://arxiv.org/abs/1907.10529

 

MacBERT

Q:MacBERT模型介绍

A:使用全词掩蔽和N-Gram掩蔽策略来选择候选tokens进行掩蔽;由于原始BERT模型在预训练时使用[MASK] token进行替换,但是[MASK] token在微调阶段从未出现,这会造成预训练任务与下游微调任务不一致,因此使用类似的单词来掩蔽需要被掩蔽的单词;使用15%的百分比输入单词进行掩蔽,其中80%将替换为相似的单词,10%将替换为随机单词,剩下的10%将保留原始单词。

Q:全词掩蔽和N-Gram掩蔽的比例是多少?

A:从单字符到4字符的掩蔽百分比为40%、30%、20%、10%。

Q:类似的单词如何获取?

A:类似的单词可以通过同义词工具包(Synonyms)获得,该工具包是基于word2vec相似度计算来获取同义词的。

选择一个N-gram进行掩码时,该论文将分别找到相似的单词。在极少数情况下,当没有相似的词时,会降级使用随机词替换。

Q:是否包含其他任务?

A:使用ALBERT提出的句子顺序预测(SOP)任务替换BERT原始的NSP任务,通过切换两个连续句子的原顺序创建负样本。

Q:ALBERT模型?

A:ALBERT模型主要采用了权重共享的方法,说句心里话,ALBERT,我差你那点硬盘空间吗?我差的是推理速度。

MacBERT论文见:https://arxiv.org/abs/2004.13922

MacBERT论文解读见:https://zhuanlan.zhihu.com/p/250595837

 

NeZha

Q:NeZha模型介绍

A:NeZha模型的主要贡献包括:增加相对位置编码函数(FunctionalRelative Positional Encoding)

全词掩码(Whole Word Masking)(Jieba2来进行中文分词)

混合精度训练(Mixed Precision Training)

优化器改进(LAMB Optimizer

Q:NeZha模型效果如何?

A:没有效果,但是可以强行发论文;但是毋庸置疑的点是,相对编码可以在推理时接收更大的长度。

NeZha论文见:https://arxiv.org/abs/1909.00204

NeZha论文解读见:https://zhuanlan.zhihu.com/p/100044919


ZEN

Q:N-Gram Encoder层介绍

A:N-Gram Encoder层为6层的transformer-encoder结构,最大长度为128,词表大小为104K。

词表,通过对数据集进行窗口最大为15的N-Gram滑窗,保留频率最大的104K个词,并且n-gram encoder没有位置信息。

Q:ZEN模型效果

A:数据仅采用中文维基,存在NSP任务,额外增加20%的推理时间,效果紧逼ERNIE2.0。

ZEN论文见:https://arxiv.org/abs/1911.00720

 

UniLM

Q:UniLM模型介绍

A:通过不同的掩码来控制预测单词的可见上下文词语数量,实现不同的语言模型的联合训练。

单向语言模型:分为从左到右和从右向左两种,从左到右,即仅通过被掩蔽token的左侧所有本文来预测被掩蔽的token;从右到左,则是仅通过被掩蔽token的右侧所有本文来预测被掩蔽的token。

双向语言模型:与BERT模型一致,在预测被掩蔽token时,可以观察到所有的token。

序列到序列语言模型:如果被掩蔽token在第一个文本序列中,那么仅可以使用第一个文本序列中所有token,不能使用第二个文本序列的任何信息;如果被掩蔽token在第二个文本序列中,那么使用一个文本序列中所有token和第二个文本序列中被掩蔽token的左侧所有token预测被掩蔽token。

Q:UniLM模型如何掩码?

A:token掩码的概率为15%,在被掩掉的token中,有80%使用[MASK]替换,10%使用字典中随机词进行替换,10%保持原来token不变,与BERT模型一致。此外,在80%的情况下,每次随机掩掉一个token,在剩余的20%情况下,掩掉一个二元token组或三元token组。

Q:如何训练UniLM模型?

A:使用1/3的数据进行双向语言模型优化,1/3的数据进行序列到序列语言模型优化,1/6的数据进行从左向右的单向语言模型优化,1/6的数据进行从右向左的单向语言模型优化

Q:如何实现训练代码?
A:每个batch为一个任务,2个双向语言模型任务,2个序列到序列语言模型任务,1个左向右的单向语言模型任务,1个从右向左的单向语言模型,每跑一个任务进行一次累计梯度,跑完一轮所有任务,执行一次反向传播。

并且我司开源了UniLM预训练中文模型,见:https://zhuanlan.zhihu.com/p/163483660

UniLM论文见:https://arxiv.org/abs/1905.03197

UniLM论文解读见:https://zhuanlan.zhihu.com/p/113380840

 

ELECTRA

Q:ELECTRA模型介绍

A:首先,按照一定的比例对于原始输入序列进行随机MASK操作得到新序列;

其次,将新序列作为生成器模型的输入,生成器模型对MASK的token进行预测,获取生成序列;

之后,将生成序列作为判别器模型的输入,判别器模型对生成序列每一个元素进行预测,判断是否是原始文本;

然后,将生成器模型和判别器模型的损失进行加和,分别反向传播;

最后,将判别器模型用于下游任务。

Q:ELECTRA模型任务本质

A:任务本质是获取效果较好的判别器,而判别器任务,就是一个Replaced Token Detection任务,预测替换词语是否为原始文本词语;而存在生成器模型的原因是直接使用随机替换的词语效果不好。

Q:ELECTRA模型与GAN的关系?

A:其实不是GAN模型,句子的字词是离散的,梯度在判别器使用生成器结果时就断了,判别器的梯度无法传给生成器,生成器的训练目标还是MLM。

Q:Loss如何分布

A:判别器的任务相对来说容易些,RTD loss相对MLM loss会很小,因此加上一个系数,论文提供的参数为50。

Q:判别器Loss是计算所有Token,为什么不只计算15%被mask的token

A:效果好。

Q:生成器和判别器的权重共享是否可以提升效果呢?

A:在相同参数下(生成器和判别器结构一致),不共享权重下的模型效果最差,共享所有权重的效果最好,只共享token embedding层的效果只比共享所有权重差一点点。原因是,生成器是一个MLM任务,在模型预测时softmax建立在词典的所有词之上,反向传播会更新所有token 的embedding,因此生成器对token embedding层的学习效果更好。最后论文作者只使用了token embedding共享策略。并且实验发现生成器的大小在判别器的1/4到1/2之间效果是最好的。

ELECTRA论文见:https://arxiv.org/abs/2003.10555


Transformer-Decoder预训练模型

GPT

GPT手把手教你标题生成任务见:https://zhuanlan.zhihu.com/p/338171330


Transformer预训练模型

BART

Q:Transformer结构如何定义预训练任务?

A:BART模型的预训练是对原始文本破坏再重建,因此损失函数为decoder的输出与原始文本的交叉熵。

Q:BART的破坏操作?

A:Token Masking:Token掩码,与BERT模型策略一致,随机抽取token,并用[MASK]标记进行替换。

TokenDeletion:Token删除,从输入中随机删除token,与掩码不同,该策略为了让模型学习哪些位置缺少输入信息。

TextInfilling:文本填充,随机挑选一个文本片段(文本片段的长度符合λ =3的泊松分布),并且使用一个[MASK]标记进行替换。当片段长度为0时,相当于在原始位置插入一个[MASK]标记。与SpanBERT模型不同的是,SpanBERT模型是使用片段长度个数的[MASK]标记进行替换。

SentencePermutation:句子排序,将文本按照句号进行分割,生成句子序列,然后将句子之间的顺序随机打乱。

DocumentRotation:文档旋转,随机选择一个token,然后将文本进行旋转,即以选择token作为文本的开头。该策略让模型学习文本

Q:BART最终的掩码策略?

A:BART模型最终使用了Text Infilling策略和Sentence Shuffling策略的组合,其中屏蔽每个文本中30%的token,并排列所有的句子。

BART论文见:https://arxiv.org/abs/1910.13461

BART论文解读见:https://zhuanlan.zhihu.com/p/399169880

 

MASS

Q:Transformer结构如何定义预训练任务?

A:MASS模型在编码器端输入一个被随机掩掉长度为k的连续片段的句子,然后通过解码器预测被掩掉的长度为k的连续片段。

Q:MASS模型与BERT模型和GPT模型的差异?

A:掩码token个数为K。当k=1时,编码器端掩掉一个token时,解码器端也仅预测一个token,如下图所示,这时的MASS模型和BERT模型的预训练方法相似。

当k为序列长度时,编码器端掩掉所有token,解码器端预测所有token,如下图所示,这时的MASS模型和GPT模型中的预训练方法相似。

Q:MASS最终的掩码策略?

A:从随机一个位置开始,连续mask掉句子长度50%的tokens。且参考BERT的811策略。

Q:MASS的优势是什么?

A:训练过程中,在编码器端没有被掩掉的词,在解码器端都被掩掉,促使解码器需要从编码器端提取更多的信息来生成连续片段,这样促进了编码器-解码器结构的联合训练;并且在训练时,50%token不需要预测,可以节省50%的时间。

MASS论文见:https://arxiv.org/abs/1905.02450

 

T5

Q:Transformer结构如何定义预训练任务?

A:将原始文本的片段进行MASK,并用特定的字符进行占位,将其输入到编码器中;解码器为连续输入特定的占位符,预测其原始文本内容。

Q:T5-Base模型基本参数

A:标准Transformer模型结构;

12层encoder,12层decoder;

QKV维度为64, 模型维度768, 有12个头;

采用AdaFactor优化器;

词表大小为32k vocab;

Q:T5模型的策略选择

A:在Language Modeling策略(语言模型LM任务)、BERT-style策略(掩码语言模型MLM任务)和Deshuffling策略(复原打乱任务)中,BERT-style策略最优;

在Mask策略(将每一个token用一个特殊字符替代)、Replace spans策略(将一个片段的token用一个特殊字符替代)和Drop策略(将token舍弃)中,Replacespans策略最优;

在掩码概率10%、15%、25%、50%的四种策略中,15%的策略最优;(也反向说明了BERT掩码15%的策略,不是空穴来风)

在片段长度选择策略中,长度为3时最优。

Q:T5的实验

A:T5做了太多的实验了,直接见图吧。

领域预训练论文


本次总结参考的综述论文如下:

Pre-trainedModels for Natural Language Processing A Survey

Pre-TrainedModels Past, Present and Future

AMMUSA Survey of Transformer-based Pretrained Models in Natural Language Processing

ASurvey of Transformers

EfficientTransformers A Survey

Pre-train,Prompt, and Predict A Systematic Survey of Prompting Methods in NaturalLanguage Processing

总结

预训练语言模型已经成为了现在的必备,充分地了解其原理,有利于进行更好地下游任务。其实,预训练任务与下游任务越相似,效果会越好。

整理不易,请多多关注、转发、点赞。也请多多关注本人知乎「刘聪NLP」,有问题的朋友也欢迎加我微信私聊。
我们的口号是“生命不止,学习不停”。



往期推荐

回顾BART模型

ACL2021论文之ChineseBERT:融合字形与拼音信息的中文预训练模型

ACL2021 Findings论文汇总及分类

ACL2021主会议论文汇总及分类

授人以鱼不如授人以渔

难负例如何影响向量检索模型?

SIGIR2021论文:基于Text-to-Text多视图学习的段落重排序

SIGIR2021之IDCM模型: 文档内部级联选择段落服务于文档排序

SIGIR2021之DvBERT模型:双视图蒸馏的句向量BERT模型

SIGIR 2021论文筛选

超详细中文注释的GPT2新闻标题生成项目

Unilm对话生成之夸夸式闲聊机器人


继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存