图对比学习 GMI code study

talk

将对近年来的SSL-GNN做出一个 整体分析,基于作者的开源代码

1. GMI

GMI的损失不像DGI下降的那么快,结果也一般。 同时缺点很明显:GPU增加,时间变慢,epoch增加,精度没增加,这里双重DGI损失,没有采用 双判别器,采用 负采样+soft_plus
在这里插入图片描述

1.1 Cora dataset

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2 Citeseer

在这里插入图片描述
在这里插入图片描述

1.3 Pubmed — dim=512, GPU OOM

在这里插入图片描述

— dim =256, 才可以运行, 但gpu 需要 18G,很大了。 重构邻接矩阵所导致的问题

在这里插入图片描述
训练时间很长,epoch还是很大,结果也不尽人意
在这里插入图片描述
在这里插入图片描述
这里我额外做了两个实验,分别 对文章 所提出的额外的两个损失进行了消融,
首先 不考虑重构
在这里插入图片描述
GPU减小
在这里插入图片描述
其次,再次不考虑 h 和 其邻居(本文最大创新),这样就变成了和DGI损失类似,GPU当256时候在11G之下,和DGI作者当时在paper中报导的类似。 但是收敛特别慢,结果也很差。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

突然发现 原论文的 code 对于citeseer和pubmed要求是一层!!! 修改后

Pubmed 的GPU -usage还是很大。 那就看效果吧。。。
在这里插入图片描述
还是一样~,没有达到论文acc
在这里插入图片描述

Notes:

原论文里面 声称自己 citeseer 和 pubmed 的 维度都是 512, 且作者只是在 reddit 和 ppi 时候 采用了 graphsage进行 采样。且 GPU 是Tesla P40— 24G。 这篇方法 无疑是 有问题的, 后续的很多文章 都是在 computers等amazon的数据集上都是OOM,也有见过pubmed 报OOM。

在这里插入图片描述
自己方法本来就有问题,还要踩一脚DGI,况且DGI 只是改变encoder 并不是什么复杂的事,GMI根本无法扩展。像这么胆大的 作者简直了, 还有勇气开源,,lol,,, 不知道 是不是自己之前的code有什么tricks,但开源的确实有很大问题, 貌似 西交这个 作者 把这个扩展成了期刊。 如果有人可以复现~ 还请告知 , 谢谢~

2. Only spotlights in code

代码大都是和DGI一样的,但是计算损失不一样,并且采用了负采样(实际上不是 我开始想象的那样 采用5个负样本,而是 5次 shuffle 进行平均, 损失 不是采用 交叉熵,而是 DIM 的变分 sp_plus)~~

采样: 实际上这个负采样 就是 dgi里面的 shuffle if条件使得 所有 节点都必须改变位置

这里 根据 sample_times 进行采样, 代码里面和原文 保持一致,采样5个负样本,不对,这里是 通过随机randint 产生的samole_list是 包含五组,通过下标(randnum)。每一组都是 2708个index。 这里和dgi的方式本质是一致的,同时通过判断,确认 打乱的数组 节点下标一定和之前不一样。(比dgi通过 np.random.permutation 打乱后 有可能 当前节点index还是一样)
在这里插入图片描述
这里计算损失确实 和原文一致,采用了JS散度计算,目标函数和DIM中的JS损失 的一样
在这里插入图片描述
感兴趣的同学 可以去看 DIM 的原文,很经典的 互信息无监督 cv表征学习的文章, 其中有太多 散度等知识,之前看过,每次都是晕晕的 DIM 分析

在这里插入图片描述
代码中的 这个 mi_loss_jsd 就是计算出 js的MI, 由于 要最大化 因此 目标函数 = -1* 论文中的11(MI) ,因此 这里code是 两项相加
这里负样本得分传进来是 5组 两次 mean 求得最终损失
DIM 损失 JSD-MI 计算
在这里插入图片描述
输入是 正样本对 的得分 + 负样本对 的得分 res_mi_pos+res_mi_neg 计算节点h和s res_local_pos+res_local_neg 计算 节点h和原始x
在这里插入图片描述
判别器修改:
h_c h_pl 是正样本对 12708256 127081433. sc_1是正样本对得分 这里 从 h_pl(节点中)中通过下标选出 一组 负样本 h_mi 127081433, 再次计算 负样本和 正样本的得分。返回的 sc_1 正样本。 sc_2是一个包含5个 得分的 随机采样负样本和正样本的得分,相当于是把 dgi 的 负样本得分 计算了五次,这样肯定会增大时间
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值