论文 Relation Classification via Convolutional Deep Neural Network 解读
前言
实体关系提取常见的主流方法:
(1)有监督的学习方法
将关系抽取任务当作分类问题。根据训练数据设计有效的特征,从而学习各类模型,然后使用训练好的分类器预测关系。该方法的问题在于需要大量的人工标注训练预料,而预料标注工作通常是耗时耗力。
(2)半监督的学习方法
主要采用BootStrapping进行关系抽取,对于抽取的关系,该方法首先手工设置若干子实例,然后迭代的从数据中抽取关系对应的关系模板和更多实例(若是有误差的话,会影响后面的抽取)。
(3)无监督的学习方法
假设拥有相同语义关系的额实体对拥有相似的上下文信息。因此可以利用每个实体对对应的上下文信息来代表该实体对的语义关系,并对所有实体对的语义关系进行聚类。
(4)基于深度学习的关系抽取
现有的有监督学习关系抽取方法已经取得了较好的效果,但他们严重依赖词性标注、句法解析等自然语言处理标注提供分类特征。而自然语言处理标注工具往往存在大量错误,这些错误将会在关系抽取系统中不断传播放大,最终影响抽取的效果。
最近,很多研究人员开始将深度学习的技术应用到关系抽取中。
论文介绍
时间作者研究机构
2014年中科院的研究,作者是Daojian Zeng,KangLiu,SiweiLai,Guangyou andJunZhao .中国科学院, 自动化模式识别研究所 ,国家重点实验室。
提出的问题
在这篇文章之前,关系提取主要是依靠于统计机器学习方法,他们性能得高低取决于提取特征的好坏。特征提取又取决于现存NLP系统的输出,会导致误差在现存nlp工具中传播,比较依赖nlp工具。因此,本文基于特征提取过程中的问题,提出了卷积DNN算法,利用算法来代替特征工程,自动提取词汇级别特征和句子级别特征。把两者特征串联作为最终的特征。
论文的主要贡献
(1)在没有复杂的NLP预处理情况下,其实就是特征提取部份,说明关系提取的可行性。卷积DNN算法来提取词汇级特征(lexcial level features)和句子级特征(sentence level features)。
(2)提出了位置特征(PF,position features),来编码当前词与目标词对的相对距离,同时说明位置特征是比较有效的特征。
(3)利用SemEval-2010 Task 8 数据集做实验,证明了作者的想法,同时达到了当时最好的水平。(虽然实验结果只要0.33%的提升,不过作者还是可以发paper的)。
论文的方案-DNN算法结构
终于到论文的核心部分了,接下来介绍convolutional DNN算法。
算法结构图
话不多说,直接上图了,其实结构还是比较简单。
结构说明
convolutional DNN算法包括三层结构:Word Representation、Feature Extraction、Output.算法不需要复杂的语法和语义的处理,系统输入就是有两个标记名词的句子。首先,第一层是词表示层,词标记通过word embedding转化成词向量。接着,第二层是特征提取层,提取词汇级别和句子级别特征,将两者直接串联作为最终的特征。最后,第三层是输出层,将特征通过一层softmax分类器,得到各种关系的置信度,置信度高的就是两个标记名词的关系。实际上就是将关系提取问题转化成关系分类问题了。
第一层:Word Representation
主要是利用者篇论文Turian et al.(2010)的词表示。如果要改进的话,2013年谷歌发布word2vec之后,有很多非常好的词嵌入,比如GloVe,FastText,WordRank等,也已经预训练好的词嵌入。这些词嵌入效果都会较好。
第二层:Feature Extraction
Lexical Level Features
传统的lexical level features主要包括 名词本身、名词度的类型、实体间的词序列。他们质量的好坏取决于现存NLP工具的结果。在本篇论文中,作者选取的特征:标记名词的词向量(word embeddings of marked nouns)、上下文标记(the context tokens)、WordNet中的上位词(the WordNet hypernyms,出现于MVRNN (Socher et al., 2012).)所有的特征串联起来作为词汇级别的特征l,如下图。
重点:Sentence Level Features
这一步是本文的重点,也是创新点所在。先把整个算法结构给出来,如图所示
第一步:WF(Word Features)
例如已经标记名词的句子
S
:
[
P
e
o
p
l
e
]
0
h
a
v
e
1
b
e
e
n
2
m
o
v
i
n
g
3
b
a
c
k
4
i
n
t
o
5
[
d
o
w
n
t
o
w
n
]
6
S:[People]_0 \quad have_1\quad been_2 \quad moving_3 \quad back_4 \quad into_5 \quad [downtown]_6
S:[People]0have1been2moving3back4into5[downtown]6
我们将其标记后就是
(
x
0
,
x
1
,
x
2
,
x
3
,
x
4
,
x
5
,
x
6
)
(x_0,x_1,x_2,x_3,x_4,x_5,x_6)
(x0,x1,x2,x3,x4,x5,x6)最后设置了滑动窗口w=3,得到最终的WF特征如下
{
[
x
s
,
x
0
,
x
1
]
,
[
x
0
,
x
1
,
x
2
]
,
.
.
.
,
[
x
5
,
x
6
,
x
e
]
}
T
\{[x_s,x_0,x_1],[x_0,x_1,x_2],...,[x_5,x_6,x_e]\}^T
{[xs,x0,x1],[x0,x1,x2],...,[x5,x6,xe]}T
第二步:PF(PositionFeatures)
位置特征也是本文的重点,创新点所在。位置特征描述的是,当前词相对于两个标记名词的距离。例如,当前词“moving”相对于“people”和“downtown”的距离是3和-3,随后将其映射成一个低维度的向量d1和d2,然后就是直接将两者串联得到最终特征。位置特征就是PF=[d1,d2].论文对于这个维度没有详细的说明,只是说对结果的影响较小,所以作者自己选择的,并没有做对照实验,所以值得怀疑一下这个选取过程。
第三步:卷积(Convolution)
经过前面两步,最终串联
W
F
+
P
F
WF+PF
WF+PF,即得向量
[
W
F
,
P
F
]
T
[WF,PF]^T
[WF,PF]T。这里只是简单的串联,如果加入注意力机制,采取权重表示,即
x
1
W
F
+
x
2
P
F
x_1WF+x_2PF
x1WF+x2PF。权重
{
x
1
,
x
2
}
\{x_1,x_2\}
{x1,x2}通过数据去学习得到。
词表示只能表达出局部的特征,作者利用卷积过程来合并所有的局部特征。
首先,进行一个线性变换
Z
=
W
1
X
Z = W_1X
Z=W1X,X是window processing 的输出,这一步是作者参考 Collobert et al. (2011)。然后,对所有的Z每一行取最大值,即
m
i
=
m
a
x
Z
(
i
,
.
)
0
≤
i
≤
n
1
m_i = max Z(i,.) \quad 0 \leq i \leq n_1
mi=maxZ(i,.)0≤i≤n1。最终得到特征向量
m
=
{
m
1
,
m
2
,
m
3
,
.
.
.
,
m
n
1
}
m = \{m_1,m_2,m_3,...,m_{n_1}\}
m={m1,m2,m3,...,mn1}.
第四步:Sentence Level Feature Vector
在这一步,作者选择双曲正切函数作为激活函数,只因该函数导数只与函数值有关。作者做了一个非线性变换 g = t a n h ( W 2 m ) g = tanh(W_2m ) g=tanh(W2m),这时特征向量g就比上一步的特征向量m更好。最终作者得到了句子级别的特征g。
第三层:Output
在这一层,作者串联了lexical level feature 和 sentence level feature,得到特征向量
f
=
[
l
,
g
]
f = [l,g]
f=[l,g] ,最后再做了一次线性变换
o
=
W
3
f
o = W_3f
o=W3f,最终经过了softmax分类器进行分类即得到最终的关系类别概率
p
(
i
∣
x
,
θ
)
p(i|x,\theta)
p(i∣x,θ)。
但是,作者在训练的时候采取了对数似然损失函数(log-likelihood cost function) 而非交叉熵损失函数( cross-entropy cost function)。二分类的过程中,我们的最后一层(也就是输出)是通过sigmoid函数,因此采用了交叉熵代价函数。而深度学习中更普遍的做法是将softmax作为最后一层,此时常用的是代价函数是log-likelihood cost。其实这两者是一致的,logistic回归用的就是sigmoid函数,softmax回归是logistic回归的多类别推广。log-likelihood代价函数在二类别时就可以化简为交叉熵代价函数的形式。
论文实验与结果
实验的数据来源:SemEval-2010 Task 8 dataset(Hendrickx et al., 2010).
该数据集可以免费获得,包含10,717个注释示例,其中包括8,000个训练实例和2,717个测试实例。 有9个关系(有两个方向)和一个无向其他,也就是19类。 以下是包含的关系的示例:原因 - 结果,组件 - 整体和实体 - 来源。 在官方评估框架中,考虑了方向性。 如果关系中的单词的顺序是正确的,则一对被计数为正确的。
第一组对照试验-- Parameter Settings
第一组对照试验旨在确定三个参数,卷积过程的窗口大小
w
w
w,隐含层1
n
1
n_1
n1,隐含层2
n
2
n_2
n2,如下图。作者在这之间还做了5倍交叉验证
最终的所有实验参数的选择如下,
在这些参数中,由于distance dimension 对结果影响较小,所以作者试探性的选取了
d
e
=
5
d_e = 5
de=5。然后,word dimension和learning rate 来自论文 Collobert et al. (2011)。
第二组对照试验-- Results of Comparison Experiments
可以看出作者的算法是所有中F-1分数最高的,哪怕只是比前一名多了0.3%。
前五种都是来自于论文Hendrickx et al. (2010), RNN来自于论文Socher et al. (2012), MVRNN 来自于论文(Socheretal.,2012)。
对比分析
1、当使用传统的特征时,丰富的特征集合会导致更好的性能。 这种改进可以通过从训练到测试数据的语义泛化的需要来解释。传统特征的质量取决于人的独创性和以前的NLP知识。
2、RNN和MVRNN包含特征学习过程;然而,它们需要依赖于递归过程中使用的语法树,但是句法分析中的错误会抑制这些方法去学习高质量特征。即使将POS,NER和WordNet添加到训练数据集中,RNN也无法实现比使用传统特征的最佳方法更高的性能。 与RNN相比,MVRNN模型可以有效地捕获意义组合,并获得更高的性能。
第三组对照试验–TheEffectofLearnedFeatures
对各种特征的加入,作者做了一个对照试验,旨在说明添加的特征是有效的。同时作者强调,位置特征(PF) 的添加带来了明显的效果提升(9.2%)。
<完>