【免费下载链接】JittorGeometric
JittorGeometric is a Jittor-based graph machine learning library.
JittorGeometric 是基于 Jittor 深度学习框架的图机器学习库,内置 DGI、MVGRL、GRACE、PolyGCL 等图自监督对比学习模型,帮助你在没有大量标签的图上训练出高质量节点表示。本文将带你快速上手这四个经典模型:理解它们的核心思想、运行官方示例脚本,并掌握统一评估流程,一文看懂"图对比学习该选哪个模型"。
为什么需要图自监督学习
在真实的图数据(引用网络、社交网络、生物分子)中,节点标签往往昂贵且稀缺。图自监督学习(Graph Self-Supervised Learning)的思路是:不依赖人工标注,通过自动构造"正样本对"和"负样本对"来学习节点表示,再把这个表示"冻结"起来,用一个简单的线性分类器做下游任务(即 Linear Probing)。
JittorGeometric 在 jittor_geometric/nn/models/ 目录下提供了 4 个代表性实现,覆盖了图对比学习从 2019 到 2024 年的主要技术路线:
| 模型 | 发表 | 核心思想 | 负样本构造方式 | 模型源码 |
|---|---|---|---|---|
| DGI | ICLR 2019 | 图级摘要 vs 节点表示 | 随机打乱节点特征 | dgi.py |
| MVGRL | ICML 2020 | 双视图(原图 + PPR 扩散图) | 特征打乱 + 多视图交叉 | mvgrl.py |
| GRACE | ICML 2020 | 边掩码 + 特征丢弃双增强视图 | SimCLR 式全图负样本 | grace.py |
| PolyGCL | ICLR 2024 | 可学习谱多项式滤波器(低通 + 高通) | 特征打乱 | polygcl.py |
对应的可运行示例脚本都在 examples/ 目录下:dgi_example.py、mvgrl_example.py、grace_example.py、polygcl_example.py。
快速安装与环境准备 🛠️
环境要求:Python 3.10+,Jittor 1.3.0+(可选 CUDA 11.0+)。
# 1. 创建环境 conda create -n jittorgeometric python=3.10 conda activate jittorgeometric # 2. 安装 Jittor python -m pip install git+https://github.com/Jittor/jittor.git # 3. 安装依赖 pip install -r requirements.txt # 4. 克隆并安装 JittorGeometric git clone https://gitcode.com/gh_mirrors/ji/JittorGeometric cd JittorGeometric pip install .安装后可先进入 examples/ 目录,四个示例脚本支持相同的常用数据集:
- Planetoid:
cora、citeseer、pubmed - WikipediaNetwork:
chameleon、squirrel - GeomGCN:
texas、cornell、wisconsin、actor
依赖的核心工具函数(随机划分、特征丢弃、边掩码、PPR 计算)集中在 jittor_geometric/utils/gssl_utils.py,图结构会先通过 cootocsr、cootocsc 转换为 CSR/CSC 稀疏格式以加速消息传递。
模型一:DGI —— 图信息最大化的开创者
DGI(Deep Graph Infomax)是最早的图自监督模型之一。它的结构非常简洁:
- 编码器:标准 GCN(dgi.py#L15-L51)
- 图级摘要:对所有节点表示取均值,代表"整张图"
- 判别器:判断"某节点与图摘要是否匹配"
- 负样本:把节点特征随机打乱后过一遍编码器(dgi.py#L61-L66),与图摘要构成负样本对
- 损失:BCEWithLogitsLoss
一句话理解:正样本 = 真实节点表示 × 图摘要;负样本 = 打乱特征的节点表示 × 图摘要。
运行方式(默认数据集 cora,默认 300 轮训练):
cd examples python dgi_example.py --dataname cora常用参数:--n-hidden 512(隐藏维度)、--n-layers 1(编码器层数)、--n-dgi-epochs 300、--seed 42。脚本会自动保存最优模型best_dgi.pkl,并加载后提取节点嵌入。
模型二:MVGRL —— 双视图 + 扩散图
MVGRL(Contrastive Multi-View Representation Learning on Graphs)引入了"多视图"思想:
- 视图 1:原始图的 GCN 编码器
- 视图 2:基于PPR(Personalized PageRank)扩散图的 GCN 编码器,捕捉更远的结构信息(见 mvgrl_example.py#L47-L87 中的
compute_ppr调用) - 判别器:双线性判别器同时判断 4 种组合(2 正 + 2 负),负样本来自打乱特征(mvgrl.py#L90-L101)
- 嵌入输出:两个视图的表示直接相加
运行方式:
python mvgrl_example.py --dataname cora --preprocess--preprocess会启用特征预处理和扩散边稀疏化(阈值由--epsilon 0.01控制),在 Cora 上效果更好。其余参数如--epochs 500、--hid_dim 512、--patience 20(早停)与 DGI 类似。
模型三:GRACE —— 数据增强的主流范式
GRACE 代表了当前图对比学习最主流的范式:对同一张图做两次随机增强,得到两个视图,拉近视图内正样本、推远跨视图负样本。
- 两种增强:随机掩码边(
mask_edge)+ 随机丢弃特征(drop_feature),实现在 grace_example.py#L44-L73 - 编码器 + 投影头:2 层 GCN 编码器后接一个 MLP 投影头(grace.py#L29-L37),只用于计算损失,评估时丢弃
- 损失:SimCLR 风格的 InfoNCE 损失,带温度系数
--temp(grace.py#L66-L85)
运行方式(参数来自论文推荐配置):
python grace_example.py --dataname cora --lr 5e-4 --wd 1e-5 \ --act_fn relu --der1 0.2 --der2 0.4 --dfr1 0.3 --dfr2 0.4 \ --temp 0.4 --patience 50其中--der1/--der2是两个视图的丢边比例,--dfr1/--dfr2是特征丢弃比例,温度--temp越小负样本被推得越开。
模型四:PolyGCL —— 谱域可学习滤波器
PolyGCL 是最新(ICLR 2024)的方法,把对比学习从"堆叠 GCN 层"推向谱域:
- 编码器:ChebNet II,即可学习的谱多项式滤波器(polygcl.py#L179-L211),同时输出低通(平滑邻域信息)和高通(捕捉局部结构变化)两个分支
- 自适应融合:两个分支用可学习权重
alpha、beta加权融合(polygcl.py#L153-L159),模型自己决定"平滑多少、锐化多少" - 对比:双线性判别器 + 打乱特征的负样本
运行方式:
python polygcl_example.py --dataname cora --lr 0.0005 --wd 1e-3 \ --lr1 0.002 --dprate 0.3 --dropout 0.3注意它采用双学习率:--lr用于传播层(滤波器),--lr1用于线性层和判别器;--dprate是传播层的边缘丢弃率,--K 10是多项式阶数(即消息传递的最大跳数)。
统一的评估流程:Linear Probing 📊
四个示例脚本共享同一套严谨的评估协议:
- 训练完成后提取无监督节点嵌入(
get_embedding/dgi.encoder) - 用 random_splits 按 6:2:2 比例做10 次随机 10-fold 划分
- 每个划分上训练一个逻辑回归分类器(2000 轮),记录最优测试精度
- 报告 10 次结果的均值 ± 自举置信区间(
test acc mean = xx.xx ± xx.xx)
这套协议保证你横向对比 4 个模型时结果是公平可比的——只看最终打印的test acc mean即可。
如何选择:一张表帮你决策 🎯
| 场景 | 推荐模型 | 理由 |
|---|---|---|
| 刚入门、想快速跑通 | DGI | 结构最简单,训练最快 |
| 图结构重要、需要长程信息 | MVGRL | PPR 扩散图显式建模远距离关系 |
| 需要最强通用基线 | GRACE | 增强式对比学习是当前主流范式 |
| 追求 SOTA / 结构敏感任务 | PolyGCL | 谱域可学习滤波器,2024 年新方法 |
| 小图(actor、texas 等) | GRACE / PolyGCL | GeomGCN 系列数据集上通常表现更好 |
调参小贴士:
- 小图(节点数 < 1000)可把
--hid_dim降到 256,并适当调低学习率 --patience控制早停,图对比学习建议保留 20~50- 无 GPU 时加
--gpu -1即可用 CPU 运行(脚本会自动设置jt.flags.use_cuda)
总结
JittorGeometric 把图自监督学习的四大代表模型做成了"源码 + 可运行示例 + 统一评估"的完整套件:
- DGI:图摘要对比的起点
- MVGRL:双视图 + 扩散图的经典组合
- GRACE:数据增强 + InfoNCE 的主流范式
- PolyGCL:谱域可学习滤波器的最新方案
建议路线:先用 DGI 跑通全流程(约几分钟),再用 GRACE 作为基线,最后在目标数据集上尝试 PolyGCL 冲击更高精度。所有示例都支持cora、citeseer、pubmed、chameleon、squirrel、texas、cornell、wisconsin、actor共 9 个数据集,替换--dataname参数即可横向对比。
【免费下载链接】JittorGeometric
JittorGeometric is a Jittor-based graph machine learning library.
相关推荐
深度解析:Cardpeek如何揭开智能卡数据的神秘面纱
深度解析:Cardpeek如何揭开智能卡数据的神秘面纱 当您使用银行卡支付、乘坐公共交通或验证电子身份时,是否曾好奇这些智能卡内部究竟存储了什么信息?智能卡作为
对比学习与图卷积:5个自监督学习策略的完整指南
对比学习与图卷积:5个自监督学习策略的完整指南 图卷积网络(GCN)作为图神经网络的重要分支,在自监督学习领域展现出了巨大潜力。gh_mirrors/gc/gc
图计算深度学习机器学习pgmpy完全指南:从零开始掌握贝叶斯网络与因果建模
pgmpy完全指南:从零开始掌握贝叶斯网络与因果建模 贝叶斯网络是概率图模型的核心工具,而pgmpy作为Python中最强大的贝叶斯网络库,为数据科学家和机器学
人工智能机器学习
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考