ELMo:深度上下文化的单词表示——论文阅读

简介

2018年3月份,ELMo出世,该paper是NAACL18 Best Paper。词向量在目前NLP技术发展和应用中具有重要作用,高质量的词向量对下游任务的效果至关重要。在之前2013年的word2vec及2014年的GloVe的工作中,每个词对应一个vector,对于多义词无能为力。但现实场景中,同样的词在不同语境中往往表达不同的含义。ELMo的工作对于此,提出了一个较好的解决方案。不同于以往的一个词对应一个向量,是固定的。在ELMo世界里,预训练好的模型不再只是向量对应关系,而是一个训练好的模型。使用时,将一句话或一段话输入模型,模型会根据上线文来推断每个词对应的词向量。这样做之后明显的好处之一就是对于多义词,可以结合前后语境对多义词进行理解。比如apple,可以根据前后文语境理解为公司或水果。
作者引进一种新型的深层语境词表示模型——ELMo(Embeddings from Language Models)模型,从缩写就可以看出模型本质是从语言模型而来的,它是一种动态的、语境化的词向量表示方法,可以根据上下文语境来生成相应词的向量表示。ELMo通过深度双向语言模型(biLM)进行训练,主要解决了两个问题:
(1) 学习词汇用法的复杂特性,如语法和语义;
(2) 学习词汇不同语境下的,一词多义性。

ELMo词向量表示理念
与传统词向量用固定向量的表示不同,ELMo是一种动态词向量表示方法,其最终训练得到一个语言模型。当需要文本s中某个词w的词向量表示时,ELMo通过将s作为输入,得到文本的向量表示,继而获得词w在文本s语境下的词向量表示。
ELMo模型从大规模语料上训练得到的深度双向语言模型(deep biLM)的内部状态学习得到,因此,ELMo的词向量表示是深度的,是biLM内部各层状态的线性组合,而非仅仅取LSTM的最后一层。
ELMo理念的物理意义
ELMo认为,通过联合biLM的各层内部状态来表示词向量可以表达词语更为丰富的信息,模型
底层隐状态表达
词语的语法信息(eg:适用于词性标注任务),而上层隐状态则捕捉了词语的语义信息(eg:适用于词义消歧任务)。
大量实验证明,ELMo在多种NLP任务中都获得极好的效果;另外,前人的工作以及论文最后对ELMo与GoVe的分析则证明,词向量的深度表示比仅利用LSTM的最后一层的效果更好
要点:
 这个词向量是一个深度双向语言模型(biLM)内部状态的学习函数
 暴露预训练网络的深层内部是至关重要的,允许下游模型混合不同类型的半监督信号。

相关工作:

针对传统词向量是固定的,与上下文语境无关的缺点,先前的工作多通过两种方式来解决:
(1) 通过引入字符级(subword)信息丰富词向量表达;
(2) 学习每个单词不同含义的独立向量;
ELMo也利用了字符卷积(Character-Convolutions)引入字符级信息,并同时结合了深度双向语言模型的各层隐状态来丰富词向量表达。

双向语言模型:

给定N个tokens (t_1,t_2,…,t_N), language model通过给定前面的k-1个位置的token序列计算第k个token的出现的概率:
在这里插入图片描述
后向的计算方法与前向相似:
在这里插入图片描述
ELMo使用的双向lstm语言模型,论文中简称biLM。作者将公式(1)和公式(2)的结合起来,得到所要优化的目标:最大化对数前向和后向的似然概率:
在这里插入图片描述
在这里插入图片描述
两个网络里都出现了Θ_x和Θ_s,表示两个网络共享的参数。其中Θ_x表示映射层的共享,即将单词映射为word embedding的共享,就是说同一个单词,映射为同一个word embedding。Θ_s表示上下文矩阵的参数,这个参数在前向和后向lstm中是相同的。
在这里插入图片描述
ELMo对于每个token t_k, 通过一个L层的biLM计算出2L+1个表示:
在这里插入图片描述
其中在这里插入图片描述是对token进行直接编码的结果(这里是字符通过CNN编码), 在这里插入图片描述是每个biLSTM层输出的结果. 在实验中还发现不同层的biLM的输出的token表示对于不同的任务效果不同。
应用中将ELMo中所有层的输出R_k压缩为单个向量ELMo_k=E(R_k,Θ_ϵ), 最简单的压缩方法是取最上层的结果做为token的表示: E(R_k) = h_(k,L)^LM,更通用的做法是通过一些参数来联合所有层的信息:
在这里插入图片描述
其中s_j^task是softmax规范化权重, 标量参数(scalar parameter) γ^task允许任务模型缩放整个ELMo向量。论文中说缩小γ的值(在SQuAD中取0.01)会有好的效果。
文章中提到的Pre-trained的language model是用了两层的biLM, 对token进行上下文无关的编码是通过CNN对字符进行编码, 然后将三层的输出scale到1024维, 最后对每个token输出3个1024维的向量表示.

