原文出自彼得攀的小站
Deep contextualized word representations 获得了NAACL 2018的outstanding paper award,其方法有很大的启发意义,本文则是对其做了一个简要梳理。
Motivation
- 预训练的word representation在NLP任务中表现出了很好的性能,已经是很多NLP任务不可或缺的一部分,论文作者认为一个好的word representation需要能建模以下两部分信息:
- 单词的特征,如语义,语法
- 单词在不同语境下的变化,即一词多义
- 之前很多工作的word representation是固定的,如word2vec/glove等word representation对于一个词,其向量是固定的,无法很好的处理一词多义的情况
Introduction
基于上述原因,论文作者提出了Deep contextualized word representation来解决这个问题,算法大致过程如下:
- 在大规模语料中利用bidirectional LSTM模型训练语言模型(language model),ELMo(Embedding from language model)也由此得名
- 为了应用到下游任务,利用下游任务的语料库(无需label)对预训练的语言模型进行微调,然后再利用下游任务有标注的数据进行supervised learning
简单来说,ELMo模型是从深层的双向语言模型(deep bidirectional language model)中的内部状态(internal state)学习而来的
相较于之前的工作,ELMo的特点有:
- Embedding是“deep"的,这体现在ELMo是biLM(bi-Language model)内部所有层的综合,这样可以有充分的信息来建模word representation:
- Higher-level LSTM states可以捕获上下文相关的语义信息,不用修改就可以用来做词义消歧
- Lower-level LSTMstates 可以捕获语法相关的信息,可以用作词性标注任务
ELMo综合了上述信息,而之前的工作只利用了top LSTM layer的信息
- 其词向量是动态的,即根据当前上下文环境来产生当前词向量,而不是一个固定的外部词向量
Bidirectional language model
语言模型的双向体现在对句子的建模:给定一个 N N N个token的句子, ( t 1 , t 2 , … , t N ) \left(t_{1}, t_{2}, \ldots, t_{N}\right) (t1,t2,…,tN)
- 前向语言模型:从历史信息预测下一个词,即从给定的历史信息 ( t 1 , … , t k − 1 ) \left(t_{1}, \ldots, t_{k-1}\right) (t1,…,tk−1)建模下一个token t k t_k tk的概率
p ( t 1 , t 2 , … , t N ) = ∏ k = 1 N p ( t k ∣ t 1 , t 2 , … , t k − 1 ) p\left(t_{1}, t_{2}, \ldots, t_{N}\right)=\prod_{k=1}^{N} p\left(t_{k} | t_{1}, t_{2}, \ldots, t_{k-1}\right) p(t1,t2,…,tN)=k=1∏Np(tk∣t1,t2,…,tk−1)
对于一个L层的LSTM,设其输入是 x k L M x_k^{LM} xkLM (token embedding),每一层都会输出一个context-dependent representation h → k , j L M \overrightarrow \mathbf{h}_{k, j}^{L M} hk,jLM,LSTM的最后一层输出为 h → k , L L M \overrightarrow \mathbf{h}_{k, L}^{L M} hk,LLM,该输出会在Softmax layer被用来预测下一个token t k + 1 t_{k+1} t