记录:读 Semi-supervised sequence tagging with bidirectional language models


读 Semi-supervised sequence tagging with bidirectional language models

作者:Matthew E. Peters, Waleed Ammar, Chandra Bhagavatula, Russell Power. Proceedings of ACL 2017

目录

  • Motivation
  • Major Work
  • TagLM
  • Experiments
  • Conlusion

1 Motivation

“目前NLP任务中,常使用预训练得到的词向量作为word-level的输入(同时,大多结合character-level 的词表示),常通过RNN等结构的序列标注模型来得到词的上下文的表示或者说是sentence-level的\(表示^{[2]}\)”。但是对于RNN等结构的序列标注模型想要获得一个好的句子级的表示往往需要大量数据,但现实是NLP任务如序列标注往往都是在较少的标注数据上训练--数据不足。“本文作者提出一种半监督的方法来补充sequence/context representation的\(不足^{[3]}\)”。

2 Major Work

本文作者采用采用一种可选的半监督的方法且此方法不需要除了少量监督数据外额外的标注数据,即使用在大量无标注预料上预训练的LM语言模型获取每个词的嵌入--LM embedding,并将其用在监督序列标注模型中(使用相对少量的标注数据)。

3 Language model augmented sequence taggers (TagLM)

3.1 整体架构

“这篇paper所使用的模型\(流程^{[2]}\)”,如下图Figure 1.

3.2 Baseline sequence tagging model

本文作者使用类似(Lample et al. , 2016)等工作的序列标注模型作为baseline序列标注模型,如下图Figure 2 左,只不过这里使用了堆叠的Bi-RNN(两层,每层不断循环依次对句子中的每个词处理,直到末尾循环结束)。

序列标注模型流程简单解释:对序列中每个词获取两种表示(character-level:使用Bi-RNN训练和word-level:预训练得到),结合两种表示(拼接或attention权重相加)->作为输入至Bi-RNN,提取特征得到句子级别的表示(i.e. context-level表示)->作为输入至(这两层感觉类似多分类任务模型的分类器部分,如图像多分类预训练大致:冻结的卷积基+需要训练的分类器,啧不太懂这个Dense层干了什么呢?)Dense层->CRF层预测标签。

序列标注一定程度上是否可以理解为多分类呢?只不过是序列且考虑上下文语义关系?(序列中每个词都可能有多种标签,进而每个序列有多个标签预测序列)

3.3 Bidirectional LM

3.3.1 Language Model

“如下述公式,语言模型是对句子的词序列的联合概率进行\(建模^{[2]}\)”,前向LM。

本文作者采用与(J ózefowicz et al., 2016)类似的语言模型,在此基础上又加了一个后向LM形成Bi-LM,实现也类似前向LM(其实就是又加了个前向LM,只不过把序列词颠倒输入不久行了,i.e. 从最后一个词开始从后往前输入不久行了??),Figure 2 右,上下两个部分分别为后向和前向token表示拼接后形成LM embedding,其中LM本文作者采用的是 CNN-BIG-LSTM,在1B Word Benchmark (Chelba et al.,2014)上训练LMs。

“神经语言模型从Bengio在2003年提出以来,出现了很多的变体。这篇paper使用了基于RNN的语言模型:一般通过一个LSTM来对预测词之前的所有词语进行encode,即LSTM层输出得到一个固定长度的向量\(h^{LM}_k\)。这个向量通过一个softmax层来预测\(t_k\)在词表上出现的概率分布。基于此,可以认为向量\(h^{LM}_k\)保存了context的语义和语法信息。
由于正常的语言模型只能encode预测词前面的context,为了得到更完整的信息。本文中在Forward LM的基础上增加了一个Backward LM来得到预测词后面的context信息,将两部分合在一起作为\(LM embeddings^{[2]}\)”。详见原文描述。

3.3.2 Combining LM with sequence model

本文作者将Bi-LM模型得到的LM embedding作为特征加入序列标注模型中,具体位置是将LM embedding(i.e. \(h^{LM}_k = [\overrightarrow{h^{LM}_k};\overleftarrow{h^{LM}_k}]\))与第一层Bi-RNN的输出拼接 (i.e. \(h_{k,1} = [\overrightarrow{h_{k,1}};\overleftarrow{h_{k,1}};h^{LM}_k]\) 本文采用的是拼接的方式,也可以试试attention权重和方式),原因是在这个位置相比第一层输入和第二层输出时实验结果要好一些如下图Table 5,具体原因作者猜测序列标记模型中的第二RNN层能够以一种提高系统整体性能的方式,捕获第一RNN层所表达的task specific context(任务特定上下文)与LM嵌入中所表达的一般上下文之间的交互,或者可以这么理解 “相对而言,第一层RNN的输出和LM embeddings表示的信息应该是最接近的,都是整个context的表示,是同一个层面的信息,所以效果最好。而第一层RNN的输入是word embeddings与context epresentations差异较大,第二层RNN的输出则是context更抽象的\(表示^{[2]}\)。”

4 Experiments

数据集CoNLL 2003(用于NER任务),CoNLL 2000(用于chunking任务)。

5 Conclusion

本文作者不在拘泥于以前的改进点如输入词嵌入方面的或者模型对模型采用某种技巧提升一点性能,而是把目光放在了有点类似预训练上,将LM语言模型得到的LM embedding (感觉类似预训练得到的word Embedding),作为特征加入了第一层Bi-RNN的输出特征 (或setence-level 的词表示),提升整个模型的性能,且也可用在其他序列标注模型中。同时实验结果表明,在少量标注数据上使用Bi-LM会在原有SOTA方法上大幅提高文中NET和chunking任务评价指标F1分数,即使在相对大量的标注数据上仍有提升,详见原文。

参考

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

[2] shen.《Semi-supervised sequence tagging with bidirectional language models》阅读笔记.2017. https://zhuanlan.zhihu.com/p/27240757

[3] 隔壁老吴的学习笔记.Semi-supervised sequence tagging with bidirectional language models.2018. https://zhuanlan.zhihu.com/p/38140507

[4] robert_ai.神经网络结构在命名实体识别(NER)中的应用.2017.