基于分段卷积神经网络的远程监督实体关系抽取算法:
使用远程监督进行关系提取有两个问题:
首先,在远程监督方法中,从已有的知识库启发式地与文本对齐,将对齐结果视为标记数据。然而启发式对齐并不准确,可能会标记错误;
另外则是在典型的方法中,统计模型已应用于特设特征,而特征提取过程的产生的噪声可能会导致性能不佳。
为了解决这两个问题,这篇文章提出了一个新的模型,分段卷积神经网络(PCNN)与多实例学习。
对于第一个问题,把远程监督关系提取转化为一个多实例问题,其中考虑了实例标签的不确定性;对于第二个问题,干脆不使用特征工程,而是使用具有分段最大池的卷积体系结构来自动学习相关特征。
主要步骤(PCNN):
-
向量表示
-
卷积
-
分段最大池 和 分类器输出
具体方法:
1. 词嵌入/向量(word embedding)
实现:训练->应用
训练:训练词向量的方法有:skip-gram模型,GloVem模型,
使用:
- 通过调用word2vec的包训练自己的word embedding(底层为tensorflow)
- 使用别人训练好的词向量模型(比如复旦,斯坦福的中文自然语言处理包)
2. 位置嵌入/向量 (position embedding)
这里用PF来指定实体对,PF是当前字到e1和e2相对距离的组合,比如:
… hired Kojo Annan, the son of Kofi Annan, in …
其中son到e1(Kojo Annan)和e2(Kofi Annan)的距离分别是1和-2,两个position embedding矩阵(PF1和PF2)随机地初始化。通过查找position embedding矩阵,将相对距离转换为实值向量。
在图3所示的例子中,假设word embedding的大小为
d
w
d_{w}
dw =4,并且position embedding的大小为
d
p
d_{p}
dp=1。联合word embedding 和 position embedding,在向量表示部分,实例会被转换为矩阵
S
∈
R
s
×
d
S∈R^{s \times d}
S∈Rs×d,其中s是句子长度,
d
=
d
w
+
d
p
∗
2
。
d = d_{w} +d_{p}* 2。
d=dw+dp∗2。之后矩阵S会传入卷积部分 。
3. 卷积(Convolution )
在关系提取中,一个标注为包含目标实体的输入句子仅仅对应于关系类型;它不能预测每个单词的标签,所以需要利用所有局部特征,全局地执行该预测。对于神经网络算法,卷积方法是合并所有这些特征的自然手段。
卷积是权重向量w和序列类型的输入向量q之间的操作,其中权重矩阵w被认为是卷积的滤波器。我们假设滤波器的长度(w= 3);因此 W ∈ R m , ( m = w d ) W \in R_{m} ,(m = wd) W∈Rm,(m=wd)。把在上一步中得到的S看作是序列 { q 1 , q 2 , q 3 , … , q s } , 其 中 q i ∈ R d 。 \{q_{1},q_{2},q_{3},\ldots,q_{s}\},其中q_{i} \in R^{d}。 {q1,q2,q3,…,qs},其中qi∈Rd。 q i : j 指 的 是 一 个 序 列 { q i , q i + 1 , … , q j } , 以 下 是 卷 积 操 作 的 公 式 : q_{i:j} 指的是一个序列\{ q_{i},q_{i + 1},\ldots,q_{j}\},以下是卷积操作的公式: qi:j指的是一个序列{qi,qi+1,…,qj},以下是卷积操作的公式:
c 1 = W ∗ q ( j − w + 1 ) : j ( 1 ≤ j ≤ s + w + 1 , 如 果 q i 的 下 标 i 超 出 范 围 , 则 q i 取 0 ) c_{1\ } = \ W{*q}_{\left( j - w + 1 \right):j\ } (1\leq j \leq s + w +1,如果q_{i}的下标i超出范围,则q_{i}取0) c1 = W∗q(j−w+1):j (1≤j≤s+w+1,如果qi的下标i超出范围,则qi取0)
为了捕获不同的特征,通常需要在卷积中使用多个滤波器(或特征映射),假设我们使用n个滤波器( W = { W 1 , W 2 , … , W n } W=\{ W_{1},W_{2},\ldots,W_{n}\} W={W1,W2,…,Wn}),卷积运算可以表示如下:
c i = W i ∗ q ( j − w + 1 ) : j ( 1 ≤ i ≤ n ) c_{i\ } = W_{i\ }{*q}_{\left( j - w + 1 \right):j\ } (1 \leq i \leq n) ci =Wi ∗q(j−w+1):j (1≤i≤n)
图3展示了一个示例,其中的卷积过程使用了3个不同的过滤器.
4. 分段最大池(Piecewise Max Pooling)
在上一步卷积过程中输出的矩阵 C ϵ R s + w − 1 C{ϵ } R^{s+w-1} CϵRs+w−1的大小总取决于传入卷积层矩阵S特征值(tokens)的数量。如果要把C应用到后续的图层,必须组合在卷积层中提取的特征,目的是使它们与句子长度无关。
传统的卷积神经网络(CNNs)最大化池操作(max pooling)通常用于此目的(Collobertetal.,2011;Zeng et al.,2014),这种类型的汇集方案自然地解决了可变句子长度。
我们想捕获每个特征图(feature map)中最重要的特征(具有最高值)。然而,尽管单个最大池被广泛使用,这种方法却不足以用于关系抽取。虽然单个最大池化可以减小隐藏层,但是要捕获两个实体之间的结构信息,还远远不够。
在关系抽取中,基于两个所选实体,输入句子能被分成三个片段。因此我们提出了一个分段最大池化过程,它返回每个段中的最大值而不是单个最大值。如图3所示,每个卷积滤波器 c i c_{i} ci的输出被Kojo Annan和Ko fi Annan分成三个段 c i 1 , c i 2 , c i 3 {c_{i1} ,c_{i2},c_{i3 }} ci1,ci2,ci3。分段最大合并步骤如下:
p i j = m a x ( c i j ) , 1 ≤ i ≤ n , 1 ≤ j ≤ 3 p_{i\text{j\ }}= max(c_{i\text{j\ }}) ,1≤i≤n,1≤j≤3 pij =max(cij ),1≤i≤n,1≤j≤3
每个卷积滤波器输出得到一个三维向量 p i = p i 1 , p i 2 , p i 3 p_{i} = {p_{i1 },p_{i2},p_{i3 }} pi=pi1,pi2,pi3,然后连接所有向量 p 1 : n , p_{1:n}, p1:n,并应用一个非线性函数,例如双曲正切函数。
最后,分段最大池程序输出一个向量:
g = t a n h ( p 1 : n ) , g ∈ R 3 n g = tanh(p_{1:n\ }) , g∈R^{3n} g=tanh(p1:n ),g∈R3n
g的大小是固定的,不再与句子长度相关。
5. 分类器输出 Softmax Output
为了计算每个关系的置信度,将特征向量g馈入softmax分类器。
o = W 1 g + b o = W_{1}g+ b o=W1g+b
W
1
ϵ
R
n
1
×
3
n
W_{1}{ϵ } R^{n_{1}\times 3n}
W1ϵRn1×3n是变换矩阵,
o
ϵ
R
n
1
o{ϵ}{R}^{n_{1}}
oϵRn1是网络的最终输出,其中
n
1
n_{1}
n1是关系提取系统中可能的关系类型的数量。
我们在倒数第二层使用dropout(Hinton等,2012)进行正规化。在向前的计算期间,dropout通过随机丢弃一定比例的隐藏单元(设比例为p),防止隐藏单元的共同适应。
首先我们应用“掩蔽”操作(g◦r)ong,其中r 是一个概率p为1的伯努利随机变量的向量。
o = W 1 ( g ◦ r ) + b o = W_{1} (g◦r)+ b o=W1(g◦r)+b
然后每个输出都可以被解释为相应关系的置信分数,通过应用softmax操作,可以将该分数解释为条件概率。
在测试过程中,学习的权重向量由p缩放,使得 W = p W W = p{W} W=pW,用于对看不见的实例进行评分(未dropout)。
6.多实体学习(Multi-instanceLearning)
算法1(多实例学习)
- 初始化,将包(bags)分割成大小为 b s b_{s} bs 的小包(mini-batches)。
- 随机选择一个小包(mini-batches), 并将包逐一传入网络。
- 根据 Eq. (9), 找到每个包内的第j个实例 m i j , 1 ≤ j ≤ b s m_{i}^{j} ,1 \leq \ j\ \leq \ b_{s} mij,1≤ j ≤ bs。
- 通过Adadelta,基于 m i j , 1 ≤ j ≤ b s m_{i}^{j} ,1 \leq \ j\ \leq \ b_{s} mij,1≤ j ≤ bs的梯度,更新θ
- 重复步骤 2-4, 直到收敛或达到最大时间数。
为了缓解错误标记问题,我们对PCNNS使用多实例学习。基于PCNN的关系提取可以表示为一个五元组θ=
(
E
,
PF
1
,
PF
2
,
W
,
W
1
)
2
{(E,\text{PF}_{1},\text{PF}_{2},W,W_{1})}^{2}
(E,PF1,PF2,W,W1)2,这个网络的输入是一个包。假设有T个包
{
M
1
,
M
2
,
…
,
M
T
}
\{ M_{1}\ ,M_{2},\ldots,M_{T}\}
{M1 ,M2,…,MT},并且第i个包包含
q
i
q_{i}
qi个实例
M
i
=
m
i
1
,
m
i
2
,
…
,
m
i
q
i
M_{i}= { m_{i}^{1},m_{i}^{2},\ldots,m_{i}^{q_{i}}}
Mi=mi1,mi2,…,miqi。
多实例学习的目标是预测无法看见的包的标签,在本文中,包中的所有实例都是独立考虑的。给定输入实例
m
i
j
m_{i}^{j}
mij,在参数为θ下网络输出向量o,其中第r个分量
o
r
o_{r}
or对应与关系r相关联的分数。
为了获得条件概率p(r | m,θ),我们对所有关系类型应用softmax运算:
p ( r ∣ m i j ; θ ) = e o r ∑ k = 1 n 1 e o k p\left( r \middle| m_{i}^{j};\theta \right) = \ \frac{e^{o_{r}}}{\sum_{k = 1}^{n_{1}}e^{o_{k}}} p(r∣∣∣mij;θ)= ∑k=1n1eokeor
多实例学习的目的是区分包而不是实例,为此,我们必须确定包上的目标函数。鉴于所有(T)训练包( M i , y i M_{i},y_{i} Mi,yi),我们可以在包等级使用交叉熵来确定目标函数,如下:
J ( θ ) = ∑ i = 1 T l o g p ( y i ∣ m i j ; θ ) J\left( \theta \right) = \ \sum_{i = 1}^{T}{logp\left( y_{i} \middle| m_{i}^{j};\theta \right)} J(θ)= i=1∑Tlogp(yi∣∣∣mij;θ)
其中j受约束如下:
j ∗ = arg m a x j ( y i ∣ m i j ; θ ) , 1 ≤ j ≤ q i j*\ = \arg{max_{j}\left( y_{i} \middle| m_{i}^{j};\theta \right)},1 \leq \ j\ \leq \ q_{i} j∗ =argmaxj(yi∣∣∣mij;θ),1≤ j ≤ qi
利用这个定义的目标函数,我们通过随机梯度下降法,用Adadelta更新规则重组小批量的包,从而最大化 j ( θ ) j(\theta) j(θ),整个运算过程参见算法1。
通过以上介绍, 我们知道传统的反向传播算法根据所有的训练实例修改网络,而多实例学习的反向传播修改基于包的网络。因此我们的方法捕获了远距离监督关系提取的性质,其中一些训练实例将不可避免地被错误地标记。当使用受过训练的 PCNN 进行预测时,只有在至少一个实例上的网络输出被指定为正标签的情况下, 包才会被正面标记。