GNN-CS224W: 11 Reasoning over Knowledge Graphs

Query

在这里插入图片描述

One-hop Queries

转化为KG completion task

KG completion 实现

对候选tail做分类,即 ( h e a d , r e l a t i o n , t a i l ) (head, relation, tail) (head,relation,tail)是否存在

问题,怎么确定候选tail?难道所有的都要试一遍?

Path Queries

n hop query 可以表示为 q = ( v a , ( r 1 , … , r n ) ) q=(v_a, (r_1, \dots, r_n)) q=(va,(r1,,rn)), v a v_a va is anchor entity

how to get answer

traverse is not ok

假设KG是complete的,to answer path queries 只需要 traverse the KG

But, KGs are notoriously incomplete

所以我们该怎么办?

Can we first do KG completion and then traverse the completed (probabilistic) KG?

不行,因为completed KG is a dense graph, traversing a dense graph is very costly

TransE

key idea: embed query

类似TranE,TranE的优化目标是在embedding 空间里让 h+r 和 t 非常接近
h+r可以认为是query,也就是让query 和t 在空间里接近

具体方法如下图所示
在这里插入图片描述

这样的方式可以回答任何path queries

TranE可以这样做的一个原因是它可以handle composition relations,而上一节讲到的其他方法都不行

问题:这样的方法效果如何?
拿到query embedding后怎么找符合条件的entity?遍历一遍吗?

Conjunctive Queries

如果KG是completed的,则可以通过traverse得到,然而KG并不是completed

logical conjunction operation (逻辑连接操作): 应该指的是将两个集合之间的逻辑与、或等操作

query/entity to box

当我们循着query traverse the graph时,每一次查询都得到一些entity,这些entity所在的空间可以定义为一个embedding space中的box,且box求交集很容易。

box由一个中心点和一个offset组成,可以表示为

q = ( C e n t e r ( q ) , O f f s e t ( q ) ) q=(Center(q), Offset(q)) q=(Center(q),Offset(q))

即一个中心点(embedding space的一个坐标,一个向量),一个距离中心点的距离 (现在还不知道距离是怎么表示的,是一个数值吗?还是一个向量?应该是一个向量,因为如果是一个距离数值,则不再是box,而是一个球体)

a entity can be seen as a zero-volume box,即offset为0,与transE空间中的entity一样,相当于空间中的一个点

如下图所示,为一个query (head, relation)对应的box,box内的点表示满足query的entity

在这里插入图片描述

relation projection operator

relation projection operator指的是一个输入为(box, relation)输出为new box的function?还是就是一个relation(transform的方式都一样)?

