Distant Supervision for Relation Extraction via Piecewise Convolutional Neural Networks

基于分段卷积神经网络的远程监督实体关系抽取算法:

使用远程监督进行关系提取有两个问题:

首先,在远程监督方法中,从已有的知识库启发式地与文本对齐,将对齐结果视为标记数据。然而启发式对齐并不准确,可能会标记错误;

另外则是在典型的方法中,统计模型已应用于特设特征,而特征提取过程的产生的噪声可能会导致性能不佳。

为了解决这两个问题,这篇文章提出了一个新的模型,分段卷积神经网络(PCNN)与多实例学习。

对于第一个问题,把远程监督关系提取转化为一个多实例问题,其中考虑了实例标签的不确定性;对于第二个问题,干脆不使用特征工程,而是使用具有分段最大池的卷积体系结构来自动学习相关特征。

主要步骤(PCNN):

  1. 向量表示

  2. 卷积

  3. 分段最大池 和 分类器输出

具体方法:

Distant Supervision for Relation Extraction via Piecewise Convolutional Neural Networks

图3 示例

1. 词嵌入/向量(word embedding)

实现:训练->应用

训练:训练词向量的方法有:skip-gram模型,GloVem模型,

使用:

  1. 通过调用word2vec的包训练自己的word embedding(底层为tensorflow)
  2. 使用别人训练好的词向量模型(比如复旦,斯坦福的中文自然语言处理包)
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的大小为dwd_{w} =4,并且position embedding的大小为dpd_{p}=1。联合word embedding 和 position embedding,在向量表示部分,实例会被转换为矩阵SRs×dS∈R^{s \times d},其中s是句子长度,d=dw+dp2d = d_{w} +d_{p}* 2。之后矩阵S会传入卷积部分 。

3. 卷积(Convolution )

在关系提取中,一个标注为包含目标实体的输入句子仅仅对应于关系类型;它不能预测每个单词的标签,所以需要利用所有局部特征,全局地执行该预测。对于神经网络算法,卷积方法是合并所有这些特征的自然手段。

卷积是权重向量w和序列类型的输入向量q之间的操作,其中权重矩阵w被认为是卷积的滤波器。我们假设滤波器的长度(w= 3);因此 WRm,m=wdW \in R_{m} ,(m = wd)。把在上一步中得到的S看作是序列{q1,q2,q3,,qs}qiRd\{q_{1},q_{2},q_{3},\ldots,q_{s}\},其中q_{i} \in R^{d}。qi:j{qi,qi+1,,qj}q_{i:j} 指的是一个序列\{ q_{i},q_{i + 1},\ldots,q_{j}\},以下是卷积操作的公式:

c1 = Wq(jw+1):j (1js+w+1,qii,qi0)c_{1\ } = \ W{*q}_{\left( j - w + 1 \right):j\ } (1\leq j \leq s + w +1,如果q_{i}的下标i超出范围,则q_{i}取0)

为了捕获不同的特征,通常需要在卷积中使用多个滤波器(或特征映射),假设我们使用n个滤波器(W={W1,W2,,Wn}W=\{ W_{1},W_{2},\ldots,W_{n}\}),卷积运算可以表示如下:

ci =Wi q(jw+1):j (1in)c_{i\ } = W_{i\ }{*q}_{\left( j - w + 1 \right):j\ } (1 \leq i \leq n)

图3展示了一个示例,其中的卷积过程使用了3个不同的过滤器.

4. 分段最大池(Piecewise Max Pooling)

在上一步卷积过程中输出的矩阵CϵRs+w1C{ϵ } R^{s+w-1}的大小总取决于传入卷积层矩阵S特征值(tokens)的数量。如果要把C应用到后续的图层,必须组合在卷积层中提取的特征,目的是使它们与句子长度无关。

传统的卷积神经网络(CNNs)最大化池操作(max pooling)通常用于此目的(Collobertetal.,2011;Zeng et al.,2014),这种类型的汇集方案自然地解决了可变句子长度。

我们想捕获每个特征图(feature map)中最重要的特征(具有最高值)。然而,尽管单个最大池被广泛使用,这种方法却不足以用于关系抽取。虽然单个最大池化可以减小隐藏层,但是要捕获两个实体之间的结构信息,还远远不够。

在关系抽取中,基于两个所选实体,输入句子能被分成三个片段。因此我们提出了一个分段最大池化过程,它返回每个段中的最大值而不是单个最大值。如图3所示,每个卷积滤波器cic_{i}的输出被Kojo Annan和Ko fi Annan分成三个段ci1ci2ci3{c_{i1} ,c_{i2},c_{i3 }}。分段最大合并步骤如下:

