ELMO 本身是个根据当前上下文对 Word Embedding 动态调整的思路
ELMO 采用了典型的两阶段过程,第一阶段是利用语言模型进行预训练;第二阶段是在做下游任务时,从预训练网络中提取对应单词的网络各层的
Word Embedding 作为新特征补充到下游任务中。 上图展示的是其预训练过程,它的网络结构采用了双层双向
LSTM,目前语言模型训练的任务目标是根据单词W的上下文去正确预测单词W, W之前的单词序列 Context-before
称为上文,之后的单词序列 Context-after
称为下文。图中左端的前向双层LSTM代表正方向编码器,输入的是从左到右顺序的除了预测单词W外的上文
Context-before;右端的逆向双层 LSTM 代表反方向编码器,输入的是从右到左的逆序的句子下文
Context-after;每个编码器的深度都是两层 LSTM 叠加。这个网络结构其实在 NLP 中是很常用的。
使用这个网络结构利用大量语料做语言模型任务就能预先训练好这个网络,如果训练好这个网络后,输入一个新句子Snew,句子中每个单词都能得到对应的三个Embedding:最底层是单词的
Word Embedding,往上走是第一层双向LSTM中对应单词位置的
Embedding,这层编码单词的句法信息更多一些;再往上走是第二层LSTM中对应单词位置的
Embedding,这层编码单词的语义信息更多一些。也就是说,ELMO 的预训练过程不仅仅学会单词的 Word
Embedding,还学会了一个双层双向的LSTM网络结构,而这两者后面都有用。
下游任务使用
我们可以先将句子X作为预训练好的ELMO网络的输入,这样句子X中每个单词在ELMO网络中都能获得对应的三个Embedding,之后给予这三个Embedding
中的每一个Embedding一个权重a,这个权重可以学习得来,根据各自权重累加求和,将三个Embedding整合成一个。
然后将整合后的这个Embedding作为X句在自己任务的那个网络结构中对应单词的输入,以此作为补充的新特征给下游任务使用
ELMo模型的优缺点
优点:
(1)效果好,在大部分任务上都较传统模型有提升。实验证实ELMo相比于词向量,可以更好地捕捉到语法和语义层面的信息
(2) 传统的预训练词向量只能提供一层表征,而且词汇量受到限制。ELMo所提供的是character-level的表征,对词汇量没有限制
缺点:
速度较慢,对每个token编码都要通过language model计算得出
Transformer 提取特征的能力是要远强于LSTM