文章目录
论文地址:https://arxiv.org/pdf/1802.05365.pdf
简介
~~~~~~~~ 作者认为好的词表征模型应该同时兼顾两个问题:一是词语用法在语义和语法上的复杂特点;二是随着语言环境的改变,这些用法也应该随之改变。作者提出了deep contextualized word representation 方法来解决以上两个问题。
~~~~~~~~ 这种算法的特点是:每一个词语的表征都是整个输入语句的函数。具体做法就是先在大语料上以language model为目标训练出bidirectional LSTM模型,然后利用LSTM产生词语的表征。ELMo故而得名(Embeddings from Language Models)。为了应用在下游的NLP任务中,一般先利用下游任务的语料库(注意这里忽略掉label)进行language model的微调,这种微调相当于一种domain transfer; 然后才利用label的信息进行supervised learning。
~~~~~~~~ ELMo表征是“深”的,就是说它们是biLM的所有层的内部表征的函数。这样做的好处是能够产生丰富的词语表征。高层的LSTM的状态可以捕捉词语意义中和语境相关的那方面的特征(比如可以用来做语义的消歧),而低层的LSTM可以找到语法方面的特征(比如可以做词性标注)。如果把它们结合在一起,在下游的NLP任务中会体现优势。
Bidirectional 语言模型
(1) forward language model(前向语言模型) and (2)backword language model
ELMo顾名思义是从Language Models得来的embeddings,确切的说是来自于Bidirectional language models。具体可以表示为:
~~~~~~~~
简单来说,ELMo模型以双向语言模型为基础
,用各层之间
的线性组合
来表示词向量的一种方式。下文中会详细介绍什么是双向语言模型和为什么以及如何进行线性组合。
(2)biLM(bidirectional language model)
biLM则是整合了上面的两种语言模型,目标函数为最大化下面的log似然函数:
具体来讲如何使用ElMo产生的表征呢?对于一个supervised NLP任务,可以分以下三步:
(1)、产生pre-trained biLM模型。模型由
两层bi-LSTM
组成,之间用residual connection连接起来。
(2)、在任务语料上(注意是语料,忽略label)fine tuning上一步得到的biLM模型。可以把这一步看为biLM的domain transfer。
(3)、利用ELMo的word embedding
来对任务进行训练。通常的做法是把它们作为输入加到已有的模型中,一般能够明显的提高原模型的表现。
~~~~~~~~ 印象中太深的NLP方面的模型基本没有,这和Computer Vision领域非常不一样。 当然这也是所解决问题的本质决定: Image的特征提取在人脑里就是从低阶到高阶的过程,深层网络有助于高级特征的实现。对于语言来讲很难定义这样的一个过程,这篇文章的两层biLM加residual connection的架构比较少见(Google的transformor是多层网络+residual connection一个例子)。文章认为低层和高层的LSTM功能有差异:低层能够提取语法方面的信息;高层擅于捕捉语义特征。
过程图
线性组合
(1)哪些是需要线性组合的
对于循环神经网络,每一层都是有输出的(上文的h向量)。我们要线性组合是就是上述的所有h向量。
(2)为什么要线性组合
文中提到:高层的h更加容易捕捉独立与文章的词义信息(the higher level LSTM states capture context-depend aspects of word meaning),底层的h更容易捕捉语法信息(while lower level states model aspects of syntax)。也就是说,不同层次的输出所对应的特征不一样,组合起来更能表达整个意思。
(3)如何线性组合。
其中s为权重,计算方法:softmax normalized。γbiao表示整个权重。
总结
~~~~~~~~
ELMo在处理很多NLP下游任务中表现非常优异。但是我想这跟它集中在产生更好的词语级别的embedding是有关系的。过去介绍到的一些其他的算法,比如Quick thoughts也是利用了语言模型作为句子的encoder;还有InferSent使用biLSTM作为encoder。和ELMo相比,它们都显得“野心”太大:它们为下游的NLP任务提供了句子embedding的解决方案:即直接利用它们的pretrained encoder,最终的预测无非是加上softmax的classifier。
对比而言ELMo要单纯很多,它只提供了word级别的解决方案:利用它的pretrained biLM来产生word embedding,然后提供给下游的模型。这里的模型往往是sequence model,其效果已经在相应的NLP任务上得到验证。这时有了新的兼具语法语义及环境特征的word embedding的加持,难怪效果会更好。更不要说,ELMo还在任务语料库上小心翼翼的再进行过一轮微调,更是保证了对新domain的adaptation。