记录:读 Deep contextualized word representations


读 Deep contextualized word representations

作者 Matthew E. Peters et al.

目录

  • Major Work
  • EMLo: Embedding from Language Models
  • Evaluation
  • Analysis

1 Major Work

本文作者针对nlp任务如何学习到高质量的token表示-- (1) word用法的复杂特征(e.g., 句法和语义方面的信息),以及(2)这些用法在不同语境中是如何变化的(e.g., 一词多义的问题)--这一挑战性的任务,提出提出了一个新的词表示方法--称为deep contextualized word representation,本文探讨的主要内容就是通过预训练得到的词表示--LM representation,属于是预训练模型这块的创新改进。

本文提出的这个新的词表示不同于传统类型的word embeddings,传统预训练得到的词嵌入大多都是context-independent,即便是Matthew E. Peters et al., 2017,提出的那个LM embedding也只是使用的预训练模型的最后一层LSTM的输出表示作为最终的LM embedding(之后作为特征加入task specific Baseline Model中),但并没有完全利用句子所提供的中词的信息,因为在数据不断向下游流动时前面的信息必然会有损失,而即本文则是“根据一个句子来赋予每个\(词汇向量^{[2]}\)”,即它是预训练模型中每层输出的表示的一个线性组合(后续会详细介绍)。同时本文的预训练模型主要采用Bi-LSTM,在大量文本语料中使用LM语言模型去训练模型,因此把它称之为 Embedding from Language Models。

2 EMLo: Embedding from Language Models

本文中通过预训练模型得到的LM embedding主要是通过一个基于字符卷积的两层Bi-LSTM结构计算得到,作为其各层内部状态的一个线性函数,因此这种设置也使得我们能够更好的做半监督学习,同时也会 便于我们把它加入到针对不同NLP任务的结构(base line model)中去,后续会详细解释。

2.1 Bidirectional language models

类似于Matthew E. Peters et al., 2017中的语言模型,就是对句子的词序列的联合概率进行建模,有点像文本生成,前向LM的话根据之前的token(\(t_{1,2,...,k-1}\))预测下一个token(\(t_k\)),如下图所示。

最后联合最大化下面的这个似然,如下图。

2.2 ELMo

ELMo是由biLM各个中间层表示线性组合而成的任务导向型的Embedding,对于任务导向(task specific)我个人理解是,由于不同层的线性组合且不同层一般会捕获不同类型的信息,比如较低层的表示会更好的句法信息的表示,较高层的表示会有更好表示语义方面的信息,那么就按照公式(1)针对不同任务对不同层赋予不同的权重进行线性组合。

回到ELMo,假设预训练模型由L层bi-LSTM,那么加上最开始输入的原始词向量(本文采用字符卷积训练 得到),就有2L+1个表示,如下图,其中\(x^{LM}_k\)是输入预训练模型的原始输入词向量,\(\overrightarrow{h^{LM}_{k,j}}\)\(\overleftarrow{h^{LM}_{k,j}}\)分别为第j层第k个词的前后向状态。

为了能够使其加入到下游任务模型中,文中通过公式1,使其折叠成了一个向量,如下图公式1,最简单的情况也就是TagLM (Matthew E. Peters et al., 2017) 中的仅选择最后一层,即\(E(R_k) = h^{LM}_{k,L}\)

公式1中,\(s^{task}\)是一个softmax归一化的权重,具体怎么得来的,下面这位大神写的挺好的\(^{[2]}\),稍微看了下源码后也确实如他所描述的,如下图代码截图,增加一个额外的权重参数,不随词的改变而改变,初始化也确实每层都相同,但这就有个疑问?那这权重都相同那么不久相当于对各层乘了个小于1的系数类似归一了一下使其不要相差太大,那如何体现任务导向这点呢,不同任务要微调初始各层权重值?针对不同任务突出不同层的权重?

“PS : 原文中有关获取s值的方法的描述很简单:\(s^{task}\) are softmax-normalized weights.我个人意见(真的是个人意见)是, 就是在每一层中多一个参数, 我称之为s位, 设第 i 层的s位为 . 用来作为计算 \(s^{task}\) 的输入. 计算方法是: \(s^{task}_i = e^{s_i}/\sum{^N_je^{s_j}}\) ,因为这个 是一\(s^{task}\)个模型的参数,是独立于词向量的,也就是说不会随着输入词的改变而改变 . 所以应该不会以每层的隐藏状态作为输入(因为每层的隐藏状态会随着词向量改变). 所以, 在利用语言模型进行初始化的过程中, 应该会将每层中的s标志位设置为相同的值, 这样经过softmax转换后的值也是一样。

