Introduction
作者认为好的词表征模型应该同时兼顾两个问题:一是词语用法在语义和语法上的复杂特点;二是随着语言环境的改变,这些用法也应该随之改变。作者提出了deep contextualized word representation 方法来解决以上两个问题。通俗点解释就是一个词很有可能有多个意思,在不同的语义环境中可能有不同的用法,因此好的语言表征模型应该能有效地处理这些问题。
这种算法的特点是:每一个词语的语义表达都是整个输入语句的函数。我们地做法就是先在语料库上训练出双向LSTM模型(bidirectional LSTM),然后利用LSTM产生词语的表征。ELMO也是因此得名(Embeddings from Language Models)。为了应用在下游的自然语言处理任务中,一般先利用下游任务的语料库(注意这里忽略掉label)进行语言表征模型的微调,这种微调相当于一种domain transfer; 然后才利用label的信息进行监督学习(supervised learning)。ELMo表征是“深”的,就是说它们是biLSTM的所有层的内部表征的函数。这样做的好处是能够产生丰富的词语表征。后面层的LSTM的状态可以捕捉词语意义中和语境相关的那方面的特征(比如可以用来做语义的消歧),而前面层的LSTM可以找到语法方面的特征(比如可以做词性标注)。我们完全可以将前面层与后面层结合在一起使用,这样能够体现出优势。
Bidirectional language models
ELMO顾名思义是从语言表征模型得来的embeddings,确切的说是来自于Bidirectional language models。具体可以表示为:
和
这里的(t1,t2,…,tN)(t1,t2,…,tN)是一系列的tokens 作为语言模型可能有不同的表达方法,最经典的方法是利用多层的LSTM,ELMO的语言模型也采取了这种方式—-采用多层的双向LSTM来表示。
ELMO
具体来讲如何使用ElMo产生的表征呢?对于一个有监督的自然语言处理任务(supervised NLP),可以分以下三步:
- 产生预训练(pre-trained biLM)模型。模型由两层bi-LSTM组成,之间用残差连接(residual connection)连接起来。
- 在任务语料上(注意是语料,忽略label)fine tuning上一步得到的biLSTM模型。可以把这一步看为biLSTM的domain transfer。
- 利用ELMO的word embedding来对任务进行训练。通常的做法是把它们作为输入加入到已有的模型中,一般能够明显的提高原模型的表现。
印象中太深的NLP方面的模型基本没有,这和计算机视觉领域非常不一样。 当然这也是所解决问题的本质决定: Image的特征提取在人脑里就是从低阶到高阶的过程,深层网络有助于高级特征的实现。对于语言来讲很难定义这样的一个过程,这篇文章的两层biLSTM加residual connection的架构比较少见(Google的transformor是多层网络+residual connection一个例子)。文章认为低层和高层的LSTM功能有差异:低层能够提取语法方面的信息;高层擅于捕捉语义特征。
Evaluation and Analysis
效果
先看一下在QA,Textual entailment,Semanic role labeling, Coreference resolution, NER, 和 Sentiment analysis上的表现。
和state of art比基本上每个任务都有明显的改善。表中的OUR BASELINE在论文中有详细介绍,它指的是作者选定的某些已有的模型。ELMO+BASELINE指的是作者把ELMo的word representation作为输入提供给选定的模型。这样我们可以清楚的比较在使用和不使用ELMo词嵌入时的效果。
多层和最后一层
公式(1)用各层表征的叠加来代表相应位置的向量,作者在下表中比较了仅仅使用最后一层的效果。
显然多层的叠加效果好于仅使用最后的一层。
最后一列里的λλ代表的是网络参数regularization的大小。结果说明合适的regularization有好处。
存在于输入层和输出层
其实ELMo不仅可以作为下游模型的输入,也可以直接提供给下游模型的输出层。
上表说明有时候同时提供给下游模型的输入和输出层效果更好。
biLM捕捉到的词语信息
ELMO提高了模型的效果,这说明它产生的word vectors捕捉到其他的word vectors没有的信息。直觉上来讲,biLM一定能够根据context区别词语的用法。下表比较了Glove和biLM在play这个多义词上的解释。
显然biLM能够在表示词语嵌入时考虑到context的信息。
总结
ELMO在处理很多NLP下游任务中表现非常优异。但是我想这跟它集中在产生更好的词语级别的embedding是有关系的。ELMo只提供了word级别的解决方案:利用它的pretrained biLM来产生word embedding,然后提供给下游的模型。这里的模型往往是sequence model,其效果已经在相应的NLP任务上得到验证。这时有了新的兼具语法语义及环境特征的word embedding的加持,难怪效果会更好。更不要说,ELMO还在任务语料库上小心翼翼的再进行过一轮微调,更是保证了对新domain的adaptation。
补充
在BiLSTM模型中,我们将正序和反序的输出要进行拼接,正序输出和反序输出前需要有个权重,然后再进行拼接,这个权重是可以训练的。