talk
这篇文章没有复现出 wikics上结果,github上很多人遇到相同问题,查看作者 的 json文件,和论文里面超参数不一样,但是修改之后,训练3000 epochs还是很差,精度=0.32左右,因此尝试 在 Cora等数据集上run,修改了部分参数,Cora上可以取得 80 左右的acc,因此主要关注 这几个 augmentations的实现, 这篇文章 代码基本上和 GRACE相同,损失和具体细节也类似
GCA
1. pagerank 和 eigenvalue 实现
首先 在 utils里面 计算了 ppr 和 特征值中心性。
核心 是 在 functional 里面计算不同的 mask重要性
2. edge 重要性
这一部分是 对于 每一条边 求出其 attention, 通过所连接的两个节点中的 入度节点的 属性计算
2.1 入度节点的 度
通过 degree函数计算出 每个节点的 度, 再通过 边的入度节点index 给每一条边 赋值
2.2 入度节点的 ppr
2.3 入度节点的 eigenvalue
掩码
前面三个求出每个边 attention 后 作为概率 通过伯努利分布采样 进行 丢弃
3. feature重要性
3.1 度
3.2 ppr
3.3 特征向量
这里Wikics实现dense版本, 其余datasets都是 one-hot计算掩码
传入特征矩阵 nk, 和每个节点的重要性 n1, 通过矩阵乘法 得到 k*1的 向量,表示 X中 每一维度的重要性
X掩码, 通过维度重要性 进行伯努利采样 生成 mask,得到X’
4.训练
得到两个 视图之后,进行对比学习,损失是 infonce损失,和 GRACE一样,计算 视图内和视图间。视图内 不同节点推远,视图间同一节点拉近,不同节点 推远。
conclusion
这篇文章就是 通过 度 ppr 和eigenvalue 进行 有针对的丢弃边和节点维度,这几个都是常见的 graph 的性质, 其实还有很多,比如 standford csw课程里面 其他的graph属性 也可以类比。