关系抽取之分段卷积神经网络(PCNN)

Tensorflow2.2实现,见github仓库


远程监督

关系抽取训练集标注成本高,一般使用远程监督方法(半监督)自动标注数据。远程监督假设,若知识库中两个实体具有某种关系,则任何包含这两个实体的句子都具有这种关系。

下图为使用远程监督自动标注数据的实例,其中第一句标注正确,而第二句标注错误。

远程监督是快速获取关系抽取训练集的有效方法,但其有 两个缺点

  • 远程监督假设过于强烈,易标注错误,从而引入噪声数据,多数远程监督方法的研究聚焦于降噪
  • 远程监督多用于使用精细特征(句法结构等)的监督模型,这些特征一般使用已有的NLP工具提取,不可避免会引入误差,使用NLP工具提取的传统特征,会造成误差的传播或积累,而且,远程监督语料库多来源于网络的非正式文本,句子长度不一,随着句子长度的增加,传统特征提取的正确性会急剧下降;

PCNN关系抽取

Piecewise Convolutional Neural Networks (PCNNs) with multi-instance learning 解决以上两个难题:

为解决第一个问题,将远程监督关系抽取视为多实例问题。多实例问题中,训练集由很多包组成,每个包多个实例,每个包的标签已知,而包中实例的标签未知。设计目标函数只考虑每一个包的预测标签,PCNN仅选取每包中预测类别最接近真实类别的一个实例作为包的输出,一定程度上可降低包中一些实例标注错误的影响。

为解决第二个问题,使用CNN网络自动提取特征,不使用复杂的NLP预处理。对卷积层输出使用单一最大池化,能一定程度提取文本特征表达,但难以捕获两个实体间的结构信息。PCNN基于两实体位置信息将卷积层输出划分为3个部分,基于此,PCNN可能表现出更好的性能。

PCNN与Text CNN的主要区别在于输入层引入position embedding、池化层分为三段!


PCNN方法论

如图3所示,PCNNS主要由四部分组成:Vector Representation, Convolution, Piecewise Max Pooling and Softmax Output.

向量表达

句子的向量表达为两部分的拼接结果:词嵌入和位置嵌入。

  • 使用skip-gram方法预训练词向量;
  • 使用Position Embeddings表示句子单词到两个实体的相对距离,如下图,单词son到实体Kojo Annan和Kofi Annan的相对距离分别为3和-2。

随机初始化两个位置嵌入矩阵,图3中词嵌入的维度是4,位置嵌入的维度是1。结合词嵌入和位置嵌入,句向量表示为
S = R s × d S=\R^{s\times d}

其中, s s 是句子长度(单词数), d = d w + d p 2 d=d_w+d_p*2 .

卷积层

对于长度为 s s 的句子,首尾填充 w 1 w-1 长度,则卷积核 w \boldsymbol w 的输出
c R s + w 1 , c j = w q j w + 1 : j , 1 j s + w 1 \boldsymbol c\in\R^{s+w-1},\quad c_j=\boldsymbol w\boldsymbol q_{j-w+1:j},\quad 1\leq j\leq s+w-1
若使用 n n 个卷积核,则卷积操作的输出为
C = { c 1 , , c n } , c i j = w i q j w + 1 ; j , 1 i n C=\{\boldsymbol c_1,\cdots,\boldsymbol c_n\},\quad c_{ij}=\boldsymbol w_i\boldsymbol q_{j-w+1;j}, \quad 1\leq i\leq n

图3中,卷积核的数目为3。

分段最大池化层

卷积层输出维度为 R n × ( s + w 1 ) \R^{n\times (s+w-1)} ,输出维度依赖于句子的长度。为便于应用于下游任务,卷积层的输出必须独立于序列长度,一般采用池化操作,主要思想是仅保留每个feature map中的主要的特征。

使用单一最大池化无法捕获两个实体的结构信息特征,PCNN使用分段最大池化代替单一最大池化,如图3所示,每个卷积核的输出 c i \boldsymbol c_i 被两个实体划分为3部分,分段最大池化输出长度为3的向量
p i = { p i 1 , p i 2 , p i 3 } ,   p i j = max ( c i j ) 1 i n ,   1 j 3 \boldsymbol p_i=\{p_{i1},p_{i2},p_{i3}\},\ p_{ij}=\max(c_{ij})\quad 1\leq i\leq n,\ 1\leq j\leq 3
拼接所有卷积核分段池化层输出为 p 1 : n \boldsymbol p_{1:n} ,经非线性函数输出为(维度与句子长度无关)
g = tanh ( p 1 : n ) , g R 3 n \boldsymbol g=\tanh(\boldsymbol p_{1:n}), \quad\boldsymbol g\in\R^{3n}

Softmax层

首先将输出转化为类别分数(softmax转换为类别概率)
o = W 1 g + b , W 1 R n 1 × 3 n ,   o R n 1 \boldsymbol o=W_1\boldsymbol g+b,\quad W_1\in\R^{n_1\times 3n},\ \boldsymbol o\in\R^{n_1}

多实例学习

为降低数据标注错误的影响,PCNN使用多实例(半监督)学习。

考虑包含 T T 个包的训练集 { M 1 , M 2 , , M T } \{M_1,M_2,\cdots,M_T\} ,其中 M i = { m i 1 , m i 2 , , m i q i } M_i=\{m_i^1,m_i^2,\cdots,m_i^{q_i}\} ,包中 q i q_i 个不同实例互为独立。对于实例 m i j m_i^j ,神经网络 Θ \Theta 输出向量 o \boldsymbol o ,其中第 r r 个关系对应的概率为
p ( r m i j ; θ ) = e o r k = 1 n 1 e o k p(r|m_i^j;\theta)=\frac{e^{o_r}}{\sum_{k=1}^{n_1}e^{o^k}}

将目标函数定义为极小化每个包的损失,从而降低包中部分数据标注错误的影响。每个包的标签已知,包中实例标签未知,训练过程中将包中实例在包标签上的最大概率作为预测输出,则目标函数定义为
J ( θ ) = i = 1 T log p ( y i m i j ; θ ) , j = arg max j p ( y i m i j ; θ ) J(\theta)=\sum_{i=1}^T\log p(y_i|m_i^j;\theta),\quad j^*=\arg\max_jp(y_i|m_i^j;\theta)


Reference

1. Distant Supervision for Relation Extraction via Piecewise Convolutional Neural Networks
2. EMNLP 2015 | PCNN实现远程监督在关系提取中的应用

猜你喜欢

转载自blog.csdn.net/sinat_34072381/article/details/106506652
今日推荐