1.单词向量模型
在这里,我们主要横向比较word2vec、ELMo和BERT,重点关注模型的亮点和差异。
传统意义上的词向量模型是一种工具,可以将现实世界中的抽象词转化为可以通过数学公式运算的向量,而这些向量的运算就是NLP的真正任务。因此,从某种意义上说,NLP任务分为两部分:生成词向量的预训练和对词向量的操作。
从word2vec到ELMo再到BERT,我们所做的就是将特定NLP任务的工作逐渐向下游转移到预训练中,生成单词向量。下面是一个大概的总结,详细的解释会在后面写。。
word2vec——>ELMo:
结果:与上下文无关的静态向量变成了与上下文相关的动态向量,例如苹果在不同的上下文中是不同的。
操作:编码器操作转移到生成词向量的预训练过程。
ELMo——BERT:
结果:训练后的词级向量变成句子级向量,更便于下游调用特定的NLP任务,修正了ELMo模型的潜在问题。
操作:利用句子级负采样获取句子表征/句子对关系,Transformer模型代替LSTM提高表达效率和时间,masked LM解决“看见自己”的问题。
1.word2vec
#反正我一直用这个,感觉方便高效。后来我学得太年轻了。。。
线性模型:
太神奇了,说明高维空之间映射的词向量可以很好的反映现实世界中token之间的关系。例如,男国王=女女王
负采样:
因为训练词向量模型的目标不是得到一个精确的语言模型,而是得到它的副产品词向量。因此,我们需要做的不是计算单词softmax来获得数万个token中的最佳,而是在几个单词中找到正确的单词,这些单词包括一个正例和随机生成的噪声单词,也就是说训练一个sigmoid二进制分类器,只要模型能从中找到正确的单词,就认为任务完成了。
这种负采样思想也适用于后来的BERT,只不过是从词级变为句级,从而获得句与句之间的关系。
缺点是与上下文无关:
因此,为了使句子有一个完整的意义,每个人都会在下游的特定自然语言处理任务中编码碱基和词向量的序列。
下面是对照表,模型不详细,预测目标中的下一个单词是所有传统语言模型都做的——找出下一个单词要填什么。
2.工程与后勤管理局
# 10月初建议使用ELMo提高模型效率。但是之后可能调整不当,导致运行时间长,所以我放弃了。。。
ELmo模型是AllenNLP于2018年8月发布的上下文无关模型。甚至在9月份BERT没出来的时候,还发生了一点小火灾。然而,据说它使用缓慢且效率低下,随着BERT的立即提出,ELMo很快被人们遗忘了。。。然而,BERT的提议是对ELMo的致敬,很难在同一个漫画中把一个角色名字和ELMo放在一起。。。
然而,BERT直接训练一个位置嵌入来保持位置信息,为每个位置随机初始化一个向量,加入模型训练,最终得到一个包含位置信息的嵌入。最后,BERT在位置嵌入和单词嵌入的组合中选择直接拼接。
3.句子级表征
在很多任务中,光靠编码是不足以完成任务的,还需要捕捉一些句子级的模式来完成SLI、QA、对话等需要句子表示、句子间的交互和匹配的任务。对此,BERT引入了另一个极其重要但又极其轻量级的任务来尝试学习这个模式。
句子级负采样
句子级连续预测的任务是预测输入BERT两端的文本是否为连续文本。在训练过程中,输入模型的第二段将以50%的概率从所有文本中随机选择,第一段的后续文本将以50%的概率选择。即先给出一个句子,下一个句子为正例,随机抽取一个句子为负例,然后在句子层面进行两次分类。
句子级表征
BERT是一个句子级语言模型。与ELMo模型在与下游特定NLP任务拼接时需要为每一层增加权重进行全局池化不同,BERT可以直接获得整句话的唯一向量表示。它在每个输入前添加一个特殊的标记,然后使Transformer对深度编码。由于Transformer可以将全局信息编码到每个位置,而不管空之间的距离如何,并且最高隐藏层直接与softmax的输出层相连,作为句子/句子对的表达,因此它可以学习整个输入的上层特征,作为梯度反向传播路径上的“检查点”。
分段嵌入
对于句子对,EA和EB分别代表左右句。对于句子,只有EA。这个EA和EB也是用这个模型训练的。
如下图所示,最终的输入结果将成为以下三个嵌入拼接的表示。
第三,迁移策略
下游NLP任务主要分为四类
序列标注:分词、实体识别、语义标注...
分类任务:文本分类、情感计算...
句子关系判断:蕴涵、问答、自然语言推理
生成性任务:机器翻译、文本摘要
BERT将下游NLP任务中完成的大量传统操作转移到预训练词向量中。在使用BERT获得单词向量之后,只需要向单词向量添加简单的MLP或线性分类器。例如,文中给出的几种任务类型:
对于左两个文本分类任务和文本匹配任务,只需要在获得的表示中添加一层MLP
一句话关系判断:
多里文本含义识别,QQP,QNLI,STS-B,MRPC,RTE,SWAG
B-分类任务:
SST-2,CoLA
对于左三图提取任务,使用两个线性分类器分别输出跨度的起点和终点
C——序列标记:
班
对于左侧四图序列标注任务,您只需要添加softmax输出图层
D——系列标签:
NER命名实体标识
四.运营成果
#贫穷限制了我的想象力。。
1.数据量和模型大小
数据:
BooksCropus和英文维基百科的数据总共有33亿字。
型号:
标准版的BERT模型有1亿个参数,等于GPT;大版本的BERT有3亿多个参数,应该是目前自然语言处理中最大的预训练模型。
培训费用:
一首歌用16个TPU集群训练了一个大版本的BERT,用了4天。至于预训能否复现,有一个笼统的回复,指出当时OpenAI训练GPT用了将近一个月的时间,而估计同样硬件条件下训练BERT需要一年的时间。但是,他们将开放训练模型和代码的源代码,以便于训练模型的后续任务。
2.操作结果
表1句子关系判断和分类任务
表2提取任务:小队
表3序列注释:命名实体识别
表4分类任务:SWAG
NLP生成任务中只剩下一条路径。。。。