论文解读:半监督双向语言模型的序列标记
Semi-supervisedsequence tagging with bidirectional language models
摘要:这篇ACL 2017的文章来自Allen研究院,在AllenNLP的NLP工具中使用该研究结果集成为英文NER方案;在这篇文章中,作者提出了一般的半监督方式对上下文嵌入的预训练方法,这种方法采用了双向语言模型对NLP系统进行建模,之后作者利用模型在序列标注任务上取得了当时最优的结果。
1 介绍
得益于预训练模型的简单性和有效性,词向量已经广泛应用到NLP系统中。大量的研究表明,预训练模型能够捕获到有效的语义和语法信息,这些信息在NLP的很多下流任务中具有巨大价值。
论文的主要贡献在于:
- 研究表明了LM模型捕捉的上下文语义表示在有监督的序列标注模型中具有很大的价值。
- 研究表明了基于双向语义捕捉语义的LM模型能够提升仅基于前向语义捕捉的LM模型的性能。
2 增强语言模型序列标注(TagLM)
2.1 概览
图1中展示的是TagLM模型的主要组件。在大量、无标签的语料上进行预训练得到词嵌入和LM模型上,作者抽取了所给句子的每个词的嵌入表示和句子的LM嵌入表示,并用于有监督的序列标注模型。
图1:TagLM,语言模型组件(LM,橙色)用来增强在传统序列标注模型中输入单词的表示(灰色)
2.2 基线序列标注模型
本文的序列标注基线模型(图2)是分层的神经标注模型,紧跟着如下的最近研究:Ma and Hovy, 2016;Lample et al., 2016; Yang et al., 2017; Chiu and Nichols, 2016。
句子中的词表示按照如下方式:
是句子的第k个单词的最终表示, 为该单词利用CNN(Ma and Hovy, 2016;Chiu and Nichols, 2016)或RNN(Yang et al., 2017; Lample et al., 2016)网络捕获的形态信息, 并以参数化表示; 为该单词在预训练模型中的词向量表示,并且在训练的时候进行微调,以 参数化表示。为二者的联结。
上下文语义表示按照如下方式得到:
作者用了双层RNN网络用来捕获词在句子中的语义表示。上述为第一层RNN的隐藏层计算方式,为句子中第k个词的表示,按照上述方式得到,为第k个词的前一个词的前向传播第一层隐藏状态, 为第k个词的后一个词的反向传播第一层隐藏状态, 为二者的联结。上述RNN可以使用GRU也可以使用LSTM,取决于具体任务进行选择。
最后,RNN最后一层的输出层连接一个Dense层(Keras中可直接调用该层)用来预测每一个标签的可能得分。由于ner序列标注标签的依赖性(例如使用BIOES进行标注,I-PER不可能紧挨着B-LOC出现),作者在每一个标签后添加一层,并在训练阶段用前向-后向算法计算句子的CRF损失,并使用维特比算法在测试阶段找到最可能的句子序列。
图2:TagLM模型概览。预训练的双向LM顶层嵌入叠加后和序列标注模型作运算
2.3 双向LM
语言模型就是计算序列存在的可能性,可用下述公式表示
本文的idea受2016年Jozefowicz的研究启发得到,之前的研究利用多层LSTM将序列中的前k个词表示(字符特征或词嵌入)嵌入到 中,并接一个softmax层预测第k+1个词。本文作者受到启发利用后k个词预测第k-1个词得到后k个词的反向嵌入表示 ,在前向和后向训练完成后移掉softmax层,并取出最后一层的隐藏状态作联结即得到 的LM表示,即 。
2.4 在序列模型中结合LM
作者用如下简单的方式替换掉2.2节中的公式2,即将LM和序列模型结合起来。
另外,作者还提到可能有效的替换方式还有如下几种,但是由于作者在简单利用上述方式替换后已经得到很好的效果,所以下面的替换方式并没有进行探索,感兴趣的小伙伴可以尝试一下:
- 在简单联结后加入一个非线性映射函数后再进入第二层RNN层;
- 在将LM联结到序列模型之前引入一个类似注意力的机制进行加权操作。
3 实验
作者使用了BIOES模式进行序列的标注,利用Senna word embeddings(Collobert et al., 2011)进行词嵌入,并将所有的词转为小写,把所有的数字用0表示。
CoNLL 2003 NER:来自新闻领域,由四种(PER,LOC,ORG,MISC)实体组成,作者在train和development数据集上进行训练,之后仅在development数据集上进行超参的调节。
CoNLL 2000 chunking:此数据集为分块任务,定义了11种语法块和一种其它块,使用华尔街日报的第15-18节进行训练,使用第20节进行测试。作者从训练集中随机抽样了1000个句子作为development集。
基线序列标注模型使用30维的字符嵌入,CNN设置为30个3个字符宽度过滤器,每个词和字符编码使用tanh函数进行非线形操作。序列层的两个LSTM层使用200个隐藏单元,并且在字符嵌入、每一层LSTM输入和最终LSTM的输出层使用50%的dropout率。
预训练语言模型(Pre-trained language models):在1B词基准测试上进行训练,前向和后向均采用词嵌入作为输入,并使用2048个单元512维度投影的单层LSTM,在10个epoch后结束。最后的困惑度分别为47.7和47.3。
训练:所有的实验均使用Adam优化器和为5梯度裁剪因子,每次实验都会对Senna word embeddings进行微调。
3.1 系统整体结果
表1:在CoNLL2003 NER任务上的F1测试得分,仅仅使用CoNLL2003的无标注文本数据
表2:在CoNLL2000 分块任务上的F1测试得分,仅仅使用CoNLL2000和无标注文本数据
表3:在CoNLL2003 NER任务上的F1测试得分,使用了额外的标注文本数据和任务词典(LM训练时没有使用额外的数据)
表4:在CoNLL2000 chunking任务上的F1测试得分,使用了额外的标注文本数据和任务词典(LM训练时没有使用额外的数据)
3.2 分析
作者在CONLL-2003数据集上进行了多个实验进行结果分析。
怎么使用LM嵌入模型?作者测试了三种不同方式,表现如表5,三种方式分别为:
- 在第一层RNN输入时增强:
- 在第一层RNN输出时增强:
- 在第二层RNN输出时增强:
表5:LM在三种LM增强方式下的系统表现
对任务来讲RNN网络的重要性:作者去掉RNN层,只利用LM和CRF测试得分88.17,远低于原先的值。
数据量:本文的方法对训练集数据的依赖更小。
参数的数量:影响不大。
LM可以跨领域么?可以
4 结论
本文提出了一个简单的预训练神经语言模型的半监督方式,通过该方式得到的模型在两个数据集上表现良好并取得了当前最优的成绩;另外本文提出的LM在跨领域上也有很好的效果。
原文传送门:https://arxiv.org/pdf/1705.00108.pdf
如需转载,请标注来源:https://blog.****.net/qq_33331424/article/details/106045373
欢迎关注微信公众号: