EBET易博app【自然语言处理系列】NLP中的十个预训练模型

  新闻资讯     |      2023-10-06 12:54

  EBET易博官方网站分层softmax最主要的改进既是:不需要对网络W个单词的输出计算概率分布,只需要评估个节点即可通过模型的一次训练来解释负采样的过程,以skip_gram模型训练为例进行讲解训练样本输入词是:love,输出词是me,如果词典中有10000个词,设定训练出的词向量大小为300,则开始love和me都是通过one-hot编码的,在输出位置上me对应的是1,其他位置都是0,我们认为这些0位置对应的词即是负样本,1位置对应的是正样本,在不采用负采样情况下隐层到输出层的参数为300*10000,负采样的意思即是我们只在9999个负样本中选择很少一部分对应的参数进行更新(包括正样本的也更新),其他没有挑中的负样本参数保持不变,例如我们选择5个negative words进行参数更新,加上一个正样本总共是6个,因此参数是300*6,大大提高每次训练的计算效率,论文中指出对于小规模数据集我们选择5-20个negative words较好,在数据集情况下选择2-5个负样本较好频繁词的二次采样,根据论文描述在大的语料库中,频繁词如容易出现很多次的the\in\a提供的信息量远没有罕见词提供的信息量多,因此在后续的训练中频繁词无法提供更多的信息甚至会将网络带偏,因此提出了频繁词二次采样方式:即在每次训练时按照如下公式对训练集的单词wi进行丢弃:

  (4) word2vec是静态词向量预训练模型,词向量是固定的,不能解决多义词问题,无法考虑预料全局信息

  二、FasttextfastText是一个快速文本分类算法,与基于神经网络的分类算法相比有两大优点:(1) fastText在保持高精度的情况下加快了训练速度和测试速度(2) fastText不需要预训练好的词向量,fastText会自己训练词向量因此fasttext在预训练上的体现便是我们可以通过fasttext训练自己预料的词向量1、fasttext模型架构fastText模型架构和word2vec中的CBOW很相似, 不同之处是fastText预测类别标签而CBOW预测的是中间词,即模型架构类似但是模型的任务不同,下面是fasttext的结构图

  (3) Slantedtriangular learning rates:倾斜三角学习率,意思是为了使参数更快的适应任务的特征,在模型开始训练时快速收敛到参数空间,再细化参数

  四、Glove1、Glove矩阵分解模型Glove是一种矩阵分解式词向量预训练模型,如果我们要得到目标词w的预训练Embedding目标词w的Embedding表示取决于同语境中的词c的共现关系,因此引入矩阵分解的共现矩阵M,下面先给出共现矩阵M定义:Vw行,每行对应Vw中出现的词wVc列,每列对应Vc中出现的词cMij表示wi和cj之间的某种关联程度,最简单的联系是w和c共同出现的次数

  2、Glove中的优缺点(1) 优点:glove矩阵分解是基于全局预料的,而word2vec是基于部分预料训练的(2) 缺点:glove和word2vec、fasttext一样词向量都是静态的,无法解决多义词问题,另外通过glove损失函数,还会发现glove有一个致命问题,看下解释:

  看上面的公式,glove损失函数显示,在glove得出的词向量上加上任意一个常数向量后,仍旧是损失函数的解,这问题就较大,如我们加上一个特别的常数,词向量就是十分接近了,这样就失去了词向量的表示含义,因此用glove训练出词向量后要进行check

  五、Cove1、Cove模型结构模型首先在一个Encoder-Decoder机器翻译的训练任务上进行预训练,预训练模型训练好之后只取Embedding层和Encoder层,然后在新的任务上设置task-specific model,用预训练好的Embedding层和Encodeer层作为输入,最后在新的任务场景下进行训练

  预训练模型Encoder部分使用的是Bi-LSTM,并在下游任务中结合了glove向量作为表示

  在效果上要优于glove的多种任务,但缺点是大多还是利用下游任务的模型表现

  六、ELMO1、ELMO模型结构ELMO首先根据名字Embedding from language model便可以ELMO是一个基于语言模型的词向量预训练模型,其次ELMO区别于word2vec、fasttext、glove静态词向量无法表示多义词,ELMO是动态词向量,不仅解决了多义词问题而且保证了在词性上相同ELMO模型使用语言模型Language Model进行训练,ELMO预训练后每个单词对应三个Embedding向量:(1) 底层对应的是Word Embedding,提取word的信息(2) 第一层双向LSTM对应是Syntactic Embedding,提取高于word的句法信息(3) 第二层双向LSTM对应的是Semantic Embedding,提取高于句法的语法信息ELMO在下游任务中是将每个单词对应的三个Embedding按照各自权重进行累加整合成一个作为新特征给下游任务使用,如下图所示:

  下面通过公式来再深入理解一下ELMO的双向LSTM语言模型,有一个前向和后向的语言模型构成,目标函数是取这两个方向语言模型的最大似然给定N个tokens,前向LSTM结构为:

  七、GPT1.01、GPT1.0模型结构GPT1.0使用语言模型进行预训练,通过Fine-tuning的模式解决下有任务GPT1.0和ELMO相比最大的两点不同(1) 特征抽取器使用的是Transformer而不是RNN(2) GPT预训练仍旧采用的是以语言模型作为目标任务,但是采用的是单向的语言模型,而不是ELMO和Bert中的双向语言模型,这也是GPT1.0甚至是GPT2.0与Bert模型相比最大的区别Bert论文中给出了GPT模型的简要结构,可以看出输入是Word Embedding,然后是两层单向的语言模型,特征提取器使用的是Transformer

  2、GPT中Tricks(1) 特征提取器使用了Transformer替代RNN(2) Discriminative fine tuning:意思是对于特定的任务有区别的进行下游任务的微调,即模型会感知输入的数据对于进行转化,最小程度修改模型结构

  八、GPT2.01、GPT2.0模型结构GPT2.0模型结构和GPT1.0大致相同,仍旧是采用单向语言模型预训练,特征提取使用的是Transformer,GPT2.0相对于GPT1.0主要是做了以下三点大的改进(1) transformer模型由原来24层叠加的block变成了48层,参数15亿(2) 更大网络自然需要更多数据,因此数据采用质量更高数量更大的涵盖范围更广的数据WebText(3) 使用无监督进行下游任务而不是fine-tuning当然还有一些小的改变如对transformer结构进行了微调,主要还是增大了网络层次2、对GPT2.0的应用理解虽然大多数感觉GPT不如Bert,因为它和Bert特征提取器都使用的是Transformer,但是它使用的是单向语言模型,不似Bert的双向语言模型效果那么好,但是GPT在一个方面还是完胜Bert的,那就是序列生成任务上,如摘要生成,自动生成自然语言的句子和段落,这归因于GPT的预训练任务

  九、BERT1、Bert模型结构Bert相信NLPer都相当熟悉了,Bert模型主要两个特点(1) 特征提取器使用的是transformer(2) 预训练使用的是双向语言模型

  Bert还有突出的地方在于它的预训练任务上,Bert采用了两个预训练任务:Masked语言模型(本质上是CBOW)、NextSentence Prediction(1) Masked语言模型:随机选择语料中15%的单词,把它抠掉,也就是用[Mask]掩码代替原始单词,然后要求模型去正确预测被抠掉的单词,但15%词中只有80%会被替换成mask,10%被替换成另一个词,10%的词不发生改变(2) Next SentencePrediction:指语言模型训练的时候,分两种情况选择句子,一种是正确拼接两个顺序句子,一种是从语料库中随机选择一个句子拼接到句子后面,做mask任务时顺带做句子关系预测,因此BERT的预训练是一个多任务过程在因为Bert预训练预料丰富模型庞大,Bert的可适用的下游任务也很多,Bert可以对于上述四大任务改造下游任务,应用广泛:(1) 序列标注:分词、POS Tag、NER、语义标注(2) 分类任务:文本分类、情感计算(3) 句子关系判断:Entailment、QA、自然语言推断(4) 生成式任务:机器翻译、文本摘要等

  3、特征提取器插播说到NLP中的特征提取器这里说一下,目前NLP常用的特征提取方式有CNN、RNN和Transformer,下面简要比较:(1) CNN的最大优点是易于做并行计算,所以速度快,但是在捕获NLP的序列关系尤其是长距离特征方面天然有缺陷(2) RNN一直受困于其并行计算能力,这是因为它本身结构的序列性依赖导致的(3) Transformer同时具备并行性好,又适合捕获长距离特征这里顺便放上ELMO、GPT、BERT的对比图,其中ELMO特征提取器使用的是RNN,GPT和Bert使用的是Transformer,GPT使用的是单向语言模型,ELMO和BERT使用的是双向语言模型

  先看上面第一张图,是传统的机器翻译,Y1由[X1, X2, X3, X4]编码得到,可以看出[X1, X2, X3, X4]对翻译得到词Y1贡献度没有区别再看第二张图是Attention+ 机器翻译,每个输出的词Y受输入X1, X2, X3, X4影响的权重不同,这个权重便是由Attention计算,因此可以把Attention机制看成注意力分配系数,计算输入每一项对输出权重影响大小(2) 从一个机器翻译实例理解Attention机制,了解一下Attention如何对权重进行计算(下面图片引自网络)

  以单词Thinking为例,先用Thinking的q向量和所有词的k向量相乘,使用下面公式:

  这种得到每个单词对单词Thinking的贡献权重,然后再用得到的权重和每个单词的向量v相乘,得到最终Thinking向量的输出

  十、Flair EmbeddingFlair Embedding预训练目前听到的还不太多,当时有论文证明在NER任务上目前比BERT效果还要好,其他任务还不确定,下面是在NER任务上的对比