KnowledgeGraphEmbedding
PyTorch实现的RotatE知识图谱嵌入工具包,支持5种主流KGE模型,刷新ICLR 2019多项基准测试
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
PyTorch实现的RotatE知识图谱嵌入工具包,支持5种主流KGE模型,刷新ICLR 2019多项基准测试
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
传统的知识图谱嵌入方法思路各异:TransE 将关系视为平移向量(head + relation ≈ tail);DistMult 用双线性模型打分配对分数;ComplEx 则引入复数嵌入来建模非对称关系。而 RotatE 的核心创新在于——将关系建模为复数空间中的旋转(rotation)。 给定三元组 (h, r, t),RotatE 的评分函数为:
d(h + r, t) = ||h ⊙ r - t||
其中 ⊙ 表示哈达玛积(逐元素乘法),关系向量 r 的每个维度都是一个单位复数(即模为1的旋转因子)。这意味着,给定头实体向量 h,关系 r 把它「旋转」到尾实体 t 的位置。用物理语言来说:关系就是在复数空间中旋转头实体的操作。
这种设计的数学动机非常优雅:旋转保持向量的模长不变,这意味着无论实体本身的模长如何,旋转操作只改变方向而不改变「大小」,从而避免了某些模型中实体嵌入范数无界膨胀的问题。RotatE 还能自然地建模多种关系模式:
DeepGraphLearning/KnowledgeGraphEmbedding 的代码库极为精简,总共只有三个核心 Python 文件,却完整实现了模型训练和评测全流程:
所有 KGE 模型(RotatE、TransE、ComplEx、DistMult、pRotatE)都继承同一个 KGEModel 基类。在 model.py 中,每个模型对应一个评分函数实现:
score = gamma - ||head ⊙ relation - tail||_1/2(L1 或 L2 距离)score = gamma - ||head + relation - tail||_1score = <head, relation, tail> 三阶双线性模型
训练时支持两种负采样策略:数据格式高度标准化,每个数据集目录下包含:
entities.dict:实体名称 → 整数 ID 的映射relations.dict:关系名称 → 整数 ID 的映射train.txt / valid.txt / test.txt:三元组文件(格式:head_id\trelation_id\ttail_id)
内置数据集涵盖主流基准:FB15k、FB15k-237、WN18、WN18RR,以及专门用于测试模型表达能力的 Countries(S1/S2/S3 难度递增)。-init 参数)。RotatE 在标准基准数据集上的表现(filtered MRR 和 HITS@10):
| 数据集 | MRR | HITS@10 |
|---|---|---|
| FB15k | .797 | .884 |
| FB15k-237 | .337 | .533 |
| WN18 | .949 | .959 |
| WN18RR | .477 | .571 |
| WN18 的 MRR 高达 0.949,说明在词网(WordNet)这类层次结构数据上 RotatE 表现极为出色。FB15k-237 的 MRR 相对较低(0.337),这是因为 FB15k-237 是 FB15k 的子集,移除了所有可逆关系,难度更高,也更接近真实场景。WN18RR 是当前最具挑战性的基准,需要处理复杂的多跳推理。 | ||
| 训练效率方面,单块 GTX 1080 Ti GPU 约需 4-9 小时完成收敛(取决于数据集规模),这个效率在当时属于 SOTA 级别。 |
本项目不提供 Docker 支持,也没有 Web UI,是纯研究代码。部署需要:
git clone https://github.com/DeepGraphLearning/KnowledgeGraphEmbedding.git
cd KnowledgeGraphEmbedding
pip install -r requirements.txt
# 单行训练 RotatE
CUDA_VISIBLE_DEVICES=0 python -u codes/run.py --do_train --cuda \
--do_valid --do_test --data_path data/FB15k \
--model RotatE -n 256 -b 1024 -d 1000 \
-g 24.0 -a 1.0 -adv -lr 0.0001 --max_steps 150000 \
-save models/RotatE_FB15k_0 --test_batch_size 16 -de
best_config.sh,一键复现论文中的最优超参数配置,无需手动调参即可在标准数据集上达到论文报告的性能。
适合人群:NLP/知识图谱研究者、KG 应用开发者、对知识表示学习感兴趣的学生。不适合:完全没有 GPU 的用户、需要即开即用工具的产品团队。DeepGraphLearning/KnowledgeGraphEmbedding 不仅是 RotatE 的实现,更是一个模块化的 KGE 工具包,为后续研究提供了可扩展的基线框架。RotatE 论文在 ICLR 2019 获得极高关注,GitHub 至今保持活跃的 star 和 fork 增长。这个项目体现了知识图谱领域从理论到工程的快速转化能力——从论文发表到高质量开源实现,间隔不到一年,且代码质量可以直接复现论文实验结果。 对于 AI 开发者而言,掌握 KGE 技术意味着可以在知识图谱问答、推荐系统、语义搜索等场景中引入结构化推理能力;对于 AI 爱好者,理解 RotatE 的旋转机制则是进入知识表示学习世界的绝佳起点。