前言
同学们好,欢迎来到本专栏学习。本节我们将介绍一种新的词嵌入(Word Embedding)方法——ELMO。关于词嵌入,相信读过前面章节的同学都不会陌生,其实就是将词进行向量化表示,实体的抽象成了数学描述,就可以进行建模,应用到很多任务中。之前我们也介绍过一些做词嵌入的方法,譬如Word2vec。在很多篇文章中,我都提到过Word2vec,没错,基本上所有NLP任务的第一步都是需要做词嵌入的。还是那句老话,计算机只认数字不认文字。使用Word2Vec,通过做语言模型任务,就可以获得每个单词的词向量,但是这样的词向量无法解决多义词的问题,同一个词在不同的上下文中表示不同的意思,但是词向量都是同一个表示,这导致两种不同的上下文信息都会编码到相同的word embedding空间里去。那么如何根据句子上下文来进行单词的Word Embedding表示呢?本节的主角ELMO正正给我们提供了解决方案。
ELMO原理介绍
1、ELMO是什么?
在2018年之前,词向量的表示方法主要还是采用Word2vec的方案,采用一个固定维度的向量来表征每个词汇或字符。正如前言所说,这样的方法虽然简单,但并没有考虑到词汇在不同语境的信息。比如,“小米”这个词,在一些场景下的语义是粮食,在另外一些场景中的语义是公司。因此,在2018年发表的一篇论文《Deep contextualized word representations》中,作者提出了一个很重要的思想——“Embedding from Language Models”(ELMO)。作者认为,每个词汇的词向量不应该是一个固定的值,而是要根据不同语境来动态表示的。譬如,“小米”这个词在食物的语境中可能是[0,1,0,1],在公司的语境中的表示可能是[1,0,1,0]。作者的思路是先训练一个完整的语言模型,再用这个语言模型去处理需要训练的文本,生成相应的词向量,这样出来的词向量在不同的语言环境中就可以动态变化,而不是硬邦邦的固定值。所以ELMO本身是个根据当前上下文对Word Embedding动态调整的思路。
2、ELMO模型结构
还记得我们在讲解Word2vec的时候讲到,训练词向量的方法就是训练一个语言模型,通过CBOW或者Skip-gram等方式去预测句子中的词。其实,ELMO的方式是一样的,即给定的一个句子(t1,t2,...,tn),我们构建的语言模型就是通过一个词汇的上下文去,预测一个词tk。不同的是,Word2vec采用的是简单的单层全连接网络,而ELMO则使用了更为复杂的双向LSTM网络。

如上图所示,ELMO使用的是一个双向的LSTM语言模型(虚线框的两个部分),由一个前向和一个后向语言模型构成。这种模型被称之为双向语言模型,即biLM。值得注意的是,图中每个虚线框的内部是有多层的,这表明无论是前向还是后向的语言模型都是由多层的lstm组成的,这也是EMLO的一大创新之一,这个层数可是两层也有可能是多层,但是最后对概率进行预测是利用最后一层LSTM每个时间步的隐藏状态向量进行预测的。这个语言模型训练的任务是根据单词Wi的上下文去正确预测单词Wi ,Wi之前的单词序列Context-before称为上文,之后的单词序列Context-after称为下文。图中左端的前向双层LSTM代表正方向编码器,输入的是从左到右顺序的除了预测单词外Wi 的上文Context-before;右端的逆向双层LSTM代表反方向编码器,输入的是从右到左的逆序的句子下文Context-after;每个编码器的深度都是两层LSTM叠加。
接下来,我们只要通过大量的语料做语言模型任务就能预先训练好这个网络。在训练完成之后,我们就可以测试一下新句子的词向量表达了。输入一个新句子S,在通过网络后,句子中的每个单词都能得到对应的三个Embedding,如上图右侧所示,第一个E1表示的是单词的特征,往上走一层到了E2表示的是句法特征,最后一层输出的E3表示的是单词的语义特征。通过这样的训练,ELMO不仅学会了单词的动态词向量,还学会了一个双向LSTM结构的语言模型。
3、ELMO词向量的使用
上面我们讲解了ELMO的模型结构以及预训练,那么该怎么接入下游的NLP任务进行使用呢?我们知道,句子的单词通过ELMO模型最终会得到三个向量表示。这么多的的向量我们该如何接入呢?这个也是很好解决的,我们可以分别给与这三个向量不同的权重,这个权重可以学习得来,然后根据各自的权重累加求和,将三个向量整合成一个向量。这样就跟我们平常使用的词向量并无区别了。
小结
本节主要介绍了词嵌入的新方法。ELMO的诞生使得词向量不再是一个硬邦邦的固定值,而是可以根据语境和语法不停地动态变化,解决了一词多义的问题,这样模型对比于Word2vec有极大的改进。此外,ELMo还有一个优势,就是它建立语言模型的时候,可以运用非任务的超大语料库去学习,一旦学习好了,可以平行的运用到相似问题。本节到此结束,如你对本节内容有疑问,欢迎到讨论区和我互动。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69954080/viewspace-3163875/ ,如需转载,请注明出处,否则将追究法律责任。