cs224w 图神经网络 学习笔记(十七)Reasoning over Knowledge Graphs
课程链接:CS224W: Machine Learning with Graphs课程视频:【课程】斯坦福 CS224W: 图机器学习 (2019 秋 | 英字)目录1. 什么是知识图谱(Knowledge Graph)2. Knowledge Graph Completion 知识图谱补全2.1 Knowledge representation2.2 TransE2.3 TransR3. 基于知
课程链接: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+r−t∣∣。那么,在训练过程中的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?(图灵奖获得者毕业于哪里?)
| Step | Graph |
|---|---|
| 首先,我们确定一个开始的节点 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 Graph | Embedding Space |
|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
3.2 Conjunctive Queries 连接查询
那么,我们能不能进行更加复杂的查询呢?例如:

在这个例子里面,我们的anchor node就不只是一个了,而是“Turing Award”和“Canada”两个。
| Computation Graph | Embedding Space |
|---|---|
![]() |
![]() |
![]() |
![]() |
我们同样可以将TransEt推广到Conjunctive Queries中,但是,这里有一个问题——How do we take intersection of several vectors in the embedding space?
我们设计一个neural intersection operator J J J 实现。且该算子为一个排列不变量。
该算子的计算结构如下:
那么,有了这个算子之后,我们就可以继续后续的步骤了:
| Computation Graph | Embedding Space |
|---|---|
![]() |
![]() |
![]() |
![]() |
给定一个实体的向量 v v v,查询的向量 q q q,以及它们之间的距离 f q ( v ) = ∣ ∣ q − v ∣ ∣ f_q(v)=||q-v|| fq(v)=∣∣q−v∣∣。那么需要训练的参数有:
训练过程的策略和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发邮件询问,用中文的话我觉得问题应该不大。
更多推荐














所有评论(0)