Query2box Reasoning over Knowledge Graphs in Vector Space using Box Embeddings

Ren H., Hu W. and Leskovec J. Query2box: Reasoning over knowledge graphs in vector space using box embeddings. ICLR, 2020.

Box embedding 用于查询判断, 和我想的那个有很大差别啊. 我对这方面不是很了解, 只能记录个大概.

符号说明

  • G=(V,R) , 知识图谱;

  • vV, entity;

  • rR, 为某种关系, 是一个二元函数:

    r:V×V{True,False},

    满足 vrv iff r(v,v)=True.

  • Conjunctive queries 定义为:

    其中 va 是锚点, V1,,Vk 是某些变量, V? 是目标变量.

  • 举个例子: "Where did Canadian citizens with Turing Award graduate?" 的查询中:

    1. [Truing Award], [Canada] 是锚点, 是起始变量;
    2. 这里只有一个(潜在)变量 [V], 它代表一些具体的人物: Pearl, Hinton, Bengio, Bieber, Trudeau;
    3. 目标变量 [V?] 是满足询问的回答, 即获得图灵奖且受奖于加拿大的大佬的毕业院校:
      1. Hinton: Edinburgh; Cambridge;
      2. Bengio: McGill.
  • 我们用 [|q|] 来表示答案的集合 (称为 denotation set 或 answer set), 它满足:

    v[|q|] iff q[v]=True.

Query2Box

  • Box embeddings 定义为二元组 p=(Cen(p),Off(p))R2d, 前者表示 box 的中心, 后者为 positive offset. 由此, 它定义了如下的 box:

    Boxp:={vRd:Cen(p)Off(p)vCen(p)+Off(p)}.

  • 首先, 我们来看如何使用这个工具来进行 Conjunctive queries.

  • Conjunctive queries 中包含 , 这两个操作. 实际上等价于需要定义 Projection 和 Intersection 操作.

  • 对于输入 p=(Cen(p),Off(p)), 和关系 box embedding r=(Cen(r),Off(r)), 定义投影为:

    p=p+r.

    p 可以看成是 p 经过关系 r 转换后得到下一阶段的变量 (它应当被理解成为那些和 p 有紧密 r 关系的向量表示 (当然无法完全一致)).

  • 假设我们有了一堆可能的 box embeddings {p1,,pn}, 我们需要找到一个尽可能满足 (即接近) 所有这些 box embeddings 的中心点

    pinter=(Cen(pinter),Off(pinter)).

    具体定义为:

    其中

    DeepSets({x1,,xN})=MLP((1/N)i=1NMLP(xi)).

  • 现在我们已经定义了 Projection, 他实现了关系转移, Interaction, 它实现了交的操作, 现在还需要实现一个给定 qR2d 去找到相匹配的 entity vRd (检索) 的操作:

  • 如上图 (C) 所示: distoutside(v;q) 实际上是 vBoxp 边缘的最短(街区)距离, 当然, 倘若 v 在 Box 的内部, 概距离为 0. 类似地, distinside(v;q) 刻画的是 Cen(q) 到对应边缘的距离, 倘若 v 在内部, 实际上就是 Cen(q)v 的街区距离.

  • α=1 的时候, 整个距离退化为 Cen(q)v1.

  • 训练, 采用如下损失

    L=logσ(γdistbox(v;q))i=1k1klogσ(distbox(vi;q)γ),

    其中 γ>0 为人为给定的 margin, v[|q|] 为正样本, v[|q|] 为负样本. 该损失是很直接的.

  • 上面的操作综合下来看就是这样的:

    1. 给定一些锚点, 初始化为 (x,0);
    2. 让后锚点通过 Projection 状态转移;
    3. 多个锚点发生 Interaction 操作;
    4. 如有必要重复 2, 3.
    5. 最后得到一个 q, 然后通过 distbox 来检索相似的.
  • 但是我怀疑这种状态转移和 Interaction 的操作是不是会丢失掉太多的信息?

代码

[official]

posted @   馒头and花卷  阅读(63)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2022-07-14 Towards Long-term Fairness in Recommendation
2020-07-14 A New Defense Against Adversarial Images: Turning a Weakness into a Strength
2019-07-14 threading
点击右上角即可分享
微信分享提示