【NLP】ELMO

一、含义:

1、ELMO的本质思想:
先用语言模型学好一个单词的Word Embedding,此时多义词无法区分。接下来在实际使用Word Embedding的时候,单词已经具备了特定的上下文了,这个时候可以根据上下文单词的语义去调整单词的Word Embedding表示,这样经过调整后的Word Embedding更能表达在这个上下文中的具体含义,自然也就解决了多义词的问题了。
2、ELMO的优点
根据当前上下文对Word Embedding动态调整的思路,使得单词在不同语义中有不同的Word Embedding,决解了多义词问题。之前学习的词袋模型、Word2Vec的Word Embedding本质上静态的方式,所谓静态指的是训练好之后每个单词的表达就固定住了。无法根据语义对多义词进行分辨。

二、基本原理

ELMO采用了典型的两阶段过程,第一个阶段是利用语言模型进行预训练;第二个阶段是在做下游任务时,从预训练网络中提取对应单词的网络各层的Word Embedding作为新特征补充到下游任务中。

1、预训练过程:
它的网络结构采用了双层双向LSTM,目前语言模型训练的任务目标是根据单词 W i W_i 的上下文去正确预测单词 W i W_i W i W_i 之前的单词序列Context-before称为上文,之后的单词序列Context-after称为下文。图中左端的前向双层LSTM代表正方向编码器,输入的是从左到右顺序的除了预测单词外 W i W_i 的上文Context-before;右端的逆向双层LSTM代表反方向编码器,输入的是从右到左的逆序的句子下文Context-after;每个编码器的深度都是两层LSTM叠加。这个网络结构其实在NLP中是很常用的。
使用这个网络结构利用大量语料做语言模型任务就能预先训练好这个网络,如果训练好这个网络后,输入一个新句子 Snew ,句子中每个单词都能得到对应的三个Embedding:最底层是单词的Word Embedding,往上走是第一层双向LSTM中对应单词位置的Embedding,这层编码单词的句法信息更多一些;再往上走是第二层LSTM中对应单词位置的Embedding,这层编码单词的语义信息更多一些。也就是说,ELMO的预训练过程不仅仅学会单词的Word Embedding,还学会了一个双层双向的LSTM网络结构,而这两者后面都有用。
在这里插入图片描述
2、做下游任务:
下图展示了下游任务的使用过程,比如我们的下游任务仍然是QA问题。
(1)将问句X作为预训练好的ELMO网络的输入
(2)经过与训练过程,句子X中每个单词在ELMO网络中都能获得对应的三个Embedding
(3)之后给予这三个Embedding中的每一个Embedding一个权重a,这个权重可以学习得来,根据各自权重累加求和,将三个Embedding整合成一个。
(4)然后将整合后的这个Embedding作为X句在自己任务的那个网络结构中对应单词的输入,以此作为补充的新特征给下游任务使用。
对于下图所示下游任务QA中的回答句子Y来说也是如此处理。因为ELMO给下游提供的是每个单词的特征形式,所以这一类预训练的方法被称为“Feature-based Pre-Training”。
在这里插入图片描述 参考文献: 网易云课堂NLP课程:文本表示:词向量的构建与分布表示