而, \(\gamma^{task}\) 允许具体的task模型去放缩 ELMo 的大小. 这个地方非常重要, 作者在补充中进行了强调, 在没有这个的情况下, 只采用该模型的最后一层输出作为词向量的时候的效果甚至差于 baseline. 这个重要的原因是, BiLM的内部表征和具体任务的表征的分布是不一\(样的^{[2]}\)。”

那么其实这个权重不仅使层间进行归一化,由于bi-LM每层内激活也就是每层LSTM(为RNN)的内部状态即h都有不同的分布,那么这个权重也有助于层内归一化,layer normalization(Ba et al., 2016)。

2.3 Using biLMs for supervised NLP tasks

这里借用大神的描述\(总结的比较好^{[2]}\),稍微修改了一下,以下结合方式采用拼接,采用attention加权求和的方式怎么样效果会?(Marek Rei et al.,2016)。

  • 最简版使用方法
    将该词向量加到一般的任务的方法是, 先固定一个权重, 构成一个\(ELMo^{task}_t\) , 然后联结\(ELMo^{task}_t\)和 最初始词向量(通过字符卷积获得的向量--也就是第一层的input处) 为\([x_k^{LM};ELMo^{task}_t]\), 然后将这个向量输入到任务的RNN模型中去. 然后在训练中一同训练权重因子.
  • 加强版
    我们可以在最后一层的output处加入ELMo,即\([h_k;ELMo^{task}_t]\) , 不同的是,这里下游任务模型即Baseline model要采用与在第一层输入结合时相比不同的权重因子。
  • 终极版
    可以在ELMo模型中加入dropout, 以及采用 L2 loss的方法来提升模型.
    并且, 这里的 L2 项的系数 ? [公式] 越大, 越有取各层平均值的意思即越趋于平均, 越小, 越可以发挥各个层之间的不同带来的效果. 但是并不是说, 越小越好,即正则惩罚项\(\lambda|w|^2_2\)

2.4 Pre-trained bidirectional language model architecture

LM类似Matthew E. Peters et al., 2017,主要采用J ózefowicz et al. (2016)中的single best model CNN-BIG-LSTM,但有几点不同,一是本文采用双向,而是本文在LSTM层中加入了残差连接,同时考虑到为了保持一个纯粹的基于字符的输入表示以及为了平衡对于下游任务的总体语言模型复杂度及其计算量需求,本文作者采用了降维处理L=2,只采用两层bi-LSTM,同时层内单元数采用Projection layer进行转换降维了,最后结果就是bi-LM会对每个输入token提供三个表示对应三层嘛,原始输入、第一层bi-LSTM输出、第二岑bi-LSTM输出。实验表明本文LM预训练模型复杂度和效率均可,且针对不同任务对biLMs进行微调效果会更好。

3 Evaluation

详见论文,总之针对多种不同nlp任务都达到了新的SOTA,如下表Table 1。

4 Analysis

ablation analysis:
这个其实就是控制变量法, 我们的模型通过自动调整得到了大量参数, 但是我们不知道那些参数更重要一些, 因此我们通过设置有某变量的一组实验和无该变量的一组实验来进行比较, 得出不同参数对应的重要度. 通过这样的实验, 就可以使得开发者的注意力主要集中在重要的参数上\(^{[2]}\)

4.1 Alternate layer weighting schemes

简单总结实验就是,仅使用最后一层输出的表示、使用所有层表示的组合即EMLo(包括正则项系数\(\lambda=1\) 代表使bi-LM各层权重趋于平均,\(\lambda=0.001\)代表是各层状态的加权平均即各层权重是变化的不同的不趋于平均的),如下表Table 2。

4.2 Where to include ELMo?

