斯坦福图机器学习CS224W笔记自用: Reasoning in Knowledge Graphs using Embeddings

1. 基于嵌入的知识图推理

  • 目标:如何对知识图进行多跳推理?
  • 知识图推理:
    • 回答多跳查询
      • 路径查询
      • 连接查询
    • Query2box
  • 示例:生物医学图在这里插入图片描述
  • 知识图谱上的预测查询
    我们是否可以进行多跳推理,即在不完整、大量的KG上回答复杂的查询?
    在知识图中,我们有三种查询:一跳查询、路径查询、连接查询,它们的含义如下:在这里插入图片描述
  • 预测一跳查询
    知识图完成问题相当于一跳查询的问题。
    在这里插入图片描述
  • 路径查询
    通过在路径上添加更多关系,将一跳查询泛化为路径查询。一个n-跳的路径查询q可以表示为
    q = ( v a , ( r 1 , . . . , r n ) ) q=(v_a,(r_1,...,r_n)) q=(va,(r1,...,rn))
    其中, v a v_a va是“锚”实体,路径查询的查询计划是一个链:在这里插入图片描述
    有如下问题在这里插入图片描述
    给定一个KG,如何回答类似的路径查询呢?我们可以通过遍历KG来回答这样的路径查询:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    用这样的方法回答路径查询问题似乎很简单:只需遍历图表即可。但问题是,KGs是不完整和未知的
    • 实体之间的许多关系缺失或不完整
      • 例如,我们缺乏所有的生物医学知识
    • 列举所有的事实需要花费大量的时间和成本,我们不能希望KG能够完全完整
      由于KG不完整,所以无法识别所有答案实体
      在这里插入图片描述

然而,先使知识图变完整,再遍历完整的(概率)知识图也是不现实的

  • 首先,“完整的”KG图是一个密集图,应用知识图完成之后,我们会得到一个图,其中大多数三元组 ( h , r , t ) (h,r,t) (h,r,t)都会有很多非零的概率链接,KG图将变得越来越密集
  • 其次,在这样的密集图上遍历时间代价是非常昂贵的,遍历的时间复杂度是路径长度L的指数函数: O ( d m a x L ) O(d_{max}^L) O(dmaxL)

因此,我们需要一种在不完整的知识图上回答基于路径的查询的方法,这样的方法隐含地估算和解释不完整的KG。

  • 任务:预测查询
    • 希望能够在隐式输入缺失信息的同时回答任意查询
    • 链接预测任务的泛化

2.回答KG上的预测查询

核心思想在这里插入图片描述

  • 将查询映射到嵌入空间,学会在这个空间里进行推理
    • 将查询嵌入欧几里得空间中的单个点:答案节点靠近查询。
    • Query2Box:将查询嵌入到欧几里得空间中的超矩形(box)中:答案节点包含在框中。

思想:在向量空间遍历KG

  • 关键思想:嵌入查询
    • 将TransE推广到多跳推理
      在这里插入图片描述
      在这里插入图片描述
      注意:嵌入过程只涉及向量加法,与KG中的实体无关!
  1. 在向量空间中嵌入路径查询
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    选择TransE的原因:
  • 我们可以训练TransE优化知识图完成目标(第10讲)
  • 由于TransE可以自然地处理组合关系,因此它可以通过使用关系嵌入的添加在多跳的潜在空间中进行转换来处理路径查询。
  • 而对于TransR/DistMult/ComplEx,由于它们不能处理组合关系,因此不能轻易扩展到处理路径查询

用这样的方法可以回答路径查询问题,那么,我们可以用逻辑连接操作回答更复杂的查询吗?比如联合查询。
在这里插入图片描述
我们如何通过KG遍历来回答这个问题呢?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后取交集
在这里插入图片描述
但是,如果知识图不完整,导致期间的重要环节缺失,我们就找不到所有的正确答案。
那么我们如何使用嵌入来隐含地估算缺失(ESR2,Assoc,Breast Cancer)?
直觉:ESR2与BRCA1和ESR1相互作用。
这两种蛋白都与乳腺癌有关。

