
其中 predict 指的是 采用 neural network 降维得到 hi。 hi 进行propagate得到zi(通过PageRank)




对比GCNII的 公式和 APPNP 公式4的第二行。 可以发现 GCNII就是 给APPNP 乘了(1-β)In + βW,同时加上了激活函数,成为了 非线性。
根据矩阵乘法分配律, 单位矩阵I和参数矩阵W分别 和左边相乘。 单位矩阵的效果就是 APPNP的Z , W就是增加了参数量,使得表征 在不断的 交互。 β足够小的时候,模型就是 APPNP+非线性

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

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

这里就是 通过 resnet和这个W+I的范数 两个角度 为这个 简单模型奠定了理论基础 。
包含ppnp和appnp。ppnp: PPRExact,通过calc_ppr_exact来计算 原文公式3. PPRPowerIteration 就是通过幂迭代求解 下一层=这一层传播+最初

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 和单位矩阵和参数矩阵的结果

两个整体就是一层的表征
默认情况下 shared_weight 默认的是 True,就是一个矩阵,和论文一样

重新定义Graphconv : 这里又提出了 两种,variant1,2 分别是 探究了 括号左边两个 表征如何结合,采用拼接,或者加法,其中 加法版本就是 论文的版本,计算出的support 为左边括号整体,但这里r 永远又是 加法的版本。 左边整体和右边括号里面的两个矩阵相乘 拆开 ,一个和weight相乘 一个和单位阵(隐式)

而且,这里又有一个 residual的参数,来对所融合的表征再加一个x。。。 相当于在原有的公式基础上 还增加了上一层表征 。