[2018] ELMo 模型
参考:[论文] DEEP CONTEXTUALIZED WORD REPRESENTATIONS [g6v5]
[知乎] NAACL2018:高级词向量(ELMo)详解(超详细) 经典
[文章] 从Word Embedding到Bert模型——自然语言处理预训练技术发展史
ELMo全称Embeddings from Language Models,是一个双向语言模型。在ELMo出现之前,词嵌入模型的缺点是对于每一个单词都有唯一的一个词向量表示。然而对于同一个单词的含义,其实有一定程度上是与上下文相关的,同一个单词可能在不同的语境下会展现不同的含义。对于“多义词”来说,只使用一个词向量显然不符合直觉。
ELMo的做法是只预训练language model,而词向量是通过输入的句子实时输出的, 这样词向量的含义就是上下文相关的了,在很大程度上缓解了歧义的发生。
1.ELMo的结构
ELMO 采用了典型的两阶段过程:
- 第一个阶段是利用语言模型进行预训练
- 第二个阶段是在做下游任务时,从预训练网络中提取对应单词的网络各层的 Word Embedding 作为新特征补充到下游任务中。
上图展示的是其预训练过程,它的网络结构采用了双层双向 LSTM,目前语言模型训练的任务目标是根据单词的上下文去正确预测单词,之前的单词序列 Context-before 称为上文,之后的单词序列 Context-after 称为下文。
图中左端的前向双层LSTM代表正方向编码器,输入的是从左到右顺序的除了预测单词外的上文 Context-before;
右端的逆向双层 LSTM 代表反方向编码器,输入的是从右到左的逆序的句子下文 Context-after;
每个编码器的深度都是两层 LSTM 叠加。这个网络结构其实在 NLP 中是很常用的。
使用这个网络结构利用大量语料做语言模型任务就能预先训练好这个网络,如果训练好这个网络后,输入一个新句子,句子中每个单词都能得到对应的三个Embedding:
- 最底层是单词的 Wrd Embedding
- 往上走是第一层双向 LSTM中对应单词位置的 Embedding,这层编码单词的句法信息更多一些;
- 再往上走是第二层 LSTM 中对应单词位置的 Embedding,这层编码单词的语义信息更多一些。
也就是说,ELMO 的预训练过程不仅仅学会单词的 Word Embedding,还学会了一个双层双向的 LSTM 网络结构,而这两者后面都有用。
2.ELMo的使用
上面介绍的是ELMo的第一阶段:预训练阶段。
那么预训练好网络结构后,如何给下游任务使用呢?
下图展示了下游任务的使用过程,比如我们的下游任务仍然是 QA 问题,此时对于问句 X,我们可以先将句子 X 作为预训练好的ELMo网络的输入,这样句子 X 中每个单词在ELMo网络中都能获得对应的三个 Embedding,之后给予这三个 Embedding 中的每一个 Embedding 一个权重 a,这个权重可以学习得来,根据各自权重累加求和,将三个 Embedding 整合成一个。
然后将整合后的这个 Embedding 作为 X 句在自己任务的那个网络结构中对应单词的输入,以此作为补充的新特征给下游任务使用。对于上图所示下游任务 QA 中的回答句子 Y 来说也是如此处理。
因为 ELMo给下游提供的是每个单词的特征形式,所以这一类预训练的方法被称为Feature-based Pre-Training。
在这里插入图片描述
3. ELMo 评价
优点
(1)对于 Glove 训练出的 Word Embedding 来说,多义词比如 play,根据它的 embedding 找出的最接近的其它单词大多数集中在体育领域,这很明显是因为训练数据中包含 play 的句子中体育领域的数量明显占优导致;而使用 ELMO,根据上下文动态调整后的 embedding 不仅能够找出对应的「演出」的相同语义的句子,而且还可以保证找出的句子中的 play 对应的词性也是相同的,这是超出期待之处。之所以会这样,是因为我们上面提到过,第一层 LSTM 编码了很多句法信息,这在这里起到了重要作用;
(2)见下图,ELMo在6 个 NLP 任务中性能都有幅度不同的提升,最高的提升达到 25% 左右,而且这 6 个任务的覆盖范围比较广,包含句子语义关系判断,分类任务,阅读理解等多个领域,这说明其适用范围是非常广的,普适性强,这是一个非常好的优点。
在这里插入图片描述
局限性
一个非常明显的缺点在特征抽取器选择方面:ELMo使用了 LSTM 而不是Transformer,很多研究已经证明了 Transformer 提取特征的能力是要远强于 LSTM 的。