3. Query2box:使用Box Embeddings对KG进行推理

我们如何用逻辑连接操作回答更复杂的查询?
在这里插入图片描述

  • 每个中间节点表示一组实体;我们如何表示它?

  • 我们如何定义潜在空间中的取交集操作?

  • Box Embeddings

    • 使用超矩形(boxes)嵌入查询在这里插入图片描述
    • 例如,我们可以将Fulvestrant的副作用嵌入一个包含所有答案实体的框中。
  • Intersection

    • boxes的交集定义明确
    • 当我们遍历KG以找到答案时,每个步骤都会产生一组可到达的实体。
    • 我们如何更好地建模这些集合?
      • boxes是一个强大的抽象,因为我们可以投影中心并控制偏移量,以建模框中包含的一组实体
  • 需要解决的问题:

    • 实体嵌入(参数数量:d|V|):实体被视为zero-volume boxes
    • 关系嵌入(参数数量:2d|R|):每个关系都有一个boxes并产生一个new boxes
    • 交集运算符f
      • 新运算符,输入为框,输出为框
      • 直观地模拟框的相交
  • 投影运算符 P \mathcal{P} P

    • 直觉:将当前框作为输入,并使用关系嵌入来投影和扩展框
    • P : B o x × R e l a t i o n → B o x \mathcal{P}:Box \times Relation \rightarrow Box PBox×RelationBox
      • C e n ( q ′ ) = C e n ( q ) + C e n ( r ) Cen(q') = Cen(q) + Cen(r) Cen(q)=Cen(q)+Cen(r)
      • O f f ( q ′ ) = O f f ( q ) + O f f ( r ) Off(q') = Off(q) + Off(r) Off(q)=Off(q)+Off(r)
        在这里插入图片描述
  • 几何交集运算符 J \mathcal{J} J

    • 将多个boxes作为输入并生成相交框box
    • 直觉:
      • 新box的中心应“接近”输入boxes的中心
      • 偏移量(框大小)应该缩小(因为相交集的大小小于所有输入集的大小)
    • j : B o x × . . . × B o x → B o x \mathcal{j}:Box \times ... \times Box \rightarrow Box j:Box×...×BoxBox 在这里插入图片描述
    • 新的box中心计算:
      • 直觉:中心应该在红色区域
      • 实现:中心是输入框中心的加权和, w i ∈ R d w_i \in \mathbb{R}^d wiRd由神经网路 f c e n f_{cen} fcen(具有可训练的参数)计算, w i w_i wi表示每个输入 C e n ( q i ) Cen(q_i) Cen(qi)中心的“自我注意力”分数在这里插入图片描述
    • 新的box偏移值计算
      • 直觉:偏移量应该小于输入框的偏移量
      • 实现:我们首先将输入框的最小偏移量取最小,然后通过引入一个新函数 f o f f f_{off} foff来提取输入boxes的表示,并使用sigmoid函数来保证收缩,从而使模型更具表现力。 f o f f f_{off} foff是一个神经网络(具有可训练的参数),它提取输入框的表示以提高表达能力。Sigmoid函数将输出压缩(0,1)区间在这里插入图片描述
  • example

    • 从锚点节点遍历KG:ESR2和Short of Breath 在这里插入图片描述
    • 在查询计划之后再次使用投影运算符在这里插入图片描述在这里插入图片描述在这里插入图片描述
    • 使用boxes交集运算符,阴影框表示查询的最终框嵌入在这里插入图片描述
    • Entity-to-Box Distance
      • 我们如何定义分数函数 f q ( v ) f_q(v) fq(v) f q ( v ) f_q(v) fq(v)捕获节点v作为查询q的答案的负距离)?
      • 给定查询框q和实体嵌入(框)v,
        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), 其中, 0 < α < 1 0<\alpha<1 0<α<1
        直觉:如果点被封闭在方框中,那么距离应该减小。
      • f q ( v ) = − d b o x ( q , v ) f_q(v)=-d_{box}(q,v) fq(v)=dbox(q,v)在这里插入图片描述
  • 扩展到联合操作 Extending to Union Operation

    • 我们可以用联合操作嵌入复杂查询吗?
      • 例如:“什么药物可以治疗乳腺癌或肺癌?”
    • 称为连接查询+析取
      • Existential Positive First-order (EPFO) queries存在性正一阶查询,我们将它们称为“与或”查询
    • 我们还可以设计一个析取运算符,并在低维向量空间中嵌入AND-OR查询吗?
  • 嵌入AND-OR查询

    • 我们可以在低维向量空间中嵌入AND-OR查询吗?
    • 不可以!允许联合任意查询需要高维嵌入!
    • example:
      • 给定三个查询 q 1 , q 2 , q 3 q_1,q_2,q_3 q1,q2,q3并带有答案集 ⟦ q 1 ⟧ = v 1 , ⟦ q 2 ⟧ = v 2 , ⟦ q 3 ⟧ = v 3 ⟦q_1⟧={v_1},⟦q_2⟧={v_2},⟦q_3⟧={v_3} [[q1]]=v1,[[q2]]=v2,[[q3]]=v3
      • 如果我们允许并集运算,我们可以将它们嵌入到二维平面中吗在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
      • 我们希望红点(答案)在方框内,而蓝点(否定答案)在框外
      • 对于三个点,二维平面式可以做到的,那四个点呢在这里插入图片描述在这里插入图片描述
      • 我们无法做到为 q 2 ∨ q 4 q_2 \vee q_4 q2q4设计一个box embedding使得只有 v 2 v_2 v2 v 4 v_4 v4在盒子中,而 v 1 , v 3 v_1,v_3 v1,v3在盒子外
    • 总结:给定任何M个具有非重叠答案的联合查询 q 1 , . . . , q M q_1,...,q_M q1,...,qM,我们需要Θ(M)的维数来处理所有OR查询
      • 对于真实世界的KG,例如FB15k,我们发现M≥ 13365,其中|V|=14951
      • 注意,这是针对任意OR查询的
    • 既然我们不能在低维空间中嵌入AND-OR查询,我们还能处理它们吗
    • 答案是可以,关键思想是,先去掉所有unions只在最后一步做union操作在这里插入图片描述
  • 析取范式

    • 任何AND-OR查询都可以转换为等价的DNF,即联合查询的析取
    • 给定任何AND-OR查询,
      q = q 1 ∨ q 2 ∨ . . . ∨ q m q=q_1 \vee q_2 \vee ... \vee q_m q=q1q2...qm
      其中, q i q_i qi的联合查询。
    • 现在我们可以首先嵌入所有 q i q_i qi,然后在最后一步“聚合”
  • q和实体之间的距离

    • 实体嵌入和DNF q = q 1 ∨ q 2 ∨ . . . ∨ q m q=q_1 \vee q_2 \vee ... \vee q_m q=q1q2...qm之间的距离定义为
      d b o x ( q , v ) = m i n ( d b o x ( q 1 , v ) , . . . d b o x ( q m , v ) ) d_{box}(q,v)=min(d_{box}(q_1,v),...d_box(q_m,v)) dbox(q,v)=min(dbox(q1,v),...dbox(qm,v))
    • 直觉:只要v是一个联合查询 q i q_i qi的答案,那么v应该是q的答案
    • 只要v接近一个联合查询 q i q_i qi,那么v应该接近嵌入空间中的q
    • 嵌入任何AND-OR查询的过程:
      1. 将q转换为一个等价的DNF q 1 ∨ q 2 ∨ . . . ∨ q m q_1 \vee q_2 \vee ... \vee q_m q1q2...qm
      2. 嵌入 q 1 q_1 q1 q m q_m qm
      3. 计算(box)距离 d b o x ( q i , v ) d_{box}(q_i,v) dbox(qi,v)
      4. 取所有距离中的最小值
      5. 最终得分 f q ( v ) = − d b o x ( q , v ) f_q(v)=-d_{box}(q,v) fq(v)=dbox(q,v)