使用biLMs完成有监督的NLP任务:

  1. 许多supervised的nlp models在最底层共享一个公共架构,这允许我们以一致的、统一的方式添加ELMo。
  2. 将ELMo添加到监督模型:
    1). 将biLM的权重固定
    2). 将 在这里插入图片描述与x_k串联,形成增强表示[x_k;ELMo_k^task]并添加到RNN。对于一些任务(如SNLI,SQuAD),通过引入了另一组输出的线性权值,将h_k替换为:在这里插入图片描述,这样可以observe further improvements

对于一些任务(如SNLI,SQuAD),通过引入了另一组输出的线性权值,将h_k替换为:[h_k; ELMo_k^task],这样可以observe further improvements
监督模型的其余部分保持不变,这些增加的部分可以在更复杂的神经模型中发生。例如:biLSTMs + bi-attention layer,或者指代消解实验中放在biLSTM之上的聚类模型
3. 在ELMo中加入适量的dropout是有益的
一些情况下添加在这里插入图片描述到loss中来规范ELMo中的权重。
这对ELMo权重施加了一个归纳偏差,使其接近于所有biLM层的平均值。

预先训练的双向语言模型架构:

这篇论文的pre-trained biLMs支持两个方向上的联合训练,并且在LSTM层之间添加了residual connection。
 CNN-BIG-LSTM 模型,减去了一半的embedding 和 hidden dimensions.
 biLSTM layers with 4096 units and 512 dimension projections
 第一层到第二层之间用residual connection
 context insensitive type representation使用2048个字符的n-gram卷积过滤器
 然后2个highway layers
一个向下延伸到512个表示的线性投影
 training for 10 epochs(with the backward value slightly lower.)
因此,biLM为每个输入字符提供了三层表示,包括那些纯字符输入而不在训练集中的表示。(相比之下,传统的单词嵌入方法只为固定词汇表中的字符提供了一层表示)

评价
问题回答
文本蕴涵
语义角色标注
Coreference resolution
命名实体提取
情感分析
在这里插入图片描述
简单地在NLP6个不同基础任务中最新的模型中加入ELMo创造出了最新最好的性能。

分析

1 Alternate layer weighting schemes

对于结合biLM层,方程(5)有许多备选方案。正则化参数的选择也很重要,因为像λ = 1这样的大值有效地减少了权重函数在层上的简单平均值,而较小的值(如λ = 0.001)允许层权重变化。
包含来自所有层的表示比仅使用最后一层更能提高整体性能,包括来自最后一层的上下文表示比基线更能提高性能。A small λ is preferred in most cases with ELMo。

2 Where to include ELMo?

本文中所有的任务体系结构都只将单词嵌入作为biRNN的最底层输入。然而,我们发现,在任务特定的体系结构中,在biRNN的输出中包含ELMo可以改善某些任务的总体结果。

