笔记:Attention as Relation: Learning Supervised Multi-head Self-Attention for Relation Extraction

2022/6/3 23:20:20

本文主要是介绍笔记:Attention as Relation: Learning Supervised Multi-head Self-Attention for Relation Extraction,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Attention as Relation: Learning Supervised Multi-head Self-Attention for Relation Extraction

作者:Liu et al.,IJCAI 2020.

目录

  • 简介
  • 方法
  • 实验
  • 总结

1 简介

本文主要针对联合抽取中的关系重叠问题,提出一个基于attention的联合抽取模型,主要创新点还是其中核心的supervised multi-head selfattention机制。

2 方法

模型整体结构如图2所示,大致分为三个模块Encoding layer、Entity Extraction Module、Relation Extraction Module。

Encoding Layer. 没有采用如BERT这类预训练语言模型,使用BiLSTM作为句子编码器,golve和同样使用BiLSTM得到的character-level的关于词形态信息的embedding拼接来初始化word embedding。

Entity Extraction Module. 看作是序列标注任务使用CRF解码,BIO标注方案,其实若不看Relation Detection Module,这不就是个标准的NER任务模型么,编码器BLSTM,解码器CRF。

Relation Detection Module. 核心部分,为了能够处理关系重叠问题,本文将此relation dection任务看作是多标签分类问题,同时设计一个监督的多头self-attention机制通过将每个关系类型看作是一个独立的子空间来处理它,具体来说,在token-level计算attention,使得模型能够更好的学到细粒度的correlation semantics。如图2所示,先将序列\(H=\{h_1,...,h_N\}\)线性变换得到\(A=\{a_1,...,a_N\}\),实体抽取部分也变换了,可能是为了得到一个专用于当前子任务的输入序列吧。然后整个Relation Detection Module都共享同一个输入序列A,说是共享此input hidden state representations模型能够捕获到不同关系类型之间的交互(有些道理吧多头attention都是用的同一个输入但感觉很玄学没法明确解释为什么就可以),之后基于此输入序列,类似transformer多头自注意力,也就是说做了M(M个关系类型)次dot-product attention操作,每组Q、K计算得到的相似度矩阵\(G^m\in \mathbb{R}^{N\times N}\)相当于一个关系空间,N为序列长度,那么矩阵\(G^m\)中的每个元素\(G_{i,j}^m\)表示,针对当前第m个关系类型,第i个token和第j个token之间的关联程度,后续用来抽取关系。

同时作者加入了监督信息通过最大化公式(10)(11)的概率使模型能够更好的探测关系类型,因此目标函数即为公式(12)BCE(Binary CrossEntropy)\(^{[2]}\)。

Joint Learning. 联合训练,简单处理,损失函数相加\(\mathcal{L}(\theta)=\mathcal{L}_E+\mathcal{L}_R\)。

Inference. 推理阶段即抽取三元组。首先实体根据BIO标签很容易抽取,那么,给定两个实体\(e_i=\{x_{pi},...,x_{qi}\},\space e_j=\{X_{pj},...,x_{qj}\}\),对于第m个关系来说这两个实体的关联程度\(\delta\)的计算如公式(14)即两个实体中所有token pair的关联程度之和取平均。

3 实验

数据集为NYT、WebNLG,肯定不是现在的sota了结果就不看了,消融实验也没什么东西就证明了一下这个supervised multi-head self-attention机制确实对关系重叠的关系抽取有用。

总结

模型整体中规中矩,本文两个子任务完全独立的,token-level的多头注意力机制的设计确实不错,上一篇ENPAR\(^{[3]}\)有些地方和这篇很相似,而且这种应该算是pipeline方法的?又和之前看的pipeline有些不太一样,更偏向多任务学习做关系抽取?而且这里的token-level更像token pair嘛尤其是inference阶段的token pair一组一组处理,某些方面有点像table filling的结构。

多任务学习如何理解?是利用共享网络或网络中的部分结构来学习相同的特征么?还是有多个任务如联合RE中除了实体和关系抽取两个子任务外,往往会再加入一些辅助任务使其训练过程中根据其目标函数使得模型中某些结构达到想要的效果\(Loss=L_e+L_r+L_{task1}+L_{task2}\)。

参考

[1] Jie Liu1∗ , Shaowei Chen1 , Bingquan Wang1 , Jiaxin Zhang1 , Na Li2 and Tong Xu3.Attention as Relation: Learning Supervised Multi-head Self-Attention for Relation Extraction.IJCAI 2020.

[2] 损失函数 | BCE Loss(Binary CrossEntropy Loss)_一颗磐石的博客-CSDN博客_bce损失函数.

[3] Yijun Wang1, 2, Changzhi Sun4, Yuanbin Wu3, Hao Zhou4, Lei Li4, and Junchi Yan1, 2.ENPAR:Enhancing Entity and Entity Pair Representations for Joint Entity Relation Extraction.ACL 2021.



这篇关于笔记:Attention as Relation: Learning Supervised Multi-head Self-Attention for Relation Extraction的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程