Deep contextualized word representations(ELMo)
论文地址
背景
nlp研究小白,
主要攻哈工大方向自然语言处理文章,希望两年时间能够哈工大成功考博!
摘要
本文介绍一类新的深层的上下文词表征(deep contextualized word representation),模型ELMo, 该模型能能够对,1、词汇的复杂特征(句法和语法)。2、及这些复杂特征在不同语境中的不同用法(即对一词多义)进行建模。本文的词向量本质上是基于大规模语料训练后双向语言模型(biLM)内部隐状态 特征的组合。实验表明,本文所提出的词向量模型能够很轻松地与现有主流模型相结合。并在6大NLP任务(包括问答、文本蕴含和情感分析)上有巨大提升。并刷新记录。同时,通过实验和分析发现预训练网路的深层内部结构是重点。这能够让下游模型去融合半监督训练出不同类型的特征。
介绍
预训练词表征(Mikolov et al., 2013; Pennington et al., 2014)是很多神经语言理解模型的关键部分。然而,学习高质量的词表征非常有难度。它们应该能够做到以下两点:
1、完美建模单词使用方面的复杂特征。如句法和语义。
2、对单词在不同语言环境下使用变化(即一词多义)建模。
本文介绍了一种新型深度语境化词表征:deep contextualized word representation。可以直接应对上述两个困难。且这种表征能够轻松地整合进现有模型。极大地提升了高难度的语言理解任务的当前最优性能。
本文提出的表征与传统的词嵌入不同,每个token的表征是整个输入句子的函数。本文的向量来自于双向LSTM。该LSTM是使用成对语言模型( LM)目标在大型文本语料库上训练得到的。因此,该表征叫做ELMo(Embeddings from Language Models)表征。与之前学习语境化词向量的方法不同 ,ELMo表征是深层的。
即它们是biLM中所有内部层的函数。具体来说:对于每个任务,学习堆叠在每个输入单词上的向量线性组合。其效果显著优于仅使用LSTM顶层的表征。
用这种方式组合内部状态可以获取丰富的词表征,使用内在评价进行评估。结果显示更高级别的LSTM状态可以捕捉词义的语境依赖(如它们不经修改就可以执行监督式词义消歧任务,且表现良好)而较低级别的状态建模的句法结构(如它们可以用于词性标注任务),。同时揭示所有信号是非常有溢的,可以帮助学得的模型选择对每个任务最有帮助的半监督信号。
大量实验表明ELMo表征在实践中效果优异。本文首先展示可在6个不同且有难度的语言理解问题上(包括文本蕴涵、问答和情感分析等)将ELMo表征轻松添加到现有模型。添加ELMo表征可以显著地提高每个用例中当前的最优性能。包括将相对误差降低百分之20%,对于可以直接对比的任务,ELMo优于Glove,后者使用神经机器翻译编码器计算语境化表征。最后,对两个模型进行分析,分析结果显示深层表征优于仅从LSTM顶层获取的表征。
相关工作
基于大规模无标注语料的词向量预训练已经在实践中证明能够捕获词的语法和语义信息。此后,预训练的词向量作为各项NLP任务,(包括问答、文本蕴涵、文本角色标注)中一项标配。但是看,现有这些方法学习到的词向量+对于每个词仅仅有一个上下语境表征向量。
先贤们也提出了一些方法以克服传统词向量的不足。,比如Wieting et al., 2016; Bojanowski et al.,2017,提出通过subword信息来丰富词向量的表征。再比如Neelakantan et al., 2014 提出分开学习每个单词意义的向量,本文的方法通过使用字符卷积也能够达到使用subword的效果。同时文本能够无缝地在下游任务中使用多义信息。而无需在训练过程中确切地指明预定义的含义类别,即在训练过程中不用指明词到底是那个含义。
其他近期工作如:context2vec (Melamud et al., 2016)使用一个双向的LSTM围绕一个中心词来进行上下文的语境编码。其他捕获上下文的embedding方法有在中心词的基础上,融入有监督的机器翻译系统(CoVe;McCann et al., 2017) 或者无监督的语言模型,根据已经工作,已经可以知道biRNNs中不同网络层编码了不同类型的信息,比如在深层LSTM网络中的底层引入多任务的句法监督(eg:词性标注),任务能够整体上提升高级任务的性能。
如依存句法分析和CCG。Belinkov et al. (2017)的工作表征基于一个基于RNN的encoder-decoder的机器翻译系统中,如果对双层LSTMencoder的第1层和第2层分别进行文本表征学习后,发现第1层的文本表征学习更有助于词性标注任务性能指标的提升。
(Melamud et al., 2016) 的工作表明L;STM网络顶层的词的上下文编码能够学习到词的语义表征,本文的实验结果表明,改进语义模型目标的ELMo,也能够发挥类似的作用,且对于混合不同类型的半监督的下游任务是很有帮助的。
ELMo: 来自不同语言模型的嵌入
与广泛使用的词嵌入不同,ELMo词表征是整个输入句子的函数,这些表征在双层biLMs上使用字符卷积计算出来的,以内部网络状态的线性函数表现出来的,这种设定使得可以进行半监督学习,在学习中,biLM进行大规模地预训练,且能够轻易地整合进现有的大量神经NLP架构。
双向语言模型
该模型本质是从语言模型来的,对于一个给定的句子
(
t
1
,
t
2
,
.
.
.
t
N
)
(t_1,t_2,...t_N)
(t1,t2,...tN)构建的语言模型就是通过一个词汇上文去,预测一个词
t
k
t_k
tk:
p
(
t
1
,
t
2
,
.
.
.
,
,
t
N
)
p(t_1,t_2,...,,t_N)
p(t1,t2,...,,tN) =
∏
k
=
1
N
p
(
t
K
∣
t
1
,
t
2
,
.
.
.
,
t
k
−
1
)
\prod_{k= 1}^{N}p(t_K | t_1,t_2,...,t_{k-1})
∏k=1Np(tK∣t1,t2,...,tk−1)
近期流行的神经语言模型,一般是通过token embedding或者在字符级上使用CNN获得带有上下文的信息的token表征
X
k
L
M
X_k^{LM}
XkLM
然后通过一个多层的前向LSTM网络,在LSTM的每一层都输出一个基于上下文的向量表示
h
k
,
j
L
M
⃗
\vec{h_{k,j}^{LM}}
hk,jLM 其中
j
j
j代表层数,
k
k
k代表位置。
其 最后一层的输出,经过一层softmax一层归一化,就可以来预测
t
k
+
1
t_{k+1}
tk+1
现在都流行双向语言模型,本质就是把一个句子在逆序输入一遍,
p
(
t
1
,
t
2
,
.
.
.
,
t
N
)
p(t_1,t_2,...,t_N)
p(t1,t2,...,tN) =
∏
k
=
1
N
p
(
t
K
∣
t
k
+
1
,
t
k
+
2
,
.
.
.
,
t
N
)
\prod_{k= 1}^{N}p(t_K | t_{k+1},t_{k+2},...,t_{N})
∏k=1Np(tK∣tk+1,tk+2,...,tN)
在把前向逆向的结果结合起来,就是最终的双向语言模型,而本文的最终目的是使用目标函数最大化:
ELMO
公式1可以看出ELMo模型不仅仅使用了神经语言模型的最后一层输出,而是对所有层的输出做了加权来构造最后的向量,其中
s
t
a
s
k
s_task
stask是softmax归一化权重,所以权重加权和为1.标量参数
γ
t
a
s
k
\gamma^{task}
γtask允许任何模型扩展至整个ELMo向量。
在实践中,
γ
\gamma
γ对优化过程有益,是一个需要学习的变量,+加不加这个变量对performace的影响是比较大的,鉴于每个biLSTM的激活函数都有不同的分布,在一些情况下,
γ
\gamma
γ有助于在加权之前对每个biLSTM层的归一化,
在无监督任务上使用biLMs
给定一个预训练的biLM, 怎么将其与目标任务框架进行结合呢?
运行biLM, 记录每个词在所有层的表征,在让末端的具体任务模型学习表征之间的线性组合。具体来说,对于给定的token序列,
(
t
1
,
t
2
,
.
.
.
,
t
N
)
(t_1,t_2,...,t_N)
(t1,t2,...,tN),对于每个token,通过常见的标准方式(预训练词嵌入,也可以加入基于字符的表征方式)得到带有上下文依赖的token表征
x
k
x_k
xk 在通过双向RNNs,或者CNNs,或者前馈神经网络得到具体上下文语境的表征
h
k
h_k
hk。
另外也可以在ELMo模型中,加入适量的dropout,以及采用LS,LOSS方法来提升模型,这对ELMo权重引入了一个归纳偏见,
使其接近所用的bilLM层的平均值,并且这里的
L
2
L2
L2项的系数,
γ
\gamma
γ越大,越有取各层平均值的意思,越小,越可以发挥各个层之间不同带来的效果,但是,并不是说,越小越好。
预训练双向语言模型
本文预训练biLMs的方法与J´ ozefowicz et al. (2016)和Kim et al. (2015)中的方法是类似的,所作出的修改有以下2点:
- 修改使其支持多方向的联合训练。
- 在LSTM层之间添加残差连接。
在这项工作中,重点关注大规模的biLMs, ,正如Peters等人(2017)强调过的:使用biLMs比只使用前向LMs和大规模训练更重要。
为了平衡语言模型之间的困惑度以及后期下游NLP任务模型计算的复杂度,同时维持输入表征仍是基于字符的,本文对单个最佳模型,CNN-BIG-LSTM的所有嵌入和隐藏尺寸减半(字符卷积网络较为低效,能够实现最大效率利用字符共现来表达词义的网络,就是biLSTMs网络,换一一句话说:本文采用了2层Bi-lstm 共计算4096个单元,输出维度为512. 并且在第一层和第二层之间有残差连接,
最初那一层文本向量用来2048个n-gram过滤器,进行了基于字符的卷积计算,后续还紧跟两个highway层。
最后再接一个512维的线性投影层作为输出,整个ELMo会为每个词提供一个3层的输出,而下游模型学习的就是这3层的输出组合,传统的词嵌入仅仅在一个固定的词典中提供单层的表征。另外,对该模型进行微调训练,对具体的nlp任务会有所提升。
评估
本文从问答、文本蕴含、语义角色标注、指代消解、命名实体抽取和情感分析这6个任务验证本文的模型,且都得到了提升。
表 1:ELMo 增强神经模型和当前最优(SOTA)单个模型基线在六个 NLP 基准任务上的测试集性能对比。不同任务的性能指标不同:对于 SNLI 和 SST-5 是准确率,对于 SQuAD、SRL 和 NER 是 F1,对于 Coref 是平均 F1。由于 NER 和 SST-5 的测试集较小,研究者的报告结果是使用不同的随机种子进行的五次运行的均值和标准差。「INCREASE」列是基线模型的绝对和相对改进。
更详细的可以参考原始论文,在这里不继续展开说明。
分析
通过消融研究(即控制变量法)以确定本文模型贡献,并阐明ELMo表示一些有趣的方面。5-1节的实验表明在下游任务中采用深层的语境表征比仅仅使用顶层表征(biLM或者MT encoder所产生的)能取得更好的结果。5-3节的实验结果表明biLMs能够捕获到不同类型的上下文信息,底层网络捕获到的是句法信息,高层网络捕获到的是语义信息。这与MT系统的encoders是不谋而合的。此外**,biLM能够提供比CoVe更丰富的表征**。在5-2节分析了ELMo包含在具体下游任务模型中的位置敏感度;5-4节介绍训练集的一些基本信息,5-5节对ELMo在不同任务中学习到的权重参数进行可视化。
交替层加权方案
- 第一列: baseline模型,使用普通的词向量,l例如Glove.]
- 第二列:只是使用了bILSTMS最后一层输出结果。
- 第三列:使用了各层次状态值平均的结果。
*第四列:使用了各层次状态值加权平均的结果。
其结果如下:
从中可以看出,使用全部网络特征比仅使用最后一层效果提升明显;使用上下文表征信息的最后一层又比baseline要好,从上图任务中,可以看出小
γ
\gamma
γ的效果更好。
在哪里加入ELMo
在SNLI数据集和SQuAD数据集上的输入和输出层加入ELMo,比仅仅在输入层加入ELMo效果要来得好。但是对于SRL数据集**(指代消解数据集)则仅在输入层加入ELMo效果最好。一个可能的原因是SNIL和SQuAD网络架构都在biRNN之后使用了attention层,引入ELMo可以使得模型直接注意到biLM的内部表征**。而对于SRL数据集,其上下文表征可能比biLM中的信息更重要。
证明确实是有效的。
biLM表征捕获到那些信息
由于添加ELMo能够比单纯的词向量获取更好的效果,那么biLM的上下文表征应该是能够编码出对多个NLP任务都有效的更加泛化的通用信息,而这是词向量所无法捕捉到的。直观上,biLM应该是能**够克服词的歧义性。**以常见多歧义单词"play"为例,Table 4的上部分列出了在Glove向量中与其最相近的单词,它们分布在演讲的几个部分例如:“play”,“playing”作动词,“player”作动词,“game”作为名词),但集中在与运动有关的“play”的意义上。下面的两行显示来自SemCor数据集的最近邻语句,在各自句子中使用biLM后的“play”的上下文表示。在这种情况下,biLM能够对原句中的词性和词义进行分离。
word sense disambiguation(一词多义的消歧):
在词义消歧方面可以使用目标词在biLM表征中最近邻的单词来预测目标词的含义,这与Melamud et al. (2016)的方法很类似。实验过程中,使用了 SemCor3.0 这个语料库(PS:这是一个标注了多义的语料库), 该语料库中的每个词汇都对应着 wordnet 的一个位置。具体方法是,在训练语料上,先利用biLMs 计算出语料库中所有词汇的向量表示,然后对每个含义取表征的均值。因为每个词对应着wordnet,所以在wordnet相同位置的,即表示相同含义,进而可以将位于wordnet相同位置的词汇的向量取平均。在测试的时候, 对于一个给出的目标词(即target word)利用 BiLM计算得到其词表征后, 再选用与训练时获得的每个wordnet位置中词汇向量最近的作为其含义。换句话说,就是利用1近邻法在训练后的词向量中查找(从上述可知,此时每个含义都是均值后的结果),其结果就是这个词可能的位置。虽然只用到了1-近邻,没有真的用一个合理的wsd(word sense disambiguation)模型, 只是用了最简单的模型来验证ELMo vector 的质量,但是结果显示, 有很高的F1值。结果如Table 5所示:
加粗样式上面的结果测试了 ELMo 表达语义的效果, 接下来利用 POS tagging 检测其对语法的表达效果。直接在 LM 后面接了一个feed-forward 的nn来进行pos-tagging 的训练, 模型的效果如下Table 6所示。类似的, 因为这个结果是没有用额外的crf / lstm 而直接得到的, 所以这个分数其实挺好的了。
样本效率
在模型中添加ELMo会大大提高样本的效率(Sample efficiency),具体体现在参数收敛更快和需要使用的训练集更小。例如在不加 ELMo 的情况下去训练 SRL model , 达到最佳 F1 值要在 486 个epoch之后, 但在加了 ELMo 之后, 只需要十个回合便超越了原来的 F1 值,降低了98%的时间消耗。此外,在使用更少数据下便可以能够获得同样的效果,所以数据的使用更高效。Figure 1对比了baseline是否加入ELMo下不同数据量的性能表现。
学习到的权重可视化
Figure 2对softmax-normalized学习到的各层权重进行可视化。对指代消解任务和SQuAD数据集更看重biLSTM的第一层,而其他任务似乎没有特殊的层级偏好。
结论
本文介绍了一种biLMs方法,该方法能够学习到高质量深层上下文相关表示的通用方法,并证明了该方法在多个任务上显著有效。通过消融研究和控制变量法,证实了biLM层能够有效地编码单词上下文相关的不同类型的语法和语义信息,使用所有层特征组合可以提高所有任务的性能。
重点内容
建模单词方面使用的复杂特征,语法和语义。
单词在不同语言环境下使用变化的建模。
向量来自于双向LSTM,
大规模的无标注的语料的词向量预训练。
subword信息来丰富词向量的表征。
多任务的句法监督:如词性标注。
混合不同类型的半监督下游任务。
摘要写作概要:
本文介绍了什么,解决了什么问题,实验得出来的结论,达到的效果,。
读论文时候在,重点研读本文所概述模型那部分重要内容,其他可以略读。全部都将其搞定都行啦的回事与打算。
需要搞一个论文编辑工具,把论文所有的引用和参考文献全都罗列出来,
后续学习内容
神经语言模型、双向语言模型。
biLSTM层。
bi-attention层。
字符卷积网络
两层bi-lstm网络。
残差连接
一天总结一点,单个层的技术,然后构建自己网络模型的时候,不断调试,不断训练。
单个层技术
线性投影层。
残差连接
Softmax层
highway层
attention层