cs224w 图神经网络 学习笔记(十七)Reasoning over Knowledge Graphs

课程链接:CS224W: Machine Learning with Graphs
课程视频:【课程】斯坦福 CS224W: 图机器学习 (2019 秋 | 英字)

1. 什么是知识图谱(Knowledge Graph)

知识图谱可以看作是是一个图,图中的节点表示实体(entities),边表示实体之间的关系(relations)。
在这里插入图片描述
一些知识图谱的例子:
在这里插入图片描述
知识图谱的应用:

  • 信息搜索(Serving information)
  • 智能问答和对话(Question answering and conversation agents)

2. Knowledge Graph Completion 知识图谱补全

虽然现在已经有了很多可用的知识图谱,但是这些知识图谱都是不完备的,因为想要一步到位地构建一个完备的知识图谱是很困难的。那么,有没有什么办法可以预测知识图谱中可能存在的关系呢?(Can we predict plausible BUT missing links?)

Knowledge Graph Completion
在这里插入图片描述

2.1 Knowledge representation

知识图谱补全的主要任务就是预测可能存在的边及其类型。在知识图谱中,边通常通过三元组 ( h , r , t ) (h,r,t) (h,r,t)来表示。
在这里插入图片描述
这些边(三元组)可以表示不同的关系类型:

  • Symmetric Relations——对称关系: r ( h , t ) ⇒ r ( t , h ) , ∀ h , t r(h,t) \Rightarrow r(t,h), \forall h,t r(h,t)r(t,h),h,t。例如家人、室友关系,由 h h h t t t的室友可以得到 t t t h h h的室友。
  • Composition Relations——组合关系: r 1 ( x , y ) ⋀ r 2 ( y , z ) ⇒ r 3 ( x , z ) , ∀ x , z r_1(x,y) \bigwedge r_2(y,z) \Rightarrow r_3(x,z), \forall x,z r1(x,y)r2(y,z)r3(x,z),x,z。例如: y y y x x x的母亲, z z z y y y的父亲,可以推出 z z z x x x的外公。
  • 1-to-N, N-to-1 relations——链式关系: r ( h , t 1 ) , r ( h , t 2 ) , ⋯   , r ( h , t n ) 都 为 真 r(h,t_1),r(h,t_2),\cdots,r(h,t_n)都为真 r(h,t1),r(h,t2),,r(h,tn)。例如, t 1 , t 2 , ⋯   , t n t_1,t_2, \cdots,t_n t1,t2,,tn都是 h h h的学生。

那么,我们怎样在向量空间中表示这个三元组呢?我们首先明确一个基本的想法,就是假如在向量空间中,我们给定了向量 ( h , r ) (h,r) (h,r),得到的向量应该尽可能地接近向量 t t t。那么,我们就需要解决两个问题:

  • How to embed ( h , r ) (h,r) (h,r) ?
  • How to define closeness?

2.2 TransE

我们首先介绍第一种知识图谱的表示方法——TransE。
在这里插入图片描述
因为要让向量 ( h , r ) (h,r) (h,r)尽可能地接近向量 t t t,一个很直接的想法就是令 h + r = t h+r=t h+r=t。那么,对于一个三元组来说,它的得分就是 h + r h+r h+r t t t之间的距离,即 f r ( h , t ) = ∣ ∣ h + r − t ∣ ∣ f_r(h,t)=||h+r-t|| fr(h,t)=h+rt。那么,在训练过程中的cost function就是:
在这里插入图片描述
在课程的第七章给出了TransE的算法的伪代码:
在这里插入图片描述
因为这个算法非常经典,网上也有很多关于这个算法的解释,可以自己多去了解一下。

利用transE进行知识图谱中的链接预测——
在这里插入图片描述
TransE算法可以很好地解决Composition Relations,但是不能很好地解决Symmetric Relations和1-to-N, N-to-1, N-to-N relations。

2.3 TransR

TransR算法则是从另一个角度来进行向量表示。
在这里插入图片描述
TransR可以处理Symmetric Relations和1-to-N, N-to-1, N-to-N relations,但不能处理Composition Relations。
在这里插入图片描述

3. 基于知识图谱的查询/推理

我们能否进行多跳推理,即在一个不完整的、庞大的知识图谱上高效地回答复杂的查询呢?

