共计 2496 个字符,预计需要花费 7 分钟才能阅读完成。
图是我最喜爱应用的数据结构之一,它们能够使咱们可能示意简单的事实世界网络,如疾速交通系统(例如,公交路线、地铁等)、区域或寰球空中交通,或者人们的社交网络之类的相干事物。并且他们非常灵活,很容易被人类了解,然而为了让计算机“了解”和“学习”它们,咱们须要额定的一步(称为矢量化)。这种解释可能过于简略,咱们将在自己的后续局部具体解释。
常识图谱有何特别之处?
为了轻松了解常识图与其余图的不同之处,咱们设想一个具备不同级别的游戏,随着游戏的深刻,每个级别都会变得艰难。
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 等算法优化解决计算量问题。
3、基于神经网络的办法:
神经网络当初在许多畛域都很风行,它们被用于查找 KGE 也就是很失常的事件了。Semantic Matching Energy 它定义了一个能量(energy)函数,用于通过应用神经网络为三元组调配一个值。神经张量网络(Neural Tensor Network)应用能量函数,但它用双线性张量层代替了神经网络的规范线性层。
像 ConvE 这样的卷积神经网络以“图像”的模式重塑实体和关系的数值示意,而后利用卷积滤波器提取特色,从而学习最终的嵌入。咱们还能够找到受 GAN 启发的模型(例如 KBGAN)和基于 Transformer 的模型(例如 HittER)来计算 KGE。
为了实现这些算法,咱们有多个 python 库,例如:
- LibKGE
- PyKEEN
- GraphVite
- AmpliGraph
KGE 算法的构造
有一些独特的根本思维来构建一个算法来计算 KGE。上面列出了其中一些想法:
Negative Generation:
这是在常识图中生成否定或损坏的三元组的概念。负三元组是不属于原始图的三元组。这些能够随机生成,也能够应用伯努利负采样等策略生成。
Scoring Function:
它是一个包装三元组的函数,它输入一个值或一个分数。如果分数高,那么三元组是无效的,如果分数低,那么它是一个负三元组。评分函数是构建 KGE 算法的重要局部之一。
Loss Function:
因为算法是依据优化问题建模的,因而咱们在训练过程中应用了损失函数。这个损失函数应用正负三元组的分数来计算损失。咱们的指标是尽量减少损失,缩小损失的过程必定也少不了优化器。
个别状况下损失函数包含——Cross entropy loss, Pairwise margin-based hinge loss 等。
生成嵌入后的下一步是什么?
学习 KGE 算法并利用它们来查找嵌入是很乏味的。当初,下一步是什么?嵌入的用处是什么?
有一些图上游工作能够利用于常识图谱,例如:
常识图谱补全:
这也称为链接预测,咱们的指标是预测常识图中缺失的关系或潜在的可能关系。它也能够称为常识图谱加强。
这项工作归结为找到一个能够最好地示意为具备给定的关系和一个实体的事实。简略地说,工作是猜想 (?, r, t) 或 (h, r, ?) 中的缺失局部,也能够别离称为头部预测或尾部预测。咱们应用基于等级的评估技术来查找咱们的常识图嵌入的性能。
三元组分类:
这是一个辨认给定三元组是否无效的问题,即它是正三元组还是负三元组。此工作的输入只有是或否。应用评分函数并设置阈值以将正三元组与负三元组离开。艰深的讲就是一个二元分类的问题。
举荐零碎是 KEG 利用的一个重要畛域。嵌入的品质对于上述工作的性能和准确性很重要。这些工作的后果通知咱们是否可能生成高质量的嵌入。
作者:Rohith Teja