(三)ELMO


ELMO

一、ELMO的基本原理

ELMO采用了典型的两阶段过程:

  • 第一个阶段是利用语言模型进行预训练
  • 第二个阶段是在做下游任务时,从预训练网络中提取对应单词的网络各层的Word Embedding作为新特征补充到下游任务中。(给与三个Embedding中的每一个Embedding一个权重a,这个权重可以学习得来,根据各自权重累加求和,将三个Embedding整合成一个,作为补充的新特征给下游任务使用)(Feature-based Pre-Training
    在这里插入图片描述
    ELMO的网络结构采用了双层双向LSTM,(残差结构是训练深层LSTM网络常用的结果,简单的做法就是将LSTM层的输入加到输出上)。

使用这个网络结构利用大量语料做语言模型任务就能预先训练好这个网络,训练好这个网络之后,输入一个新句子,句中每个单词都能得到对应的三个Embedding

  • 最底层的是单词的 Word Embedding
  • 往上走是第一层的双向LSTM中对应单词位置的Embedding,这层编码单词的句法信息更多一些(实验得出的结论)
  • 再往上走是第二层LSTM中对应单词位置的Embedding,这层编码单词的语义信息更多一些
    在这里插入图片描述

二、ELMO的训练过程是什么样的?损失函数是什么?

ELMO的预训练过程实际上指的是其第一阶段的预训练过程,第一阶段实际上就是在训练一个双向语言模型。
由于ELMO结合了前后向语言模型,故其目标是同时最大化前后向语言模型的对数似然。损失函数为简单的分类损失。

三、ELMO训练好之后如何使用?

ELMO训练好该如何使用指的是其第一阶段的预训练过程训练完毕,下游任务如何利用预训练好的Embedding(对于序列中的每个token,一个L层的双向语言模型就会得到其2L+1个表示
[需要注意的是,正向和反向LSTM网络共享token embedding的输入,源码中的token embedding、正向、反向LSTM的hidden state均为512维度,一个长度为n的句子,经过ELMO预训练网络,最后得到的embedding的维度为:(n,max_sentence_length,512)]

下游任务获取embedding
下游任务获取embedding

四、ELMO的优点是什么?ELMO为什么有效?

ELMO利用了深度上下文单词表征,该模型的优点:

  • 引入双向语言模型,其实是2个单向语言模型(前向和后向)的集成。
  • 通过保存预训练好的2层biLSTM,通过特征集成或finetune应用于下游任务。

总结来说,通过上述结构,ELMO能够达到区分多义词的效果,每个单词(token)不再是只有一个上下文无关的embedding表示。

那么ELMO为什么有效呢?

  • 首先,ELMO的假设前提是一个词的词向量不应该是固定的,所以在多义词区分方面ELMO的效果必然比word2vec要好。
  • 另外,ELMO通过语言模型生成的词向量是通过特定上下文的“传递”而来,而根据下游任务,对原本上下文无关的词向量以及上下文相关的词向量表示引入一个权重,这样既在原来的词向量中引入了上下文的信息,又能根据下游任务适时调整各部分的权重(权重是在网络中学习得来的),因此这也是ELMO有效的一个原因。

五、ELMO为什么能够达到区分多义词的效果?

在ELMO第一阶段训练完成之后,将句子输入模型中在线提取各层embedding的时候,每个单词(token)对应两边LSTM网络的对应节点,那两个节点得到的embedding是动态改变的,会受到上下文单词的影响,周围单词的上下文不同应该会强化某种语义,弱化其它语义,这样就达到区分多义词的效果了。

使用ELMO,根据上下文动态调整embedding。

六、ELMO把三种不同的向量叠加的意义是什么?这样做能达到什么样的效果?

因为通过ELMO模型,句子中每个单词都能得到对应的三个Embedding:

  • 最底层的是单词的Word Embedding
  • 往上走是第一层双向LSTM中对应单词位置的Embedding,这层编码单词的句法信息更多一些。
  • 再往上走是第二层LSTM对应单词位置的Embedding,这层编码单词的语义信息更多一些。

[需要注意的是,这里得到的结论是通过试验验证的,是在这样的模型设计中,能够得到上述结论,可能不同的模型结构,得到的结论又是不一样的]

ELMO把三种不同的向量叠加的意义主要体现在以下两个点:

  • 一是之前很多方法都只用了最顶层LSTM的hidden state ,但是通过实验验证,在很多任务中,将每一层的hidden state融合在一起会取得更好的效果。
  • 二是在上述实验中得到结论,每一层LSTM得到单词的embedding所蕴含的信息是不一样的,因此将所有信息融合起来,会让单词embedding的表达更丰富。
发布了58 篇原创文章 · 获赞 17 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Miracle_520/article/details/105344494