IterE
wencolani/IterE加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象你是一名电商平台的知识图谱工程师。最近,图谱中新增了一大批刚上架的新商品——它们没有用户评价、没有浏览记录,连实体描述都只有寥寥数语。你想通过知识图谱推理来补全这些商品的相关属性,却发现传统方法对这些"稀疏实体"几乎束手无策:嵌入模型因为训练数据不足,学出的向量表示质量极差;规则学习方法又因为图谱搜索空间太大,效率低到无法接受。
这正是 IterE(Iteratively Learning Embeddings and Rules)要解决的核心问题——让嵌入学习与规则学习相互协作、彼此增强。
IterE 由研究团队开发,论文《Iteratively Learning Embeddings and Rules for Knowledge Graph Reasoning》发表于 WWW 2019 国际万维网会议主会。这篇论文探索了一个直观但此前未被系统解决的命题:能否让嵌入表示和逻辑规则同时学习、相互补足?
知识图谱推理的主流方法分为两派:规则推理精确可解释,但在大规模图谱上搜索效率极低;嵌入推理高效可扩展,但对稀疏实体的表示质量依赖严重。IterE 的核心洞察是——规则可以为稀疏实体的嵌入注入结构化先验,而嵌入可以为规则学习指明高概率方向,二者天然互补。
IterE 的框架包含三个核心模块,循环迭代运行:
嵌入学习(Embedding Learning):基于线性映射假设(Linear Map Assumption)学习实体和关系的向量表示。选择线性映射是因为它天然兼容规则推导——规则中关系的结论可以直接体现为关系嵌入之间的特殊约束。
公理归纳(Axiom Induction):基于当前嵌入表示,从 OWL2(网络本体语言)定义的对象属性公理池中归纳出高置信度规则,包括:
r(x, x)r(x, y) → r(y, x)r(x, y) ∧ r(y, z) → r(x, z)r₁(x, y) → r₂(y, x)r₁(x, y) ↔ r₂(x, y)r₁(x, y) → r₂(x, y)公理注入(Axiom Injection):将归纳出的高置信度规则转化为约束,注入回嵌入学习过程。具体来说,通过 Softmax 概率对候选公理打分,仅注入高概率公理的约束,使稀疏实体从规则结构中获益。

图注:IterE 支持的 OWL2 公理类型,每类公理对应特定的规则结论形式,支撑迭代学习的理论基础。
代码使用 TensorFlow 1.x 构建计算图,核心模块如下:
| 模块 | 职责 |
|---|---|
data.py | 数据加载、公理池管理、负采样(多进程) |
model.py | 构建 TF 计算图:三元组评分函数 / Loss / 公理概率图 / 测试图 |
experiment.py | 训练循环、模型保存与恢复、多进程数据生成器管理 |
axiomPools.py | 公理池维护(每类公理独立池) |
main.py | 实验入口、参数解析 |
嵌入学习采用间隔损失(margin-based loss)、对数似然损失或类比损失,支持 L1/L2 正则化。训练数据生成使用 Python multiprocessing 多进程并行负采样,避免单进程成为瓶颈。
模型支持三种数据集的稀疏版本:FB15k、FB15k-237、WN18、WN18RR,数据集目录下包含 train.txt、稀疏测试/验证集及公理池目录。

图注:IterE 的整体框架:嵌入学习 ↔ 公理归纳 ↔ 公理注入,三者循环迭代直至收敛。
论文在四个标准知识图谱数据集上进行了系统评估:


图注:IterE 在 FB15k-237 数据集上的链接预测实验曲线,迭代次数增加后 MRR 和 Hits@10 均持续提升。
安装依赖(无 requirements.txt,需手动):
pip install tensorflow==1.x numpy scipy
# 需要 GPU 版本:pip install tensorflow-gpu==1.x
运行实验:
python main.py --datadir datasets/FB15k-237-sparse --dim 100 --lr 0.001 --max_epoch 500
主要参数:
| 参数 | 说明 | 默认值 |
|---|---|---|
--dim | 嵌入维度 | 100 |
--lr | 学习率 | 0.001 |
--axiom_weight | 公理损失权重 | 1.0 |
--max_epoch | 最大训练轮次 | 500 |
--model | 基础嵌入模型 | TransE |
⚠️ 注意事项:
tf.Session 模式,与 TF 2.x 不兼容(需设置 TF_CPP_MIN_LOG_LEVEL=2 或使用 TF 1.x 环境)当前局限:
改进方向:
IterE 代表了**神经符号推理(Neuro-Symbolic Reasoning)**方向的一次有益探索——用神经网络的嵌入学习驱动符号层面的规则发现,再将规则反馈给嵌入学习,形成闭环。WWW 2019 的录用也说明学术界对这类"可解释 + 可扩展"混合方法的持续关注。随着大语言模型(LLM)时代对知识图谱可解释性的要求提升,IterE 的思想对构建更可信的 AI 推理系统具有参考价值。
项目信息:Stars 55 | Fork 15 | License 未声明 | 语言 Python | 发布于 2019