在这里插入图片描述
我们发现,在任务特定的体系结构中,在biRNN的输出中包含ELMo可以改善某些任务的总体结果。如上表所示,在SNLI和SQuAD的输入和输出层都包含ELMo,这比仅仅输入层有所提高,但是对于SRL来说,当只包含在输入层时,性能是最高的。这一结果的一个可能的解释是,SNLI和SQuAD架构在biRNN之后都使用了注意力层,因此在该层引入ELMo可以让模型直接关注biLM的内部表示。在SRL的情况下,任务特定的上下文表示可能比来自biLM的上下文表示更重要。

3 What information is captured by the biLM’s representations?

在这里插入图片描述
上表的顶部列出了使用GloVe向量“play”的最近邻居。它们分布在不同的词性中(例如,“playing”,“played”作为动词,“player”,“game”作为名词),但集中在与体育运动相关的“play”。相反,下面两行显示了来自SemCor数据集的最邻近的句子,使用源句子中biLM的上下文表示“play”。
在这些情况下,biLM能够消除源句中词性歧义和词义歧义。

4 Sample efficiency

将ELMo添加到模型中,无论是为了达到最新性能的参数更新次数,还是整个训练集的大小,都大大提高了采样效率。
在这里插入图片描述
与没有ELMo的模型相比,增强了ELMo的模型更有效地使用了较小的训练集。如上图看出,ELMo的改进最大程度地适用于较小的训练集,并显着减少了达到给定性能水平所需的训练数据量。在SRL情况下,训练集为1%的ELMo模型的F1与训练集为10%的基线模型的F1大致相同。

5 Visualization of learned weights

在这里插入图片描述
上图展示了softmax归一化学习层权重。在输入层,任务模型倾向于第一个biLSTM层。对于coreference和SQuAD,这是非常受欢迎的,但是对于其他任务的分布不是高峰。输出层权重相对平衡,稍微偏向较低的层。
ELMo使用方法总结及效果展示:
对于预训练好的双向lstm语言模型,我们可以送入一段话,然后模型会得到公式(4),然后我们加上一定的权重(可训练)即可得到图(5)的ELMo向量。最终将ELMo向量与x_k拼接得到在这里插入图片描述作为单词的特征,用于后续的处理。对于部分任务,可以对双向lstm语言模型微调,可能有所提升。
总体而言,biLM每层学到的东西是不一样的,所以将他们叠加起来,对任务有较好的的提升。

总结:

ELMO的使用主要有三步:
1)在大的语料库上预训练 biLM 模型。模型由两层bi-LSTM 组成,模型之间用residual connection连接起来。而且作者认为低层的bi-LSTM层能提取语料中的句法信息,高层的bi-LSTM能提取语料中的语义信息。
2)在我们的训练语料(去除标签),fine-tuning 预训练好的biLM 模型。这一步可以看作是biLM的domain transfer。
3)利用ELMo 产生的word embedding来作为任务的输入,有时也可以即在输入时加入,也在输出时加入。
  ELMO 在六项任务上取得了the state of the art ,包括问答(QA),情感分析(SA)等任务。总的来说,ELMO提供了词级别的动态表示,能有效的捕捉语境信息,解决多义词的问题
ELMo的缺点:
在特征抽取器选择方面,ELMO 使用了 LSTM 而不是新贵 Transformer,Transformer 是谷歌在 17 年做机器翻译任务的“Attention is all you need”的论文中提出的,引起了相当大的反响,很多研究已经证明了 Transformer 提取特征的能力是要远强于 LSTM 的。如果 ELMO 采取 Transformer 作为特征提取器,那么估计 Bert 的反响远不如现在的这种火爆场面。
ELMo 采取双向拼接这种融合特征的能力可能比 Bert 一体化的融合特征方式弱。但是,这只是一种从道理推断产生的怀疑,目前并没有具体实验说明这一点。

reference:

[1]. Peters M E , Neumann M , Iyyer M , et al. Deep contextualized word representations[J]. 2018.
[2]. https://www.jianshu.com/p/dc4e548bb080
[3]. https://zhuanlan.zhihu.com/p/51679783
[4]. https://www.cnblogs.com/jiangxinyang/p/10060887.html
[5]. https://zhuanlan.zhihu.com/p/59016893

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值