🚀 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許可證。