ICLR 19 :APPNP + ICML 20 GCNII

APPNP

在这里插入图片描述
其中 predict 指的是 采用 neural network 降维得到 hi。 hi 进行propagate得到zi(通过PageRank)
在这里插入图片描述

1. 方法一(PPNP) PageRank计算对于每个节点其他节点的 score,从而一次传播得到结果,这样做的坏处,求解 矩阵A的逆 很复杂 会导致一个n*n的 dense矩阵

在这里插入图片描述

2. 方法二(APPNP) 通过幂迭代 多次 来逼近这个 PPR矩阵,从而使得问题可以解决 APPNP 另外的角度就是 randomwalk with restart。 PR就是通过随机游走来获得其余的节点对于节点的重要性,teleport使得 节点下一次的状态 都有一定的概率到达 自身的状态

在这里插入图片描述

GCNII

layer:传播公式

在这里插入图片描述
对比GCNII的 公式和 APPNP 公式4的第二行。 可以发现 GCNII就是 给APPNP 乘了(1-β)In + βW,同时加上了激活函数,成为了 非线性。

根据矩阵乘法分配律, 单位矩阵I和参数矩阵W分别 和左边相乘。 单位矩阵的效果就是 APPNP的Z , W就是增加了参数量,使得表征 在不断的 交互。 β足够小的时候,模型就是 APPNP+非线性

Note: 作者说 appnp 若采用多次非 线性来处理 特征矩阵会 过拟合,因此采用了 线性组合 从而推出------- appnp还是一个 shallow的模型。 ???? 不加激活函数的非线性就是 浅层吗

在这里插入图片描述
公式5 作者说 借鉴了 Resnet的思想,给W增加一个I,使得模型 至少和 浅层版本(appnp)效果一样,同时这个单位矩阵的好处,使得最优的参数矩阵W 有很小的范数,因此避免了过拟合(相当于给W加了正则),同时 唯一关键点是 全局最优
在这里插入图片描述

对于APPNP和GCNII相似的model来说。 GPRGNN也是APPNP的变分,他是 每层的H 采用了 不同的系数,其实也可以 在GPRGNN上增加这个 单位映射非线性

有关GCN过平滑和参数矩阵W的关系,好几篇文章 都对于 W进行正则项约束,EGNN那篇通过迪利克雷能量 也对W做了约束。 下面这篇文章 说出 GCN的收敛速率 决定于 W的最小奇异值。 通过(1-β)I+ βW,两个矩阵相加的范数小于两个矩阵范数的和(三角不等式),因此,使得W的范数 = 整体的范数- 单位矩阵的范数。
在这里插入图片描述
这里就是 通过 resnet和这个W+I的范数 两个角度 为这个 简单模型奠定了理论基础 。

Code — APPNP (pytorch)

包含ppnp和appnp。ppnp: PPRExact,通过calc_ppr_exact来计算 原文公式3. PPRPowerIteration 就是通过幂迭代求解 下一层=这一层传播+最初
在这里插入图片描述

Code ---- GCNII

pyG的代码:

在这里插入图片描述

其中 x.mul_(1-self.alpha) 计算出 在这里插入图片描述
下面采用 torch.addmm(input,mat1,mat2,beta,alpha) : res = betainput+alpha(mat1mat2)
这里是将 左边括号 PH+H0 拆开计算
第一个 torch.addmm 计算了 传播后的表征PH 和 单位矩阵(没有显式写出来,矩阵
单位=自身,因此只有 x*1-beta)相乘, 同时加上 传播后的表征 和 参数矩阵weight1 相乘再乘以beta。
第二个 torch.addmm 计算了 H0 和单位矩阵和参数矩阵的结果
在这里插入图片描述
两个整体就是一层的表征

Note 这里有一个 weight2 矩阵。就是 如果没有第二个参数矩阵,就对应的 原论文 公式5. 左边两个表征求和,在和右边的矩阵进行 带参数的乘法。 weight2矩阵是 对于 传播后的表征和 原始残差分别学习参数, 即:把 左边括号拆开。 右边W是W1,W2.

默认情况下 shared_weight 默认的是 True,就是一个矩阵,和论文一样
在这里插入图片描述

GCNII Code 作者自己的pytorch版本 有太多不同的tricks,看起来挺恶心的, 还是PyG的版本最符合论文

重新定义Graphconv : 这里又提出了 两种,variant1,2 分别是 探究了 括号左边两个 表征如何结合,采用拼接,或者加法,其中 加法版本就是 论文的版本,计算出的support 为左边括号整体,但这里r 永远又是 加法的版本。 左边整体和右边括号里面的两个矩阵相乘 拆开 ,一个和weight相乘 一个和单位阵(隐式)
在这里插入图片描述
而且,这里又有一个 residual的参数,来对所融合的表征再加一个x。。。 相当于在原有的公式基础上 还增加了上一层表征 。

-------------------

看GCNII作者自己的代码,就感觉就是在GCN基础上 一边考虑最开始X0(APPNP)。又考虑了上一层,又是拼接融合或者加法 通过一个W矩阵进行学习,理论的影子更少了。 本来 以为这个 W矩阵 的奇异值会有所处理,发现也没有,就是这样加起来,可能是这样做,就能使的w的范数小,更好训练吧。 而且作者自己的pytorch代码里面 有ogb-arixv的代码,里面 更加偏离了公式, 具体就是 下一层= 上一层+带参数残差 和右边相乘。在加上上一层。 只有一个 alpha参数,更没有beta了。。。。,之后如果需要更改 GCNII的代码,还是直接在PyG上实现。

文章相比于APPNP最大的亮点 其实就在于 其对于 单位矩阵 I的解释,通过此来限制 W矩阵的 奇异值,从而减轻过拟合, 初始残差appnp已经存在了。 他就是给appnp 右边套上一个 自适应的 I+W 的combination,然后激活,激活是在 forward里面采用relu,计算时候不用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值