pi=max(ci)1in1j3p_{i\text{j\ }}= max(c_{i\text{j\ }}) ,1≤i≤n,1≤j≤3

每个卷积滤波器输出得到一个三维向量 pi=pi1,pi2,pi3p_{i} = {p_{i1 },p_{i2},p_{i3 }},然后连接所有向量p1:n,p_{1:n},并应用一个非线性函数,例如双曲正切函数。

最后,分段最大池程序输出一个向量:

g=tanh(p1:n ),gR3ng = tanh(p_{1:n\ }) , g∈R^{3n}

g的大小是固定的,不再与句子长度相关。

5. 分类器输出 Softmax Output

为了计算每个关系的置信度,将特征向量g馈入softmax分类器。

o=W1g+bo = W_{1}g+ b

W1ϵRn1×3nW_{1}{ϵ } R^{n_{1}\times 3n}是变换矩阵,oϵRn1o{ϵ}{R}^{n_{1}}是网络的最终输出,其中n1n_{1}是关系提取系统中可能的关系类型的数量。
我们在倒数第二层使用dropout(Hinton等,2012)进行正规化。在向前的计算期间,dropout通过随机丢弃一定比例的隐藏单元(设比例为p),防止隐藏单元的共同适应。

首先我们应用“掩蔽”操作(g◦r)ong,其中r 是一个概率p为1的伯努利随机变量的向量。

o=W1(gr)+bo = W_{1} (g◦r)+ b

然后每个输出都可以被解释为相应关系的置信分数,通过应用softmax操作,可以将该分数解释为条件概率。

在测试过程中,学习的权重向量由p缩放,使得W=pWW = p{W},用于对看不见的实例进行评分(未dropout)。

6.多实体学习(Multi-instanceLearning)
算法1(多实例学习)
  1. 初始化,将包(bags)分割成大小为bsb_{s} 的小包(mini-batches)。
  2. 随机选择一个小包(mini-batches), 并将包逐一传入网络。
  3. 根据 Eq. (9), 找到每个包内的第j个实例 mij,1 j  bsm_{i}^{j} ,1 \leq \ j\ \leq \ b_{s}
  4. 通过Adadelta,基于mij,1 j  bsm_{i}^{j} ,1 \leq \ j\ \leq \ b_{s}的梯度,更新θ
  5. 重复步骤 2-4, 直到收敛或达到最大时间数。

为了缓解错误标记问题,我们对PCNNS使用多实例学习。基于PCNN的关系提取可以表示为一个五元组θ=(E,PF1,PF2,W,W1)2{(E,\text{PF}_{1},\text{PF}_{2},W,W_{1})}^{2},这个网络的输入是一个包。假设有T个包{M1 ,M2,,MT}\{ M_{1}\ ,M_{2},\ldots,M_{T}\},并且第i个包包含qiq_{i}个实例Mi=mi1,mi2,,miqiM_{i}= { m_{i}^{1},m_{i}^{2},\ldots,m_{i}^{q_{i}}}
多实例学习的目标是预测无法看见的包的标签,在本文中,包中的所有实例都是独立考虑的。给定输入实例mijm_{i}^{j},在参数为θ下网络输出向量o,其中第r个分量oro_{r}对应与关系r相关联的分数。

为了获得条件概率p(r | m,θ),我们对所有关系类型应用softmax运算:

p(rmij;θ)= eork=1n1eok p\left( r \middle| m_{i}^{j};\theta \right) = \ \frac{e^{o_{r}}}{\sum_{k = 1}^{n_{1}}e^{o_{k}}}

多实例学习的目的是区分包而不是实例,为此,我们必须确定包上的目标函数。鉴于所有(T)训练包(MiyiM_{i},y_{i}),我们可以在包等级使用交叉熵来确定目标函数,如下:

J(θ)= i=1Tlogp(yimij;θ) J\left( \theta \right) = \ \sum_{i = 1}^{T}{logp\left( y_{i} \middle| m_{i}^{j};\theta \right)}

其中j受约束如下:

j =argmaxj(yimij;θ),1 j  qi j*\ = \arg{max_{j}\left( y_{i} \middle| m_{i}^{j};\theta \right)},1 \leq \ j\ \leq \ q_{i}

利用这个定义的目标函数,我们通过随机梯度下降法,用Adadelta更新规则重组小批量的包,从而最大化j(θ)j(\theta),整个运算过程参见算法1。

通过以上介绍, 我们知道传统的反向传播算法根据所有的训练实例修改网络,而多实例学习的反向传播修改基于包的网络。因此我们的方法捕获了远距离监督关系提取的性质,其中一些训练实例将不可避免地被错误地标记。当使用受过训练的 PCNN 进行预测时,只有在至少一个实例上的网络输出被指定为正标签的情况下, 包才会被正面标记。