🚀 ULTRA - 知识图谱推理基础模型
ULTRA是用于知识图谱(KG)推理的基础模型。一个预训练的ULTRA模型可以在任何具有任意实体/关系词汇表的多关系图上执行链接预测任务。在性能方面,在50多个知识图谱上进行平均,一个预训练的ULTRA模型在零样本推理模式下比许多专门针对每个图训练的SOTA模型表现更好。遵循基础模型的预训练 - 微调范式,你可以在任何图上立即以零样本方式运行预训练的ULTRA检查点,也可以进行更多微调。
ULTRA为任何知识图谱提供统一、可学习、可迁移的表示。在底层,ULTRA采用图神经网络和改进版的NBFNet。ULTRA不会学习特定于下游图的任何实体和关系嵌入,而是基于关系之间的交互获得相对关系表示。
论文链接:https://arxiv.org/abs/2310.04562
GitHub链接:https://github.com/DeepGraphLearning/ULTRA
🚀 快速开始
按照以下步骤使用ULTRA模型:
- 安装依赖,具体依赖列表请参考GitHub仓库中的安装说明。
- 克隆此模型仓库,在
modeling.py
中找到UltraForKnowledgeGraphReasoning
类并加载检查点(所有必要的模型代码也在此模型仓库中)。
✨ 主要特性
- 通用性:单个预训练的ULTRA模型可在任何多关系图上执行链接预测任务,无需针对特定图进行专门训练。
- 高性能:在零样本推理模式下,平均在50多个知识图谱上的表现优于许多专门针对每个图训练的SOTA模型。
- 可迁移性:提供统一、可学习、可迁移的知识图谱表示,基于关系之间的交互获得相对关系表示。
📦 安装指南
安装依赖,具体依赖列表请参考GitHub仓库中的安装说明。
💻 使用示例
基础用法
在任何图上运行零样本推理:
from modeling import UltraForKnowledgeGraphReasoning
from ultra.datasets import CoDExSmall
from ultra.eval import test
model = UltraForKnowledgeGraphReasoning.from_pretrained("mgalkin/ultra_50g")
dataset = CoDExSmall(root="./datasets/")
test(model, mode="test", dataset=dataset, gpus=None)
高级用法
使用AutoModel
进行零样本推理:
from transformers import AutoModel
from ultra.datasets import CoDExSmall
from ultra.eval import test
model = AutoModel.from_pretrained("mgalkin/ultra_50g", trust_remote_code=True)
dataset = CoDExSmall(root="./datasets/")
test(model, mode="test", dataset=dataset, gpus=None)
你还可以在每个图上对ULTRA进行微调,有关训练/微调的更多详细信息,请参考GitHub仓库。模型代码包含57个不同的知识图谱,有关可用图谱的更多详细信息,请参考GitHub仓库。
📚 详细文档
检查点
在HuggingFace上,我们提供3个预训练的ULTRA检查点(所有约169k参数),这些检查点根据预训练数据的数量而有所不同。
性能
ultra - 3g和ultra - 4g的平均零样本性能
模型 |
归纳(e)(18个图)平均MRR |
归纳(e)(18个图)平均Hits@10 |
归纳(e,r)(23个图)平均MRR |
归纳(e,r)(23个图)平均Hits@10 |
直推(16个图)平均MRR |
直推(16个图)平均Hits@10 |
ULTRA (3g) PyG |
0.420 |
0.562 |
0.344 |
0.511 |
0.329 |
0.479 |
ULTRA (4g) PyG |
0.444 |
0.588 |
0.344 |
0.513 |
WIP |
WIP |
ULTRA (50g) PyG(在50个知识图谱上预训练) |
0.444 |
0.580 |
0.395 |
0.554 |
0.389 |
0.549 |
在特定图上微调ULTRA平均可使MRR和Hits@10的相对性能进一步提升10%。更多比较请参阅论文。
ULTRA 50g性能
ULTRA 50g在50个图上进行了预训练,因此我们不能真正对这些图应用零样本评估协议。但是,我们可以与在每个数据集上从头开始训练的有监督SOTA模型进行比较:
模型 |
直推图(16个)平均MRR |
直推图(16个)平均Hits@10 |
有监督SOTA模型 |
0.371 |
0.511 |
ULTRA 50g(单个模型) |
0.389 |
0.549 |
也就是说,与其在你的图上训练一个大型知识图谱嵌入模型,你可能会考虑运行ULTRA(任何检查点),因为其性能可能已经更高 🚀
有用链接
请在ULTRA的官方GitHub仓库中报告问题。
📄 许可证
本项目采用MIT许可证。