1. 论文背景
作者总结,在当时NLP的序列标注问题中,主要是用HMM,MEMM,CRF算法。此前还有些已经使用过CNN,并且跟CRF结合在一起使用的。还有使用双向LSTM的。这些模型的效果很好,给作者不少启发。于是作者参考这些研究,提出了把双向LSTM算法结合到CRF上来做这个问题。所以这算典型的工程论文吧。
2. 论文主要工作
作者搞了四个模型,来研究bi-LSTM CRF模型的效果:LSTM,BI-LSTM,LSTM-CRF,bi-LSTM CRF。充分对比效果,证明了bi-LSTM CRF模型的优越性。它不仅能达到SOA,而且不依赖特征工程,不依赖预训练的词向量,有着极高的鲁棒性。
3. 实验模型介绍
3.1 LSTM模型
为了介绍LSTM,作者首先介绍了典型的RNN模型,RNN模型也可以用来处理时序问题。
对于序列标注问题来说,以NER为例,输入为EU rejects German call to boycott British lamb,输出为B-ORG O B-MISC O O O B-MISC O O。跟普通的模型相比,RNN有一个隐藏单元可以用来承载历史信息(也就是上文的信息)。其各部分计算公式如下:
其中两个激活函数分别为sigmoid和softmax:
对于序列标注问题来说,LSTM和RNN本质是相同的,区别仅在于加入了门的控制,如下所示:
各部分计算公式如下:
其中σ是sigmoid激活函数,i, f,o ,c 分别代表 input gate, forget gate, output gate和 cell vectors。所有向量的长度都和h相同。输入输出可以表示成下面的形式:
3.2 双向LSTM模型
双向LSTM就是把输入语句从正到反和从反到正各输入一遍,这样在每一个输入的单词(观测)上,都可以学到之前的上文和之后的下文,充分利用了上下文信息。
需要注意的是,输入的开头和结尾都需要特殊处理,而且作者还利用了batch的方法训练。
3.3 LSTM-CRF模型
有两种利用上下文的方法:一种是MEMM算法(预测每一个单词上不同标记的概率),另一种就是CRF算法(考虑整个序列)。
这些方法与LSTM不同的是,它的输入输出是直接相连的,而LSTM中间有一个隐层。
作者尝试将LSTM和CRF结合起来:
这样的模型结构,可以通过LSTM利用到输入特征,也可以通过CRF利用句子层面的标注特征。CRF模型保留转移矩阵。LSTM的输出用fθ([x]T1 )来表示,[fθ]i;t含义是:对于序列[x]T 1而言,经过参数为θ的神经网络,第t个单词在第i个标记上的输出。[A]i;j表示一对相邻的时间序列,从第i个状态到第j个状态的转移分数,注意这个矩阵是和序列位置无关的。那么整个网络的参数表示如下:
那么转移分数和网络分数之和如下:
计算Aij和最佳序列的方法是动态规划算法。
3.4 bi-LSTM CRF模型
跟lstm CRF模型类似,bi-LSTM CRF模型的结构如下:
区别仅在于多了一个backward的输入,因为这个输入,lstm也能很好的利用到上下文信息(而不单单是上文信息)。
4. 训练方法
第3章中介绍的所有模型都使用SGD算法,前向后相训练来求解。其中最复杂的bi-LSTM CRF模型的训练过程如下:
整个训练过程中,把数据分成很多的batch,然后一次训练一个batch。每个batch中句子的长度都受限于一个参数,如果我们把这个参数设成100,就需要所有句子的长度不大于100. 先用bi-LSTM的前向和后向分别得到序列中每个位置的状态,得到fθ([x]T 1 )。然后用CRF的前后向来计算lstm的输出和状态转移矩阵的梯度。然后就可以用反向传播算法来训练参数了。
5. 数据实验
5.1 试验指标
作者主要用了三个NLP任务来作为衡量模型的指标。Penn TreeBank (PTB) POS、CoNLL 2000 chunking,和CoNLL 2003 named entity tagging。下表给出了训练集、验证集、测试集的句子、token和标签数量。
注:POS就是标注词性。chunking就是以BIO的方式对句子分块。NER是把句子的每个部分都标记为Person, Location, Organization,or Miscellaneous。
5.2 特征处理
特征分两类 :上下文特征和拼写特征,对于POS,chunking and NER的数据集,作者分别整理了401K, 76K, and 341K个特征。为了方便对比试验,作者所做的特征跟要对比的论文是一致的。
A 拼写特征
这一大堆特征我就不翻译了:
• whether start with a capital letter
• whether has all capital letters
• whether has all lower case letters
• whether has non initial capital letters
• whether mix with letters and digits
• whether has punctuation
• letter prefixes and suffixes (with window sizeof 2 to 5)
• whether has apostrophe end (’s)
• letters only, for example, I. B. M. to IBM
• non-letters only, for example, A. T. &T. to ..&
• word pattern feature, with capital letters,lower case letters, and digits mapped to ‘A’,‘a’ and ‘0’ respectively, for example, D56y-3to A00a-0
• word pattern summarization feature, similarto word pattern feature but with consecutive
identical characters removed. For example,D56y-3 to A0a-0
B 上下文特征
单词特征用uni-gram和bi-gram特征,For POS features in CoNLL2000 data set and POS & CHUNK features in CoNLL2003 data set,作者用的是uni-gram、 bi-gram和tri-gram。
C 词向量
作者下了一套词向量的表示,130K的词汇量,50维。
D 特征组合方法
作者发现把拼写特征和上下文特征直接跟LSTM的输出放到一起效果差不多,但是训练快很多。结构示意图如下:
他这种方法跟另一项研究中用hash来表示特征的加速计算有点像,但是本模型中的特征数量相对较少,可以直接全连接起来,也就避免了hash碰撞的问题。
5.3 实验结果
把学习率设置为0.1,隐藏层大小为300,训练会在10个epoch之内收敛,一次训练大概耗费几个小时。
经过训练和测试,数据集结果如下(包含了之前其他人研究的结果):
可以看到已经达到了SOA。而且没有预训练词向量的情况下,bi-LSTM CRF的效果是最好的。
而如果去掉拼写和上文特征,仅保留词向量的话,模型对比如下:
这个结果充分说明bi-LSTM CRF的鲁棒性非常强。
作者还把bi-LSTM CRF与其他现存的系统在各个数据集上的任务进行了对比,这里不进行详细描述。
6. 总结
- 作者提出了新的bi-LSTM CRF模型解决序列标注问题,并且到达了SOA
- 跟其他模型相比,本模型有较强的鲁棒性(对特征工程要求低),并且对预训练的要求也比较低