当前位置: 代码迷 >> 综合 >> 论文阅读:Neural Relation Extraction with Selective Attention over Instances
  详细解决方案

论文阅读:Neural Relation Extraction with Selective Attention over Instances

热度:122   发布时间:2023-10-12 09:51:26.0

文章目录

    • 摘要
    • 引言
    • 具体方法介绍
      • 参数定义:
      • sentence encoder
      • Selective Attention over Instances
    • 总结

摘要

现存问题:远程监督会出现一些错误标注的问题
解决方法:使用卷积神经网络映射句子语义,使用attention机制减少噪声 数据的权重。
实验证明和意义:模型可以利用句子的所有信息,并且减少错误样本的影响。

引言

现状:
针对KB,现有实体跟现实世界的实体差很远很远。因此自动的关系抽取很重要(因为可以不依赖现有实体去做)。

介绍他人工作:
目前大多数关系抽取都是基于大量的人工标注有监督学习。
其基于以下假设(也是远程监督的定义):
如果两个实体在KB中某关系,那么所有的包含该实体对的句子都表达这该关系
显然,很容易出现反例。传统方法的缺陷在于它不是一个end-to-end的系统,它总依赖于tag,pos等一系列的操作。误差就会由此传播。

引入深度学习的概念,其中最接近的一篇工作的思想是:
至少存在一个包含那些实体的句子会表现出它们的关系。然后为每个实体对只选择最有可能的句子来进行训练和预测
显然只选择最有可能的句子,会丢失其他句子的意义

自己的工作:

  • 提出基于距离的卷积神经网络(CNN),用于远程监控关系的提取。

  • 在多个实例上建立了句子级别的关注(动态减少那些噪声实例的权重)。

  • 利用句子层次的注意力机制,提取与关系向量的关系。

具体方法介绍

参数定义:

word:x={w1,w2..wm}x=\{w_1,w_2..w_m\}x={ w1?,w2?..wm?}(一个句子含有m个词)
sentence:{x1,x2,x3...}\{x_1,x_2,x_3...\}{ x1?,x2?,x3?...}
relation:r
vocabulary size:V
词嵌入的维度:a
位置距离的维度:b
词向量维度:d
句子向量维度:dcd^cdc
卷积窗口长度:l
卷积核:WjW_jWj?
句子全集:S

sentence encoder

word representation

  • word embeddings: 普通的词嵌入模型
  • position embeddings:帮助CNN keep trace每个词离前后实体的位置(2个实数,前和后)

因此最终word vector(这里还是词不是句子):
wi∈Rd(d=da+db×2)w_i\in R^d(d=d^a+d^b\times2)wi?Rd(d=da+db×2)
其中a是词嵌入的维度,b是位置距离的维度

Convolution,Max-pooling and Non-linear layers
引入卷积和max-pooling的作用(跟该任务其实无关,这跟当初为什么NLP引入卷积有关,这是一个通用的作用)。

维度解释很重要
卷积核:W∈Rdc×(l×d)W\in R^{d^c\times (l \times d)}WRdc×(l×d)
卷积窗口:qi=Rl×dq_i=R^{l\times d}qi?=Rl×d
qi=wi?l+1:iq_i=w_{i-l+1:i}qi?=wi?l+1:i?
就是l窗口内,由上一步得到的各个词的向量拼接(水平)
因此第i个滤波器对应的feature map是:
pi=[Wq+b]ip_i=[Wq+b]_ipi?=[Wq+b]i?
注意这里q没有下标,实际上应该是(dc×l×d)X(l×d×m)(d_c \times l\times d)X(l \times d \times m)(dc?×l×d)X(l×d×m),这个m就是窗口的数量,跟句子的词数长度成正比。
因此就需要进行池化:
[x]i=max(pi)[x]_i=max(p_i)[x]i?=max(pi?)
最后接一个非线性函数tanh,relu之类的在输出处。

具体的过程就如下:
论文阅读:Neural Relation Extraction with Selective Attention over Instances

Selective Attention over Instances

输入:

  • 包含特定实体的句子集合S
  • 该句子集合经过第一部分得到向量表示。S={x1,x2,x3}\{x_1,x_2,x_3\}{ x1?,x2?,x3?}

小目标:希望得到得分概率表示P(r∣S,θ)P(r|S,\theta)P(rS,θ)(即在S实体对下,r的得分)

因此就需要对集合S进行整合为a real-valued vector s

  • 采用平均权重
  • 采用注意力机制
    过程:
    ei=xiAre_i=x_iArei?=xi?Ar
    αi=exp(ei)∑kexp(ek)\alpha_i=\frac{exp(e_i)}{\sum_k exp(e_k)}αi?=k?exp(ek?)exp(ei?)?
    s=∑iαixis=\sum_i \alpha_ix_is=i?αi?xi?
    o=Ms+do=Ms+do=Ms+d
    P(r∣S,θ)=exp(or)∑k=1nrexp(ok)P(r|S,\theta)=\frac{exp(o_r)}{\sum_{k=1}^{n_r}exp(o_k)}P(rS,θ)=k=1nr??exp(ok?)exp(or?)?
    其中,A是一个权重对角矩阵,r是代表着该关系的向量,e实际上就是注意力评分函数,与该实体关系更加密切的句子可以取得更大的取值。

总结

这篇文章的贡献在于传统观点,认为两个实体存在某种关系,那么所有包含该实体对的句子都表示这种关系,但是存在噪声,文章利用注意力机制对包含该实体对的各个句子进行权重的学习,使得其更好的表现该关系。

  相关解决方案