【论文阅读】Attention Guided Graph Convolutional Networks for Relation Extraction

把句法依存树当成输入
在n元关系抽取,大规模句子级别关系抽取都能充分利用依存树的信息
https://github.com/Cartus/AGGCN_TACRED

文章目录

创新:

提出soft pruning策略,把一颗完整的依存树送到全连通边加权图里。
这里的权重就通过attention学习得到

【论文阅读】Attention Guided Graph Convolutional Networks for Relation Extraction

GCN

给定一个图,有n个节点,我们可以用 n ∗ n n*n n∗n的邻接矩阵表达这个图结构。
可以把边的方向性扩展到模型中,用来编码依存树
每个结点都添加一个自环
如果依存树里节点i到节点j有边,那在邻接矩阵里 A i j = 1 A_{ij}=1 Aij​=1, A j i = 1 A_{ji}=1 Aji​=1。否则就都是0
第 l l l层节点 i i i卷积的运算,把输入特征的表示 h l − 1 h^{l-1} hl−1作为输入,输出就叫 h l h^{l} hl
【论文阅读】Attention Guided Graph Convolutional Networks for Relation Extraction
最外面套的激活函数 ρ \rho ρ是ReLU
【论文阅读】Attention Guided Graph Convolutional Networks for Relation Extraction

注意力引导层

大多数现在的修建策略,都是预定义好的。根据一个已经建立好的邻接矩阵,把full tree修建成子树。

可以看作是hard attention。
(hard attention我记得就是,把权重最高的那个设为1,其他的不考虑了,都搞0)

作者认为这种修剪策略太粗暴了,丢失了很多信息。提出soft pruning策略,在attention层,也就是把权值赋给每个边。

在attention层,我们把早期的依存树,扔到一个全连通边加权图,通过构建邻接矩阵 A → \overrightarrow{A} A

邻接矩阵里的值 A i j A_{ij} Aij​,就表示从结点i到节点j的权值,可以通过attention构建。

拿到 A → \overrightarrow{A} A ,就可以把他作为后面的输入

在本文, A → \overrightarrow{A} A 用的多头注意力,可以使得模型获得不同子空间的信息。

【论文阅读】Attention Guided Graph Convolutional Networks for Relation Extraction
Q K都等于 h l − 1 h^{l-1} hl−1

图里就显示了,把一个标准的邻接矩阵转换成多头注意力引导的邻接矩阵

密连接层

为了捕获更加结构化的信息,需要加个密连接
加上以后可以训练更深层的网络,学到局部和远程信息
已经知道GCN有L层,比如第i层,他的每一层都连接到 他前面的i-1层上。图里画了。
定义g作为初始结点表示,和层里节点表示的连接。
【论文阅读】Attention Guided Graph Convolutional Networks for Relation Extraction
每一个密连接,都有L个子层
这些子层的维度, d h i d d e n d_{hidden} dhidden​可以由层数 L L L和初始特征维度 d d d决定。
作者定义 d h i d d e n = d / L d_{hidden} =d/L dhidden​=d/L

比如说,密连接层有3个子层,输入维度是300,每个子层的 d h i d d e n d_{hidden} dhidden​=100
搞完以后把每个子层的输出拼接起来,输出的维度就还是300

因为我们有N个attention guide 临接矩阵,就需要N个密连接层
因此,计算改成这样的
【论文阅读】Attention Guided Graph Convolutional Networks for Relation Extraction

线性组合层

【论文阅读】Attention Guided Graph Convolutional Networks for Relation Extraction
来一个线性组合层,去把N个密连接的输出整合起来。
【论文阅读】Attention Guided Graph Convolutional Networks for Relation Extraction
h o u t h_{out} hout​把N个密连接的输出拼接起来。

关系抽取层

经过上面一系列操作,就获得了所有token的隐藏表示
首先获得句子的表征
【论文阅读】Attention Guided Graph Convolutional Networks for Relation Extraction
这里的mask就选择句子中,不是实体的标注表示
【论文阅读】Attention Guided Graph Convolutional Networks for Relation Extraction
f f f是一个max pooling

相似的,也可以获得第i个实体的表示
【论文阅读】Attention Guided Graph Convolutional Networks for Relation Extraction
实体表示和句子表示拼接起来,送到前馈神经网络,得到 h f i n a l h_{final} hfinal​
【论文阅读】Attention Guided Graph Convolutional Networks for Relation Extraction
最后, h f i n a l h_{final} hfinal​再逻辑回归做个分类


本质上还是一个关系分类任务,为什么都要说自己是关系抽取呢,疑惑

上一篇:CS224n-2019 -《Neural Machine Translate, seq2seq with Attention》


下一篇:python3.5.1语法