Skip to content

freegoxing/KG-GNN

Repository files navigation

Knowledge Graph Learning Path Planning with GNN and RL

本项目实现了一个结合 异构图 Transformer (HGT) 编码器与 强化学习 (RL) 的知识图谱学习路径规划框架。特别针对教育领域(MOOCCubex 数据集)提出了 “骨架+血肉” (Backbone & Flesh) 架构,实现了硬逻辑约束与软语义关联的深度融合。

核心架构:骨架与血肉 (Backbone & Flesh)

本项目在 V2.0 版本中引入了创新的认知图谱建模方案:

  1. 骨架节点 (The Backbone): 核心概念节点(如“微积分” → “概率论”)。它们拥有严密的先修逻辑约束(来自 cs.json),是课程的“承重墙”,通过先修掩码 $\mathbf{M}_{pre}$ 强制模型遵循认知顺序。
  2. 血肉节点 (The Flesh): 扩展知识节点(如“5G应用案例”、“算法优化技巧”)。通过视频、习题、论文的共现关系引入。它们不具备强制先修性,通过 HGT 的注意力机制提供丰富的上下文语义。
  3. 神经符号融合 (Neuro-Symbolic Fusion):
    • 符号层: 将先修关系作为逻辑规则注入 HGT 编码器。
    • 神经层: 当节点对无先修关系时($\mathbf{M}_{pre}=0$),模型无缝退化为纯数据驱动的 Attention 模式,捕捉真实的教学共现规律。

项目结构 (Project Structure)

KG-GNN/
├── script/               # 自动化实验流水线脚本 (如 train-MOOCCubex.sh)
├── hgt_rl_planner/      # 核心算法实现
│   ├── models.py         # Pre-HGT 编码器与 RL 策略网络 (支持符号注入)
│   ├── data_loader.py    # 学术增强加载器 (提取 5 类异构边)
│   ├── trainer.py        # RL 环境与训练逻辑
│   └── utils/            # 数据处理与 PageRank 计算
├── train_hgt.py          # HGT 异构预训练脚本 (Step 1)
├── train_rl.py           # RL 路径规划训练脚本 (Step 2)
├── evaluation.py         # 学术指标评估脚本 (Step 3: MRR, Hits@N)
├── data/                 # MOOCCubex, NELL-995, FB15k-237 等数据集
└── reports/              # 训练指标可视化报告

平台要求 (Platform Requirements)

  • 推荐环境: Ubuntu 24.04 + NVIDIA GPU (CUDA 12.1+) + Python 3.12
  • 依赖管理: 使用 uv 加速安装。
  • GPU 加速: 深度集成 NVIDIA RAPIDS (cudf, cugraph) 用于超大规模图的 PageRank 计算。

快速开始 (Quick Start)

项目提供了端到端的自动化脚本,一键完成“提取-预训练-RL训练-评估”全生命周期。

# 执行 MOOCCubex 计算机科学领域全流程
bash script/train-MOOCCubex.sh

基线实验设计 (Baseline Design)

基线实验在相同的数据预处理结果、训练参数和评估标准下展开,用于公平比较不同编码器对知识图谱表示学习与后续路径规划的影响。Encoder 基线主要包括:

  • GCN:基础图卷积网络,用于提供同构图建模的参考下界。
  • RGCN:关系图卷积网络,仅显式建模边类型差异,用于衡量关系异构信息带来的提升。
  • GAT:图注意力网络,通过注意力权重学习节点邻域的重要性,用于对比纯注意力机制的效果。

这些模型通常在相同的预处理图数据上训练,并在统一的下游评估流程中比较 Success Rate、MRR、Hits@N 等指标,从而检验 Pre-HGT 在先修约束注入和异构关系建模上的增益。

非 RL 路径规划基线

为了验证 RL 策略的有效性,项目还提供了非 RL 的路径规划基线。该部分在固定编码器和节点嵌入后,仅比较不同路径生成策略的差异,核心目标是区分“学习到的策略”与“启发式策略”各自的效果。

  • CurriculumGreedy:优先选择更符合目标先修链、类型语义和节点相似度的邻居,属于规则驱动的贪心策略。
  • PageRank:基于 PageRank 权威度进行贪心扩展,强调节点全局重要性,但不直接学习任务目标。
  • RandomWalk:随机选择邻居作为对照下界,用于衡量纯随机探索的性能。
  • RL:强化学习策略,综合考虑先修约束、路径长度、奖励回报和节点权威度,是项目的主方法。

这组对比可以说明:若只依赖静态启发式规则,路径质量通常较稳定但上限有限;而 RL 策略可以通过训练学习更符合任务目标的路径选择规则,从而在成功率和路径质量上取得更好的平衡。

实验流程详解 (Experimental Pipeline)

1. HGT 异构预训练 (Step 1)

通过链路预测任务学习节点嵌入,同时注入先修符号约束。

uv run train_hgt.py --data_dir data/MOOCCubex --field 心理学 --epochs 2000
  • 输入: 5 类关系(prerequisite, taught_together, tested_together, cited_together, discussed_together)。
  • 输出: 全对齐的节点嵌入矩阵(Embedding Matrix)。

2. RL 路径规划训练 (Step 2)

基于预训练的嵌入,训练智能体在异构图中寻找最优认知路径。

uv run train_rl.py --data_dir data/MOOCCubex --epochs 10000 --max_path_length 12
  • 奖励机制: 综合考虑目标可达性、路径长度、PageRank(知识权威度)和先修逻辑违例处罚。

3. 学术评估 (Step 3)

使用推荐系统领域的标准指标评估路径规划的准确性与逻辑性。

  • 指标: Success Rate (SR), MRR, Hits@1, Hits@3, Hits@10。

调优与结果 (Tuning & Results)

  • 超参数调优: 位于 tuning/ 目录,基于 Optuna 框架。
  • 报告展示: 运行结束后,reports/MOOCCubex/ 下会生成训练奖励曲线、成功率分布及学术指标摘要。

数据集说明 (Datasets)

  • MOOCCubex: 智慧教育大规模异构图数据集,支持 17,000+ 概念节点。

声明

  • 本项目由深度学习与教育技术研究驱动。

About

Knowledge Graph–based learning path planning using an RGCN encoder and reinforcement learning.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors