AmpliGraph 5大核心模型详解:从TransE到RotatE的深度学习之旅

【免费下载链接】AmpliGraph Python library for Representation Learning on Knowledge Graphs https://docs.ampligraph.org 【免费下载链接】AmpliGraph 项目地址: https://gitcode.com/gh_mirrors/am/AmpliGraph

AmpliGraph是一个基于Python的知识图谱表示学习库,它提供了多种先进的模型来学习实体和关系的向量表示,从而实现知识图谱补全、链接预测等任务。本文将详细解析AmpliGraph中的5大核心模型,帮助您快速掌握知识图谱嵌入技术的精髓。

知识图谱嵌入:连接实体与关系的桥梁

知识图谱由实体(节点)和关系(边)组成,它以结构化的方式存储现实世界中的事实。知识图谱嵌入技术将实体和关系映射到低维向量空间,使得机器能够理解和推理实体之间的语义关系。

知识图谱链接预测示例

上图展示了一个典型的知识图谱链接预测场景,其中红色虚线表示需要预测的关系。AmpliGraph的核心模型正是通过学习实体和关系的向量表示,来预测这些缺失的链接。

1. TransE:翻译模型的开山之作

TransE(Translating Embeddings)是知识图谱嵌入领域的经典模型,它将关系视为实体之间的翻译操作。其核心思想是:如果(主体,关系,客体)是一个有效三元组,那么主体向量加上关系向量应该接近客体向量。

TransE的得分函数定义为:

f(s, p, o) = -||e_s + e_p - e_o||

其中,e_s、e_p和e_o分别表示主体、关系和客体的向量表示,||·||是L1或L2范数。

TransE模型简单高效,适合处理一对一的关系,但在处理复杂关系(如一对多、多对一、多对多)时表现欠佳。该模型的实现位于ampligraph/latent_features/layers/scoring/TransE.py

2. DistMult:简化的双线性模型

DistMult(Distributed Multilayer Perceptron)通过双线性对角线模型来建模实体和关系之间的交互。它将关系表示为对角矩阵,得分函数定义为主体向量、关系矩阵和客体向量的三元点积:

f(s, p, o) = <e_s, W_p, e_o>

其中,W_p是关系p的对角矩阵。

DistMult的实现位于ampligraph/latent_features/layers/scoring/DistMult.py。与TransE相比,DistMult能够更好地处理复杂关系,但它假设关系是对称的,这在现实世界中并不总是成立。

3. ComplEx:引入复数空间的扩展

ComplEx(Complex Embeddings)通过将实体和关系嵌入到复数空间来扩展DistMult模型。它使用厄米特点积(Hermitian dot product)作为得分函数:

f(s, p, o) = Re(<e_s, e_p, conjugate(e_o)>)

其中,Re(·)表示取复数的实部,conjugate(·)表示复数的共轭。

ComplEx能够建模非对称关系,并且在多个基准数据集上取得了优异的性能。该模型的实现位于ampligraph/latent_features/layers/scoring/ComplEx.py。由于使用了复数表示,ComplEx的参数数量是DistMult的两倍。

4. HolE:全息嵌入的高效表示

HolE(Holographic Embeddings)结合了张量分解和循环相关性的思想,旨在以较少的参数捕获实体和关系之间的交互。HolE的得分函数定义为:

f(s, p, o) = (2/k) * f_ComplEx(s, p, o)

其中,k是嵌入维度,f_ComplEx是ComplEx模型的得分函数。

HolE继承了ComplEx处理非对称关系的能力,同时参数数量与DistMult相同。该模型的实现位于ampligraph/latent_features/layers/scoring/HolE.py

5. RotatE:复数空间中的旋转操作

RotatE(Rotate Embeddings)将关系视为复数空间中从主体到客体的旋转。它的得分函数定义为:

f(s, p, o) = -||e_s ∘ e_p - e_o||

其中,∘表示复数的Hadamard乘积。

RotatE能够建模多种关系模式,包括对称、反对称、反转和组合等。该模型的实现位于ampligraph/latent_features/layers/scoring/RotatE.py

实体嵌入可视化

上图展示了使用AmpliGraph训练的实体嵌入在二维空间中的可视化结果。可以看到,语义相似的实体(如《权力的游戏》中的角色)在嵌入空间中聚集在一起。

模型选择指南:如何为您的任务选择合适的模型

选择合适的知识图谱嵌入模型需要考虑多个因素,包括关系类型、数据集大小和计算资源等。以下是一些实用建议:

  • 简单关系(一对一):优先选择TransE,它简单高效,参数数量少。
  • 复杂关系:考虑使用DistMult、ComplEx或HolE。如果关系具有非对称性,ComplEx和HolE通常表现更好。
  • 多种关系模式:RotatE能够建模对称、反对称、反转和组合等多种关系模式,是一个不错的选择。
  • 计算资源有限:DistMult和HolE参数数量较少,训练速度快。
  • 追求最佳性能:在大多数情况下,ComplEx和RotatE能够取得较好的性能,但需要更多的计算资源。

嵌入聚类结果

上图展示了不同实体嵌入的聚类结果,不同颜色代表不同的聚类簇。这表明AmpliGraph的模型能够学习到有意义的实体表示,使得语义相似的实体聚集在一起。

快速开始:在AmpliGraph中使用核心模型

要在AmpliGraph中使用这些核心模型,您可以按照以下步骤操作:

  1. 克隆AmpliGraph仓库:
git clone https://gitcode.com/gh_mirrors/am/AmpliGraph
  1. 安装依赖:
cd AmpliGraph
pip install -r requirements.txt
  1. 使用模型进行训练和预测:
from ampligraph.latent_features import TransE, DistMult, ComplEx, HolE, RotatE

# 选择模型
model = ComplEx(batches_count=100, seed=0, epochs=200, k=150,
                loss='multiclass_nll', optimizer='adam', lr=0.0001,
                regularizer='LP', regularizer_params={'p': 3, 'lambda': 0.0001})

# 训练模型
model.fit(X_train)

# 进行预测
predictions = model.predict(X_test)

通过以上步骤,您可以快速开始使用AmpliGraph的核心模型进行知识图谱嵌入任务。AmpliGraph还提供了丰富的评估指标和工具,帮助您分析和比较不同模型的性能。

无论您是知识图谱领域的新手还是经验丰富的研究者,AmpliGraph的核心模型都能为您提供强大的工具来探索和利用知识图谱的潜力。从简单高效的TransE到功能强大的RotatE,这些模型为您提供了多样化的选择,以应对各种知识图谱任务和挑战。

【免费下载链接】AmpliGraph Python library for Representation Learning on Knowledge Graphs https://docs.ampligraph.org 【免费下载链接】AmpliGraph 项目地址: https://gitcode.com/gh_mirrors/am/AmpliGraph

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