图谱补全

  • 知识图谱的普遍特征:海量、不全(很多边是缺失的)

    • 但对于一个大型KG而言,枚举所有可能的联系几乎是不可能的
    • 我们能否找到一个方法来预测缺失的边?
  • 可以借助联系以及联系的类型进行对缺失联系的预测

    • KG中的边表现为三元组(h,r,t)的形式,即head/relation/tail
    • 实体与关系都转化成嵌入向量的形式
    • 给定一个三元组(h,r,t),优化的目标是(h,r)的嵌入向量尽可能靠近t的嵌入向量。那么如何获得(h,r)的嵌入向量,以及如何定义距离?

image.png

  • 关系模式:
    • 对称关系:Reasoning over Knowledge Graphs - 图2
    • 推导关系:Reasoning over Knowledge Graphs - 图3
    • 一对多、多对一关系:Reasoning over Knowledge Graphs - 图4均为真


  • TransE 算法:
    • 设训练集Reasoning over Knowledge Graphs - 图5为三元组的集合,实体集合为Reasoning over Knowledge Graphs - 图6,关系集合为Reasoning over Knowledge Graphs - 图7,边缘记作Reasoning over Knowledge Graphs - 图8(有效元组与无效元组所能容忍相距的最小距离),嵌入向量维度为k
    • 对所有关系集合中的关系Reasoning over Knowledge Graphs - 图9,将其正态初始化,并将它归一化;对所有实体集合中的实体e,也将其正态初始化
    • 开始循环:进行小批量训练。对于每个batch中的三元组,我们进行一次负采样(负采样得到的结果不在原知识图谱中出现)
    • 通过损失函数进行训练,普通样本对于优化是正向的结果,相反负采样得到的结果是反向的结果:

Reasoning over Knowledge Graphs - 图10

  • 计算完一轮之后继续训练,直到遍历完训练集为止

image.png

  • TransE
    • 对一个三元组(h,r,t)而言,理想状态下h+r=t,我们可以定义一个得分函数Reasoning over Knowledge Graphs - 图12,得分越小越精确,Reasoning over Knowledge Graphs - 图13
    • Reasoning over Knowledge Graphs - 图14更像是一个正则化范数。一旦有效三元组与无效三元组之间的距离大于该值,那么训练就应停止
    • 关系预测。比如若图灵奖实体指向了某一范围中的实体,那么我们就可以将所有该范围内的实体与图灵奖实体建立联系。

image.png

  • TransE支持推理机制

image.png

  • 局限性:对称性,实体关系多重性均无法表示(若一个实体与多个实体都有着同种类型的关系,那么TransE的推理最终只能指向一个实体)

image.pngimage.png

  • TransR:实体的嵌入向量存储在D维实体空间内,而关系的嵌入向量存储在k维关系空间中。Reasoning over Knowledge Graphs - 图19即映射矩阵

image.png

  • 支持对称性,实体关系多重性的表示

image.pngimage.png

  • 所以,两种算法各有各的好处:

image.png

Path Queries

  • 路径问答:在一个规模巨大但不全的图谱上如何高效进行多跳推理?
    • 实际上,关系预测的工作就是一种单跳的问答

image.png

  • 通过在链路上增加更多的关系,我们可以将单跳的问句泛化为问句链。问句链q可表示为Reasoning over Knowledge Graphs - 图25

image.png

  • 对于一个完整的图谱,答案可以由遍历KG获得:

image.png

  • 那么如何在未补全的图谱上实现推理?
    • 能否先对图谱进行补全然后对图谱进行遍历?不行!因为这是一个稠密图,这样做会是指数级的复杂度。

image.png

  • 嵌入向量再一次发挥了重要作用,只要将链路中所有向量相加即可!这直接将时间复杂度降低到了O(V)!随后我们只要在最终得到的结果附近寻找所有的邻居实体即可得到答案。天才

image.pngimage.png

Conjunctive Queries

  • 联合查询:从多个实体开始进行联合推理,这比之前更复杂

image.png

  • 通过遍历的方式就是在前面的操作上加入了取交集的操作,很耗时

image.png

  • 在向量空间上如何取交集?

image.png

  • 这时候就需要借助于神经网络了:
    • 网络的输入是目前问句涉及实体的嵌入向量q1,…,1m;网络的输出是一个取过交集的嵌入向量q
    • 函数应该是序列位置无关的

image.pngimage.pngimage.png

  • 训练过程:该网络可以与TransE一同学习

image.pngimage.png

Query2Box:使用盒嵌入进行推理

  • Jure组最新的研究成果 有兴趣可以细看