深入浅出话表示学习:从Word2vec到Elmo,再到GPT,最后到BERT

首先,具体介绍各个模型特点之前,先从感性层面认识一下,这些模型到底在做什么:Word2vec是该领域从无到有的一个突破,后面所有厉害的模型都是在丰富完善表示学习这种方法。所以这里用Word2vec说明:比如用向量表示‘篮球’这个词,假定向量维度是256维,每一维表示不同的属性,随便说一下:第一维表示这个词有没有生命,第二维表示这个词有几条腿,第三维表示这个词跟体育相不相关,第四维表示这个词的感情色彩是积极还是消极,第五维表示这个词吧啦吧啦……,……。可以发现向量维度越高,对词刻画的越饱满,包含的信息也就越多(但是解释性就没那么强了,我们不能拿一个训练好的模型说出词向量的每个维度代表什么属性,但大量研究证明该方法确实有效,这也是深度学习被称为黑盒子的原因了)。

接下来,分别介绍各个模型的优缺点及其改进。

Word2vec:开疆拓土的伟型(模型)

在Word2vec被提出之前,自然语言处理领域底层对字符串的表示多是用one-hot向量表示:就是字典总共有多少词,每个词的向量除了其所在位置为1外,其它位置都是0,这种表示方法会随着字典容量的扩大对上层的处理任务造成维度灾难,然而,随着超算和云计算的发展,这还不是最主要的问题,制约该模型性能上限的因素是不能计算词语间的相关性,但自然语言中又有很多相似或相关的词,比如“开心”和“高兴”肯定比“开心”和“衬衫”距离要近,而用one-hot方法表示的任意两个的点积都是零。所以Word2vec,应运而生,该模型解决了one-hot的两个问题:(1)将高维向量映射到低维向量中,方便后续处理;(2)放弃稀疏的表示方法以满足词语间的相关性计算。至于模型的具体结构和如何训练,限于篇幅,这里不再展开来讲。

看上去皆大欢喜,Word2vec好像很完美,其实不然。虽然Word2vec解决了one-hot的两个问题,但是其自身也存在缺陷,也是自然语言处理领域的老大难问题:歧义,比如‘苹果’一词,在不同场景中有不同的含义,而通过Word2vec方法表示的词向量则忽略了这层信息,也就是没有考虑上下文。

老规矩,为了解决Word2vec的确定,elmo出现了。

Elmo:站在Word2vec肩膀上的伟型(模型)

​ Elmo全称是“Embedding from Language Models”,但是这个名字并没有反应它的本质思想,提出Elmo的论文题目:“Deep contextualized word representation”更能体现其精髓,即deep contextualized这个短语,一个是deep,一个是context,其中context更关键,也就是比Word2vec多考虑了当前编码词的上下文。虽然该模型提取特征时用的网络是LSTM,还是双层双向的,比原始的RNN效果好很多,但该模型提出的时候,已经有研究证明Transformer比LSTM在提取特征方面更有优势,可能是Elmo的作者故意留给后人的改进空间。而抓住这个改进空间的人就是GPT的提出者。

GPT:捡漏的伟型(模型)

​ GPT是“Generative Pre-Training”的简称,从名字看其含义是指的生成式的预训练。该模型直接使用Transformer作为特征提取网络,性能比Elmo提高了不少,但不知是否为了致敬Elmo的研发团队,GPT将Elmo模型中双向的LSTM改成了单向的Transformer,也就是只用当前处理词之前的词语来编码该词,明显损失了大量的该词之后的信息,也就给了Google团队一展身手的机会。

BERT:集大成的伟型(模型)

BERT模型全称是Bidirectional Encoder Representation from Transformers,从名称上就可以看出BERT是集大成者:基于Transformer的双向表示方法,所以有人指出BERT在模型结构上创新不足,只是训练方式比较讨巧,不管怎么说,有效果才是硬道理,从BERT刷新11项nlp任务的记录来看,所有的赞誉都是应得的,而且,BERT把好多具体下游的nlp任务移到训练阶段处理。

前面提了那么多次的Transformer,也是限于篇幅的原因,没法展开来说,只能从结构上简单介绍一下:

Transformer的核心是attention机制,就是在编码当前词时充分考虑上下文的信息,前面也提到了Elmo也考虑了上下文的信息(虽然在具体操作中可能会看到当前词),但attention机制的独到之处是为不同的上下文分配不同的权重,比如:The animal didn’t cross the street because it was too tired,我们可以容易知道句子中的‘it’是指代animal,但网络不容易发现,不管是传统的RNN还是LSTM都是平等对待上下文,而attention会给animal分配较高的权重。在实际实现中,Transformer又提出了self-attention(跟attention几乎相同)和muti-head attention,就是用多组权重参数来优化上下文对当前词的影响,此外,除了在encode和decode加入attention机制外,训练过程中,decode在每个时间步中还有单独一个attention是从encode输入,帮助当前词获取到当前需要关注的重点内容。

你可能感兴趣的:(深入浅出话表示学习:从Word2vec到Elmo,再到GPT,最后到BERT)