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,往上走是第