C e n t e r ( q ′ ) = C e n t e r ( q ) + C e n t e r ( r ) Center(q')=Center(q)+Center(r) Center(q)=Center(q)+Center(r)
O f f s e t ( q ′ ) = O f f s e t ( q ) + O f f s e t ( r ) Offset(q')=Offset(q)+Offset(r) Offset(q)=Offset(q)+Offset(r)

例如下图:
在这里插入图片描述

问题:所以relation vector 是2 个向量吗?一个代表center的移动,一个代表offset各个维度的移动?
问题:offset向量可以负的吗?还是只能是正的(放大)?因为如果从entity (0体积)开始不可能是负的

Geometric Intersection Operator

Take multiple boxes as input and produce the intersection box

center

新的center为几个输入boxes的center向量的加权求和,如下式
C e n t e r ( q i n t e r ) = ∑ i w i ⊙ C e n t e r ( q i ) Center(q_{inter})=\sum\limits_{i} w_i \odot Center(q_i) Center(qinter)=iwiCenter(qi)

其中 ⊙ \odot 为Hadamard product (element-wise product), C e n t e r ( q i ) Center(q_i) Center(qi)为一个center向量, w i w_i wi为一个向量,计算方式如下:
w i = exp ⁡ ( f c e n t e r ( C e n t e r ( q i ) ) ) ∑ j ( f c e n t e r ( C e n t e r ( q j ) ) ) w_i=\frac{\exp{( f_{center} ( Center(q_i) ))}}{\sum\limits_j ( f_{center} ( Center(q_j) ))} wi=j(fcenter(Center(qj)))exp(fcenter(Center(qi)))

其中 f c e n t e r ( ) f_{center}() fcenter()为一个trainable neural network

w i w_i wi计算时是向量的每个维度单独计算的

问题:每个维度单独计算意味着每个维度需要一个参数矩阵,这样参数会不会过多了?

offset

O f f s e t ( q i n t e r ) = m i n ( O f f s e t ( q 1 ) , … , O f f s e t ( q n ) ) ⊙ σ ( f o f f s e t ( O f f s e t ( q 1 ) , … , O f f s e t ( q n ) ) ) Offset(q_{inter})=min(Offset(q_1), \dots , Offset(q_n)) \odot \sigma(f_{offset} (Offset(q_1), \dots , Offset(q_n))) Offset(qinter)=min(Offset(q1),,Offset(qn))σ(foffset(Offset(q1),,Offset(qn)))

其中 f o f f s e t f_{offset} foffset为一个trainable neural network,

m i n ( O f f s e t ( q 1 ) , … , O f f s e t ( q n ) ) min(Offset(q_1), \dots , Offset(q_n)) min(Offset(q1),,Offset(qn))应该是各个offset向量的维度分别求最小值

使用 σ \sigma σ的目的是保证intersection box比原先的小

问题: f o f f s e t ( O f f s e t ( q 1 ) , … , O f f s e t ( q n ) ) f_{offset} (Offset(q_1), \dots , Offset(q_n)) foffset(Offset(q1),,Offset(qn))应该得到一个和原offset向量维度一样的向量,但是没讲要怎么做

entity to box distance

目的是为了判断一个entity (space中的一个点)是否在box里

距离定义:
d b o x ( q , v ) = d o u t ( q , v ) + α ⋅ d i n ( q , v ) d_{box}(q,v)=d_{out}(q,v)+\alpha \cdot d_{in}(q,v) dbox(q,v)=dout(q,v)+αdin(q,v)

距离由2部分组成, d i n ( q , v ) d_{in}(q,v) din(q,v)为从中心点到box边界的距离,表示box 内部的距离, d o u t ( q , v ) d_{out}(q,v) dout(q,v)为从box的边界到entity 点的距离

0 < α < 1 0<\alpha<1 0<α<1,是为了降低内部距离的权重,(问题:为什么要降低内部距离的权重,是因为训练时根据内部距离优化意义不大吗?就是说训练的目标是使得外部距离变小吗?)

不同的box外的entity在box内的距离是不同的,因为box各个维度可能长度不同,box不是球体

问题:距离就是空间的欧氏距离吗?这一点没有讲到

得到距离后要将距离转化为 score function,如下式
f q ( v ) = − d b o x ( q , v ) f_q(v)=-d_{box}(q,v) fq(v)=dbox(q,v)

score function为负距离的意思是使得如果距离小,则score大,距离大,则score小

OR

处理intersection时,操作是将多个box求交叉部分,新的box是完全属于原有的多个box中的每一个

当用类似的方法处理OR时,操作是用一个大box将输入的多个小box包括进去,这样小box的每一部分都在新的大box里,但是大box里一定会包含不在输入的多个小box里的entity,所以这样的操作是不可行的。需要在更高维的空间才能准确的只包括输入的小box。

OR操作分为以下2步来处理

1. 分解query

为了可以处理or,改写query为它的等价形式,改写的方式为将or 操作放在最后

任何or query可以改写为多个分开的操作,如下式(问题:为什么所有的都可以?)

q = q 1 ∪ q 2 ∪ ⋯ ∪ q m q=q_1 \cup q_2 \cup \cdots \cup q_m q=q1q2qm

q i q_i qi为分解得到的不包含or的query

分解操作可能会产生大量的(指数级)分开的操作,但是因为计算效率高,所以数量多不影响(问题:为什么计算效率高到不影响?)

2. OR at Last Step
Distance between q and entity

d b o x ( q , v ) = min ⁡ ( d b o x ( q 1 , v ) , … , d b o x ( q m , v ) ) d_{box}(q,v)=\min(d_{box}(q_1,v), \dots, d_{box}(q_m,v)) dbox(q,v)=min(dbox(q1,v),,dbox(qm,v))

entity和query q的距离为entity和分解后的各个query的距离的最小值。

相当于执行了最后一步的 OR 操作,只要entity满足了某一个 q i q_i qi,就满足了整体 q q q

最终的score还是负的距离: f q ( v ) = − d b o x ( q , v ) f_q(v)=-d_{box}(q,v) fq(v)=dbox(q,v)

问题:分解操作是自动进行的吗?怎么知道应该怎么分解?

问题:只有交和并操作吗?其他逻辑操作是不需要的吗?
问题:只能问entity吗?能问relation吗?
问题:path query和conjuctive query是需要2个模型来处理吗?

Training

Intuition:给定一个query q q q,使得所有正例的score f q ( v ) f_q(v) fq(v)变大,所有负例的score f q ( v ′ ) f_q(v') fq(v)变小

要训练的参数:
  1. Entity embeddings with d ∣ V ∣ d |V| dV params
    entity 的embedding就是空间中的一个点
  2. Relation embeddings with 2 d ∣ R ∣ 2d |R| 2dR params
    包括表示中心点的移动的向量和表示offset变化的向量
  3. Intersection operator
步骤
  1. 给定KG
  2. 确定query templates
    问题:query template是哪里来的?穷举吗?穷举的话也要有范围的,例如path query的长度最长是多少?还是从给定的训练语料中得到?
  3. 填充各个query template 得到 query实例
  4. 确定每个query的正例和负例
  5. 最小化loss function,使得正例score高,负例得分低

问题:
怎么得到候选entity?
负例哪里来?
query从哪来?每次只sample一个正例和一个负例吗?
有训练语料(query, answer)吗?template是从训练语料中得到吗?

Generate queries from multiple query templates
query template 和 query

query template 是类似图结构的东西

给定query template以后,在对应的位置填充 sample 得到的entity和relation即可得到具体的query,下图为一个例子

在这里插入图片描述

如何填充query template
  1. 先找到一个answer entity
  2. 从answer entity 一步一步按照template 填充关系或者entity,最终得到anchor entity,也就得到了真实query,此时已经有了query和一个positive sample
    问题:如果过程里发现没有满足条件的entity或者relation怎么办?
  3. 根据query找一个negative sample
    问题:如何根据query找negative sample?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值