我们首先来看一下基于知识图谱的查询类型:
在这里插入图片描述

3.1 One-hop Queries和Path Queries( 路径查询)

我们可以链路预测问题看成一个单跳推理(查询问题)。比如:
在这里插入图片描述
Path Queries就是在知识图谱上的单跳查询的组合(也就是多跳查询)。(Generalize one-hop queries to path queries by adding more relations on the path.)。Path queries可以表示为
q = ( v a , r 1 , ⋯   , r n ) q=(v_a,r_1,\cdots,r_n) q=(va,r1,,rn)

其中 v a v_a va是固定的节点,查询的结果通过 q q q来返回,经过 r 1 , ⋯   , r n r_1,\cdots,r_n r1,,rn序列表示的关系之后,是否能返回结果。path queries的计算图是链式结构:
在这里插入图片描述
Traversing Knowledge Graphs

下面是一个例子,表示在知识图谱中查询:Where did Turing Award winners graduate?(图灵奖获得者毕业于哪里?)

StepGraph
首先,我们确定一个开始的节点 v a v_a va为“Turing Award”在这里插入图片描述
从该节点开始,找到和该节点连接并且关系为win的节点——{“Pearl”,“Hinton”,“Bengio”}在这里插入图片描述
从节点{“Pearl”,“Hinton”,“Bengio”}开始找到与这些节点相连并且关系为“Graduate”的节点,这些节点就是我们要找的答案!在这里插入图片描述

但是,我们前面说到,我们现在可用的知识图谱大都是不完备的,如果知识图谱不完备,我们该怎样找到我们想要的答案呢?

我们可以先进行链路预测(补全),然后再进行路径查询么?——这是个看起来很有效的办法,但是不可能实现,因为庞大的知识图谱实际上是稠密的,因此在知识图谱上进行路经查询的算法时间复杂度非常高。

我们这里介绍一个有效的解决方案——embed queries!换句话说,我们可以将TransE推广到多跳查询中。
在这里插入图片描述
我们可以将查询结果看成是查询起点和关系的向量组合。那么,如果我们想知道实体 v v v是不是查询结果 q q q,我们只需要进行一个邻域搜索就行——
在这里插入图片描述
同样的,我们还是用上面的例子来整体了解一下这个过程——Where did Turing Award winners graduate?

Computation GraphEmbedding Space
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

3.2 Conjunctive Queries 连接查询

那么,我们能不能进行更加复杂的查询呢?例如:

在这里插入图片描述
在这个例子里面,我们的anchor node就不只是一个了,而是“Turing Award”和“Canada”两个。
在这里插入图片描述

Computation GraphEmbedding Space
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

我们同样可以将TransEt推广到Conjunctive Queries中,但是,这里有一个问题——How do we take intersection of several vectors in the embedding space?

我们设计一个neural intersection operator J J J 实现。且该算子为一个排列不变量。
在这里插入图片描述
该算子的计算结构如下:
在这里插入图片描述
那么,有了这个算子之后,我们就可以继续后续的步骤了:

Computation GraphEmbedding Space
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

给定一个实体的向量 v v v,查询的向量 q q q,以及它们之间的距离 f q ( v ) = ∣ ∣ q − v ∣ ∣ f_q(v)=||q-v|| fq(v)=qv。那么需要训练的参数有:
在这里插入图片描述
训练过程的策略和TransE是一样的。整个过程如下:
在这里插入图片描述
当然,这个方法也有局限性——Taking the intersection between two vectors is an operation that does not follow intuition. 我们在路径查询的过中,每一步都有可能产生很多实体的集合,选取这些实体的向量的intersection如果不可行,那么有没有更好地模型来表示这些集合呢(How can we better model these sets)?Can we define a more expressive geometry to embed the queries?

4. Query2Box: Reasoning with Box Embeddings

这一节的内容主要是老师的一些工作,发表在论文:Query2box: Reasoning over KGs in Vector Space using Box Embedding中。具体的可以看一下其他博客的论文解读

这个是该论文/项目的Github地址:https://github.com/hyren/query2box

看名字论文的作者应该是跟着Jure学习的两个中国学生,如果有什么不理解或者有什么问题的话,直接到github里面的邮箱hyren@cs.stanford.edu发邮件询问,用中文的话我觉得问题应该不大。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值