本文主要在两个位置做了实验如下表 Table 3,分别是第一层输入和最后一层输出处结合ELMo,但在第一层输出处呢像Matthew E. Peters et al., 2017这一篇一样,为什么呢?感觉在baseline model的input处只是单纯的context-independent的词表示,而baseline model的第一层输出的表示已经经过了一层bi-LSTM了至少有了词性以及一些语义信息了在第一层输出处结合ELMo不是更匹配么?至于为什么在input和output结合作者认为如下图。

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

仅增加了biLMs的词表示与word embedding结合就大幅提升了六种任务的性能,作者认为其必然捕获了word vector没有捕获到的对于NLP任务有用的信息,即可能语义方面--词义消歧,如表Table 4中与CoVe做对比,详见原论文。

CoVe向量
这里简单提一下这个词向量, 这是一个利用翻译编码器去获取上下文词向量(也就是输入为句子, 再对每个位置的词汇赋予词向量的这种动态的词向量赋予方式). 因为下文中一直与它进行对比\(^{[2]}\)

写不动了,剩下部分,借用大神的描述\(^{[2]}\)

上面的模型比较是将ELMo的整个结果加入一个具体的NLP task , 与其他模型比较, 而在这一节是通过, 取 ELMo 的单层出来的词向量加入模型与其他不同的词向量加入模型进行对比.(注意, 这里的模型并没有保证一致性, 但是ELMo加入的模型设计简单, 在这种情况下依然可以取得好结果, 说明效果不是出自模型,而是出自向量.)

  • Word sense disambiguation
    语义消歧任务, 这里使用了 SemCor3.0 这个预料库, 这是一个标注了多义的预料库, 库中的每个词汇都对应着 wordnet 的一个位置.
    基于该预料库进行计算的方法是, 先利用 BiLMs 来计算出了语料库中所有的词汇向量表示. 然后将位于wordnet相同位置的词汇的向量取了平均. 测试的时候, 对于一个给出的target word in a target sentence. 利用 BiLM 得出结果后, 利用训练时获得的每个wordnet位置中的词汇的初始向量, 再利用 1近邻法求这个词汇可能的位置. 这个模型本身可以说是非常简单了, 只用到了 1-近邻. 但是结果还是显示, 有很高的F1值. 如下图:

4.4 Sample efficiency

简单说就是采样效率高了很多,相比baseline model epoch=486加入ELMo后以很少的迭代轮次epoch=10就超过了baseline性能,且使用更少的训练数据,同时数据越少效果越明显,如下图Figure 1.

4.5 Visualization of learned weights

softmax归一化的学习到的各层权重的可视化,详见原文。

4.6 Contextual vs. sub-word information

实验说明sub-word信息也就是通过预训练得到的作为输入的原始词嵌入(指baseline model的预训练词表示输入而非LM embedding)是有用的,并不是说因为ELMo加入后效果好就可以只用LM embedding了。

5 Conclusion

控制变量多次实验表明加入ELMo后确实能改善各个nlp任务的性能,且ELMo编码了不同的信息包括句法和语义等,也可以说是LM中的不同层的表示都编码了不同的信息,如4.3部分的实验Table 5和Table 6分别为词义消歧(根据不同语句或者说上下文可能一词多义,如Table 4) 和 词性标注任务,表明较低的层(本文就两层即第一层)能够更好的表示句法信息,较高的层(即第二层)能够更好的表示语义信息,这一特性或者说分层效果使得ELMo更容易加入到不同nlp任务中,因为每个任务的需要的信息可能不同如Table 5 Table 6两个任务。

参考

[1] Matthew E. Peters, Mark Neumann, Mohit Iyyer, Matt Gardner,Christopher Clark, Kenton Lee, Luke Zettlemoyer.Deep contextualized word representations.NAACL-HLT 2018.

[2] 赵来福.[论文笔记]ELMo.2018.https://zhuanlan.zhihu.com/p/37684922

[3] 蘑菇轰炸机.NLP论文笔记 Deep contextualized word representations(ELMO词向量理解).2018.https://www.jianshu.com/p/d93912d5280e

[4] Marek Rei,Gamal K.O, Crichton.Sampo Pyysalo.Attending to Characters in Neural Sequence Labeling Models. COLING 2016.

[5] Matthew E. Peters, Waleed Ammar, Chandra Bhagavatula, Russell Power. Semi-supervised sequence tagging with bidirectional language models. ACL, 2017.