4. 如何训练Query2box

4.1 Training Overview

  • 概述和直观(类似于KG完成):
    • 给定查询嵌入q,对于答案 v ∈ [ q ] v \in [q] v[q]最大化其分数 f q ( v ) f_q(v) fq(v)并最小化否定答案 v ∉ [ q ] v \notin [q] v/[q]的分数 f q ( v ′ ) f_q(v') fq(v)
  • 可训练的参数
    • 具有d|V|个参数的实体嵌入
    • 具有2d|R|个参数的关系嵌入
    • 交集运算符
  • 如何从KG完成一个查询,获得其答案和其否定答案来训练参数?
  • 如何分割KG进行查询回答?

4.2 Training

  • Training
    1. 从训练图 G t r a i n G_{train} Gtrain中随机抽取一个查询q,回答 v ∈ [ q ] G t r a i n v\in[q]_{G_{train}} v[q]Gtrain,以及一个负样本 v ′ ∉ [ q ] G t r a i n v'\notin[q]_{G_{train}} v/[q]Gtrain
      • 负样本:与v类型相同但不是答案的实体
    2. 嵌入查询q.
    3. 计算分数 f q ( v ) f_q(v) fq(v) f q ( v ) f_q(v) fq(v)
    4. 优化损失ℓ 来最大化 f q ( v ) f_q(v) fq(v)同时最小化 f q ( v ) f_q(v) fq(v)
      l = − l o g σ ( f q ( v ) ) − l o g ( 1 − σ ( f q ( v ′ ) ) ) l=-log\sigma(f_q(v))-log(1-\sigma(f_q(v'))) l=logσ(fq(v))log(1σ(fq(v)))

4.3 从模板生成查询:query generation from templates

在这里插入图片描述

  • 我们如何生成复杂的查询?

  • 我们从查询模板开始

  • 查询模板可以被视为查询的抽象

  • 我们通过用KG中的具体实体和关系实例化每个变量来生成查询

    • 例如,用ESR2(KG上的节点)实例化Anchor1
    • 用Rel1(KG上的边)实例化Assoc
  • 如何实例化给定KG的查询模板?在这里插入图片描述

  • 从实例化查询模板的答案节点开始,然后迭代实例化其他边和节点,直到我们固定所有锚节点在这里插入图片描述

  • 从实例化查询模板的根节点开始。从KG中随机选择一个实体作为根节点,例如,我们选择Fulvestrant在这里插入图片描述

  • 现在我们来看交集。实体集合的交集是Fulvestrant,那么自然这两个集合也应该包含Fulvestant在这里插入图片描述

  • 我们通过随机采样与当前实体Fulvestrant关联的一个关系来实例化模板中的投影边。
    例如,我们可以选择关系TreatedBy,并检查哪些实体与Fulvestrant在TreatedBy:{Breast Cancer}方面相关在这里插入图片描述

  • 我们首先查看一个分支,并将投影边与Breast Cancer相关的关系(例如Assoc)记录。然后,我们使用Assoc检查哪些实体与Breast Cancer有关:{ESR2}在这里插入图片描述

  • 然后我们查看第二个分支,并使用与Fulvestrant相关的关系(例如,CausedBy)将投影边接地。然后我们检查哪些实体与Fulvestrant的CausedBy连接:{Short of Breath}在这里插入图片描述

  • 我们从{Short of Breath}中选择实体,将其设置为锚节点在这里插入图片描述

  • 现在,我们实例化了一个查询q!

    • 查询q必须具有KG上的答案,其中一个答案是实例化的答案节点:Fulvestrant。
    • 我们可以通过KG遍历获得全部答案 [ q ] G [q]_G [q]G
    • 我们可以抽样负样本(答案) v ′ ∉ [ q ] G v' \notin[q]_G v/[q]G在这里插入图片描述

5. Example of Query2box

  • 可视化
    • 示例:“列出演奏弦乐的男性乐器演奏者”
    • 我们使用t-SNE将嵌入空间缩减为二维空间,以便可视化查询结果在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • 总结:
    • 我们介绍了在大型知识图上回答预测性查询。
    • 关键思想是通过导航嵌入空间来嵌入查询!
      • 我们通过组合学习的运算符来嵌入查询
      • 查询的嵌入接近于嵌入空间中的答案
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值