该paper下载地址为 https://www.aclweb.org/anthology/P16-1123 ,它是ACL会议(NLP国际顶级会议之一)的录用论文,而且被引用100多次,所以具有一定的研究意义。它主要提出了一个基于多Attention机制CNN网络的实体关系抽取方法。
在本文中作者运用了两个层面的attention机制,分别应用在输入序列中各个词对两个实体之间的注意力,以及在混合层上针对目标类别的attention。同时作者又改进了目标函数,该目标函数被认为在抽取任务上有更好的效果。 模型的整体结构是: 目标函数:对于整个网络而言,网络的输出应该为对该输入序列编码后映射在实体关系空间之中的向量,那么同样地网络会学习出对应每一类实体关系的向量。基于这两个向量作者提出了一种基于距离的目标函数: 网络输入:沿用关系分类的输入方式,对于该句中的每个词语的representation分别由其词向量以及与两实体位置关系的向量三部分串联,作为该词的向量,又为该词设定一个大小为k的窗口,那么对于一个词,其最终的的embedding就是: 输入端Attention: 如图中所描述的,在输入层面的Attention部分是两个分别关于实体对上下文相关的对角矩阵,该矩阵中各元素是该词语与给定实体的相关程度,也就是分配在该词上对于实体的注意力。网络训练的目标之一就是训练出这两个矩阵。首先,作者所构建的注意力矩阵对角线各元素是输入该位置对应的词与实体二者之间向量的内积。对于该矩阵,其中衡量词与实体的相关程度: 对于 j = 1 , 2 j=1,2 j=1,2 两个相关因子,作者提出了三种处理方式,分别是直接平均,串联以及求两向量之间的距离。用该因子乘以之前构造的输入向量,作为输入层的输出。这个输出中遍加入了输入词语实体的attention。
卷积层和混合层attention: 在卷积层中,作者使用了双曲正切作为激活函数,选取窗口大小进行卷积这与一般的CNN的处理方式是相同的。事实上根据文中的描述,作者的做法是对窗口大小中各输入向量的对应维度进行卷积的。
在混合层中作者提出了所谓的attention-based pooling的混合方法。作者认为利用这样的方法有可能会抽取出部分有意义的n-gram短语。作者首先构建了一个相关性矩阵来表达所捕获卷积层输出与实体关系矩阵之间的联系: 其中R是卷积核的编码结果,而W是实体关系矩阵。U是需要训练的参数。然后将该矩阵softmax为混合层的注意力矩阵,并用该矩阵与卷积层输出相乘,也就是加入混合中的attention,然后将每一维度的最大值取出,便得到了网络的输出:
此次模型参考代码链接为 https://github.com/lawlietAi/relation-classification-via-attention-model 。实验环境为pytorch 1.0,但是经过实践后,实验结果却并不好。可能代码实现或者其他点有一些trick(或者是针对特别的数据效果比较好),才能达到论文中的效果。
herosunly 认证博客专家 算法研究员 天池冠军 签约作者 985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池安全恶意程序检测第一名,科大讯飞阿尔茨海默综合症预测挑战赛第四名,科大讯飞事件抽取挑战赛第七名,Datacon大数据安全分析比赛第五名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法行业就业。希望和大家一起成长进步。