Skip to content

[Model] Add HCAN and D-HCAN - #305

Open
C-C-T-W wants to merge 1 commit into
BUPT-GAMMA:mainfrom
C-C-T-W:feature/HCAN
Open

C-C-T-W wants to merge 1 commit into
BUPT-GAMMA:mainfrom
C-C-T-W:feature/HCAN

Conversation

@C-C-T-W

@C-C-T-W C-C-T-W commented Jul 13, 2026

Copy link
Copy Markdown

Description

本 PR 根据 ICDE 2025 论文 Effective and Scalable Heterogeneous Graph Neural Network Framework with Convolution-oriented Attention,为 OpenHGNN 增加 V-HCAN 和 D-HCAN。

Changes

  • 新增 HCAN(V-HCAN),对应论文算法 1 和公式 (4)-(11):
    • 节点类型特定的特征投影;
    • 0 到 K 跳非参数图卷积与类型特定 MLP;
    • 关系感知、多头 convolution-oriented attention;
    • counterweight payload 1 - gamma;
    • 高、低注意力各产生一半维度,拼接后按公式 (11) 与类型残差直接相加。
  • 新增 DHCAN / D-HCAN,对应论文公式 (13)-(15):
    • 枚举类型兼容的 K 跳关系序列;
    • 使用关系特定的行归一化均值传播生成通道;
    • 按原始点积分数归一化,并将中心节点计入 N_i*;
    • 对非零通道执行前馈投影、拼接和语义融合。
  • 新增 D-HCAN 专用节点分类 trainer:在 CPU 上完成无梯度预计算,只缓存目标节点类型,并在 GPU 上按目标节点 batch 训练,避免 OGB-MAG 全图端到端训练显存溢出。
  • 增加 HCAN/D-HCAN 配置、模型和 trainer 注册、模型文档及 README 索引。
  • OGB-MAG 仅在 SeHGNN 被选择时执行 SeHGNN 专用预处理,避免其他模型触发无关的大规模稀疏矩阵构造。
  • 节点分类流程支持按验证集 Micro_f1 等指标早停,V-HCAN 不再按损失选择 checkpoint。

Formula Correspondence

  • V-HCAN 的关系均值传播、关系内 softmax、counterweight payload 和公式 (11) 输出维度均有针对性测试。
  • D-HCAN 使用手算样例验证了公式 (13)-(15),覆盖 K 跳卷积、中心节点、未经过 softmax 的原始分数归一化和注意力聚合。
  • D-HCAN 的关系路径前缀会复用,目标类型缓存与完整缓存的输出经过等价性测试。

Verification

  • 22 passed:

    python -m pytest -o addopts= tests/test_hcan_model.py tests/test_hcan_config.py tests/test_node_classification_early_stop.py -q
  • python -m compileall 通过。

  • git diff --cached --check 通过。

  • 最终公式版 V-HCAN 在 HGBn-ACM 单次验证中得到 Macro-F1 96.30%、Micro-F1 96.13%,训练和早停流程正常。

  • D-HCAN 已在完整 OGB-MAG 上完成单次大规模训练验证;batch_size=10000 时平均训练时间约 6.30 秒/轮,与论文表 VIII 的 5.89 秒/轮接近。

Reproduction Note

论文没有发布官方代码,也没有完整给出 D-HCAN 的隐藏维度、前馈网络深度、dropout、batch size,以及 OGB-MAG 无特征节点和反向关系的具体预处理方式。因此,本 PR 以论文公开的数学定义为实现依据,并保证公式级对应;对于论文未公开的工程细节采用 OpenHGNN 的现有数据处理方式和显式配置项,不声明默认配置可以逐项复现表 VIII 的五次运行均值。

在当前 OpenHGNN 预处理和已测试默认结构下,D-HCAN 的单次 OGB-MAG 准确率未达到论文表 VIII。该差异在 PR 中明确披露,不通过标签传播、多阶段训练或额外嵌入等论文未说明的技巧追数值。

Checklist

  • PR 标题以 [Model] 开头
  • V-HCAN 和 D-HCAN 实现完整
  • 新增代码具有测试覆盖
  • 已增加模型文档和 README 索引
  • 不包含数据集、checkpoint、实验日志或服务器信息

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant