让大语言模型在知识图谱补全任务中表现更好
基于大语言模型(LLM)的知识图谱补全(KGC)旨在通过LLM预测知识图谱中缺失的三元组,从而丰富知识图谱,使其成为更好的网络基础设施,这可以为许多基于网络的自动化服务带来益处。然而,关于基于LLM的KGC研究还很有限,缺乏对LLM推理能力的有效利用,忽视了知识图谱中重要的结构信息,阻碍了LLM获取准确的事实知识。在本文中,我们讨论如何将有用的知识图谱结构信息融入LLM,旨在实现LLM中的结构感知推理。我们首先将现有的LLM范式转换为结构感知设置,并进一步提出了一种知识前缀适配器(KoPA)来实现这一目标。KoPA采用结构嵌入预训练来捕获知识图谱中实体和关系的结构信息。然后,KoPA将知识前缀适配器告知LLM,该适配器将结构嵌入投影到文本空间,并获得虚拟知识令牌作为输入提示的前缀。我们对这些结构感知的基于LLM的KGC方法进行了全面的实验,并提供了深入分析,比较了引入结构信息如何更好地提升LLM的知识推理能力。
🔔 新闻
2024-07
🎉🎉🎉 我们的论文被ACM MM 2024接收为口头报告论文**。2024-02
🎉🎉🎉 我们预印了我们的综述论文知识图谱遇上多模态学习:全面综述 [代码仓库
]。
🌈 模型架构
🔬 依赖
我们的代码基于alpaca-lora开发。请按照Alpaca-lora中的说明构建Python环境。
一些核心Python库配置:
-
Python 3.9.16
-
torch 2.0.0
-
transformers 4.28.0
-
peft 0.3.0
-
如果您发现微调模型的性能接近零样本结果,可以检查您的LoRA检查点是否为空。peft / transformers库的版本不匹配可能会导致此类问题。更多详情请参见peft仓库中的这个问题https://github.com/huggingface/peft/issues/286。
🌲 数据准备
由于数据量较大,您需要从此链接下载并解压数据文件data.zip,然后将它们放在data/目录中。
📕 训练与测试
-
注意:当前数据集只是一个小型演示,帮助您运行完整流程。我们将在未来发布完整数据集。
-
运行KoPA微调
# 对于CoDeX-S数据集
export WANDB_DISABLED=true
wandb offline
CUDA_VISIBLE_DEVICES=0 nohup python finetune_kopa.py \
--base_model '您的LLM路径' \
--data_path 'data/CoDeX-S-train.json' \
--output_dir '您的保存路径' \
--num_epochs 3 \
--lora_r 64 \
--learning_rate 3e-4 \
--batch_size 12 \
--micro_batch_size 12 \
--num_prefix 1 \
--kge_model 'data/CoDeX-S-rotate.pth' \
--lora_target_modules='[q_proj,k_proj,v_proj,o_proj]' > log.txt &
# 对于FB15K-237N数据集
export WANDB_DISABLED=true
wandb offline
CUDA_VISIBLE_DEVICES=0 nohup python finetune_kopa.py \
--base_model '您的LLM路径' \
--data_path 'data/FB15K-237N-train.json' \
--output_dir '您的保存路径' \
--num_epochs 3 \
--lora_r 64 \
--learning_rate 3e-4 \
--batch_size 12 \
--micro_batch_size 12 \
--num_prefix 1 \
--kge_model 'data/FB15K-237N-rotate.pth' \
--lora_target_modules='[q_proj,k_proj,v_proj,o_proj]' > log.txt &
运行前,您需要填写LLM路径和保存路径。超参数可以自行调整。
- 运行推理
CUDA_VISIBLE_DEVICES=0 python inference_kopa.py
🤝 引用:
如果您使用了我们工作中的代码,请考虑引用本文。 非常感谢 :)
@article{DBLP:journals/corr/abs-2310-06671,
author = {Yichi Zhang and
Zhuo Chen and
Wen Zhang and
Huajun Chen},
title = {Making Large Language Models Perform Better in Knowledge Graph Completion},
journal = {CoRR},
volume = {abs/2310.06671},
year = {2023}
}