|知识图普嵌入技术的极简教程:KGE以及如何计算它们

|知识图普嵌入技术的极简教程:KGE以及如何计算它们

图是我最喜欢使用的数据结构之一 , 它们可以使我们能够表示复杂的现实世界网络 , 如快速交通系统(例如 , 公交道路、地铁等)、区域或全球空中交通 , 或者人们的社交网络之类的相关事物 。 并且他们非常灵活 , 很容易被人类理解 , 但是为了让计算机“理解”和“学习”它们 , 我们需要额外的一步(称为矢量化) 。这种解释可能过于简单 , 我们将在本人的后续部分详细解释 。

知识图谱有何特别之处?为了轻松理解知识图与其他图的不同之处 , 我们想象一个具有不同级别的游戏 , 随着游戏的深入 , 每个级别都会变得困难 。
Level 1:可以是一个简单的无向图 , 比如大学里的朋友群 , 朋友是节点 , 朋友之间的关系是边 。 这里我们只有节点和边 , 没有什么太花哨的 。
Level 2:在上一层的基础上增加一层信息 , 比如方向 , 这样我们就得到有向图 。 一个简单的例子是城市范围的公交网络 。 将公共汽车站视为节点 , 将公共汽车的路线视为边 , 每辆公共汽车都以特定的方向从一个站点移动到另一个站点 , 这就是增加了方向信息 。
Level 3:我们采用有向图并向节点和边添加多种属性 。 想象一下互联网上的社交网络 , 节点上的属性是用户所基于的社交网络类型 。 例如 , 它可以是 Twitter、Facebook 或 YouTube 。 边的属性可以是不同用户之间的交互类型 , 即关注(在 Twitter 的情况下)、朋友或关注(在 Facebook 的情况下)和订阅(在 YouTube 的情况下) 。 图的有向性在这里开始发挥作用 , 因为上面这些属性只能是单向的(相互关注就是有两条边) 。 例如 , 你可以关注 Elon Musk , 但他可能不会在 Twitter 上关注你 , 这就是有一条向的边 。
Level 4:上一级中的图中 , 不使用节点和边 , 而是使用三元组进行表示:三元组是知识图谱的构建块 , 它是由 3 个元素组成的元组 , 即:源节点(头)、关系和目标节点(尾) 。
这就是我们所说的知识图谱了 , 源节点和目标节点有时也被称为实体 。
“知识图谱”一词的使用有点含糊 , 因为知识图谱没有固定的定义 , 从广义上讲可以将任何包含一些知识/重要信息的相当大的图称为知识图谱 。 这里的关键点是我们将三元组作为知识图谱的基本组成部分 。
知识图谱嵌入方法因为向量化或嵌入(实体的数字表示和图之间的关系表示)对于使用图作为机器学习算法的输入是必要的 。 我们对知识图谱的处理方式与其他机器学习模型不同 , 所以我们需要不同的技术来学习它们的数值表示(或嵌入) 。 生成知识图嵌入 (KGE) 的方法有多种 , 我们可以大致分为 3 个部分:
1、基于翻译的方法:
使用基于距离的函数(在欧几里得空间中)用于生成嵌入 。 我们可以建立一个简单的算法使头向量和关系向量的组合等于尾向量 。 它可以表示为 h + r ≈ t 。 这种算法称为 TransE 。 相同算法还有其他版本 , 但对它的修改很少 。 一些示例包括 TransH、TransR、TransD、TransSparse 和 TransM 。
2、基于分解的方法:
这是基于张量分解的想法 , 使用这种技术提出的初始算法是 RESCAL 。 三向张量以 n x n x m 的形式定义 , 其中 n 是实体的数量 , m 是关系的数量 。 张量保持值 1 表示实体之间存在关系 ,0表示不存在则 。
通过分解这个张量来计算嵌入 。 但是对于大型图这通常在计算上非常的费时所以出现了很多基于 RESCAL 理念的 DistMult、HolE、ComplEx 和 QuatE 等算法优化解决计算量问题 。

相关经验推荐