DisenE: Disentangling Knowledge Graph Embeddings

解耦知识图谱嵌入

创新点:本文利用注意力机制将实体的表示分解为了多个部分

1 动机

  • 以往对知识图谱嵌入的研究,通常是基于黑盒模型的,这导致很难对学习到的表示进行解释
  • 于是本文引入注意力机制,根据实体之间的关系,使模型显式集中在实体嵌入的几个component(我将其称为组成部分),简单来说,学习的实体表示可以解耦为多个向量

2 举例

在这里插入图片描述

  • 实体 “David Beckham” 可能包括几个组成部分,例如,“Characteristic”、“Work”、“Family”、"Places"等
  • 对于关系 “country”、“live_city”,实体 “David Beckham” 应该集中在"Places";对于关系"team_of",实体 “David Beckham” 应该集中在"Work"。

注意:从这个例子,我们就可以看出一个实体可能包含多个组成部分,也就是可以将实体嵌入分为多个独立的部分

3 模型架构

在这里插入图片描述

该示意图给出的 l=4 K=3 l表示关系嵌入维度,K表示组成的个数

简单理解:首先根据关系,计算出每一部分(component)的注意力系数,然后和对应部分的表示相乘后相加,就得到了最终的分数

3.1 part one

在这里插入图片描述

符号介绍:l表示关系嵌入的维度,d表示实体嵌入的维度,K表示component的个数,l=d/K

公式理解:第一个公式就是将头实体的第k个部分、关系和尾实体的第k个部分拼接在一起,然后和W1(训练参数)相乘,最后利用relu函数激活,得到的应该就是一个标量;第二个公式就是softmax

大家肯定存在一个疑问,这样做到底有什么用?

用通俗的话解释一下,一个实体有K个部分,此处的注意力系数算的是什么呢?算的是关系r和K个部分的相关性,如果更相关,我们应该给关系r很高的权重,也就是注意力系数

3.2 part two

在这里插入图片描述在这里插入图片描述

第一个是TransE模型学习的公式;第二个是ConvKB模型的公式(如果不懂可以去看一下这篇论文,非常值得一读)

根据part one得到的注意力系数,然后和TransE或者ConvKB计算得到的表示相乘后相加,W2(训练参数),可以得到最终的分数

3.3 train

在这里插入图片描述

loss分为以下三部分
其中 β 和 η 表示对应部分的权重

在这里插入图片描述

在这里插入图片描述

第一个公式 当三元组存在时,y=1,反之,y=-1 ;loss要尽可能的小,所以当y=1时,f要尽可能的小

第二个公式说 一个关系应该关注不同实体的相同component ,N=50时训练效果最好

第三个公式说 一个关系关注的component应该少一点,m=2时训练效果最好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值