天天看点

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的大小为 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=W1​g+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(多实例学习)

  1. 初始化,将包(bags)分割成大小为 b s b_{s} bs​ 的小包(mini-batches)。
  2. 随机选择一个小包(mini-batches), 并将包逐一传入网络。
  3. 根据 Eq. (9), 找到每个包内的第j个实例 m i j , 1 ≤   j   ≤   b s m_{i}^{j} ,1 \leq \ j\ \leq \ b_{s} mij​,1≤ j ≤ bs​。
  4. 通过Adadelta,基于 m i j , 1 ≤   j   ≤   b s m_{i}^{j} ,1 \leq \ j\ \leq \ b_{s} mij​,1≤ j ≤ bs​的梯度,更新θ
  5. 重复步骤 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=1n1​​eok​eor​​

多实例学习的目的是区分包而不是实例,为此,我们必须确定包上的目标函数。鉴于所有(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∑T​logp(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 进行预测时,只有在至少一个实例上的网络输出被指定为正标签的情况下, 包才会被正面标记。

继续阅读