ICLR 21: SSGC SIMPLE SPECTRAL GRAPH CONVOLUTION

本文探讨了SSGC(Symmetrically Scaled Graph Convolution)如何改进SGC的过拟合问题,通过使用对称归一化邻接矩阵和汇聚所有层的特征。与APPNP对比,SSGC在模型简化和残差引入方面独具特色,同时在聚类、社区检测和节点分类任务中展现了效果。文中还涉及了MLP在某些场景下的优势和模型实现细节。
摘要由CSDN通过智能技术生成

1. model

在这里插入图片描述
其中 公式11 T 就是 所谓的 diffusion matrix,这里选用 对称 归一化邻接矩阵 ,这个 形式 理解起来就是 SGC 的升级版本, 因为SGC只是 用了第 k层的表征,k过大还是会出现过拟合, SSGC 这里 是 对 k层所有的表征 进行求和。

这里对于 xi和 hi 强制其 二范数的平方=1, 且在q(H)中利用两者差值来减小差异。作者声称 通过余弦距离 而非 欧氏距离,但这里两者做差 就是欧氏距离吧,余弦距离,不应该是 两个向量的内积 相似吗?
q(H)中的第一项:就是拉普拉斯正则项,最小化第一项就是 当 归一化邻接矩阵 ij处元素=1,两者距离minimize,(相连接节点距离相近,特征相似) 若Aij=0,则两者之间的距离则不 影响 损失的大小。---- 正则项会使得 相邻节点更加相似,即拉近距离,但不会推远

这篇文章写的不是很清楚,这段从 However开始,就是一些经验的做法了,作者说出 12拉普拉斯 正则会 因为过平滑导致 次优,但前面作者的论点一直是 sgc只用k层会过平滑, 这里 汇集k层的 就不会,但这里 对于k项还是说出会过平滑。其实实质是 公式11 就类似于 JKnet,每一层都到最后一层sum。

因此,为了效果好一点,当公式11 k=0,单位阵,就是原始 X 经过线性变化的值,作者在 k>0的层进行消息传递时,每一层都会加上一个最初始X ,等到k层 求完之后, 经过一个 参数矩阵W 进行softmax。

请注意: 和APPNP不同的是,这里的 init残差X0是 原始特征X,而不是XW, 且 线性转化都是 在k层聚合后,进行整体的 W转换维度, 这需要在代码中仔细看看, 因为appnp包括 GCNII等,都是选择先 进行 降维,以减小消耗。 但是 如果 从矩阵 乘法的角度 来看: 括号外的W 乘到里层,对于TXW采用结合律 XW 后面αXW,这样就变成 TX0+αX0,这 就和 appnp 很相似了。

唯一不同的就是 SSGC 每一层 的表征 只是 最开始X 经过 TkX得到的,而 APPNP则是 每一层表征是 由上一层 得到的(上一层= AX+H0), 即 SSGC 每层的表征都是 可以独立预先求解的,而不是依赖于上一层,需要逐步求解,这一点很像SGC

2. APPNP联系

在这里插入图片描述
作者在这个比较容易 混淆的 地方 也举出了例子,通过layer1和layer2举例说, 第一层 Z1 = TX0W + XW 两者是 alpha=0.5是相同的。
但当layer=2, APPNP : Z2 = (1-alpha) Z1+ XW = (1-alpha)T{(1-alpha)TXW+alphaXW} + alphaXW = (1-alpha)(1-alpha)TTWXW +…+. 这很容易 看出 APPNP 和SSGC的 不同。

此外 因为优化器反向传播 需要对 W求导, 链式法则 在非线性上 变得复杂, 本文直接采用线性 XW, 没有看过ppnp代码,估计也是一个linear吧。
在这里插入图片描述

3. 相似的方法对比复杂度

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

4. 实验

4.1 聚类

采用 仅基于数据固有信息的内部标准 来选择 调节最好的 K
在这里插入图片描述
在这里插入图片描述

4.2 社区检测

Reddit 上进行 inductive 学习
在这里插入图片描述

4.3 节点分类

在这里插入图片描述
OGB的实验 作者发现 products和 arxiv上无法超过graphsage, 同时发现 mlp在这两个上都超过了softmax,他采用 mlp替换了 linear classifier,(SSGC+MLP),发现还是有部分效果。
在这里插入图片描述

4.4 文本分类

在这里插入图片描述

4.5 层数和 参数alpha

table9 关于 alpha的实验,很小的alpha 才有一些提升, alpha是 初始残差的权重,当其=0,对比 节点分类那节的实验,SSGC wo/init residual 的效果 是比 SGC要好的,但是 低于 APPNP,因此很小的残差也有用。
在这里插入图片描述
文章除了 在那里和 APPNP进行了对比,其余的地方都很少和 APPNP进行对比,比如探究文本分类,层数和OGB上,有一些不完善,从文章的复杂度来将,本文 在 SGC的基础上 存储了多层,超过SGC是大概率的。
没有添加残差之前,是不如APPNP的, 作者为了增加残差,同时减小复杂度,是增加了一个类似的init的残差, 但因为每层表征是独立的,反向传播无需复杂度的消耗。

5. think

SGC 后续的工作也很多, SIGN SAGN GAMLP等都是 针对 SGC 没能获得 多个感受野信息,从而 预先计算 进行拼接。加入注意力等等(不同感受野 attention 计算方式不同,采用拼接求和等等)
APPNP后续的经典工作 就是 GCNII,加入单位映射、初始残差等。 pagerank 幂迭代 有关pagerank markov的通俗讲解

在这里插入图片描述
看完代码之后,本文实质上就是1/k * SGC多层求和 + 了一个 最开始的 alpha*AX。确实没有 对X 先进行特征转化。
采用了大量实验,来弥补novelty。

这篇文章的 每一层alpha还是像 appnp一样是 固定的, 可以采用 多种 attention,会增加参数(一个大小为k的向量),且不能提前计算。

6.code

代码里面 ssgc+Mlp
在这里插入图片描述
或者ssgc处理cora
在这里插入图片描述
是原文这里的 处理 ,作者先得到整体的表征,最后的model只是 采用 一个 linear来实现 W,这里的求和 emb 最开始 赋值为 alpha*X 在每一层 都是 加上 (1-alpha)*features ,features的计算公式 是多次稀疏矩阵adj和X的乘法,第一层传播一次。此外这里 将1/k 放到求和符号里面,即(1-alpha)*features/degree, 再看 原文的公式 会发现 1/k 和K次求和αX 约去,则就加上一次的 αX就行。
在这里插入图片描述

model

在这里插入图片描述

聚类细节

在这里插入图片描述
这里 对AX 传播后的表征 进行奇异值分解,得到usv,emb和这个右奇异值转置进行内积,送入kmeans, 循环结束的条件 参考了 AGC
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
即当下一次的 标签距离大于 上一次 就跳出,选取上一次的作为最优,或者max_iter 。 聚类没有真实标签,这里采用在这里插入图片描述
和kmeans 预测的 标签进行 比较 这里具体做法参考 : AGC Attributed Graph Clustering via Adaptive Graph Convolution
在这里插入图片描述
在这里插入图片描述

SSGC+MLP

作者在论文里面提到 过于 OGB的部分数据,发现 MLP 效果好于 softmax,因此 采用 MLP替换了 SSGC中最后一层的softmax
具体实现:
在这里插入图片描述
这里类名是 SGC的原因是,其 基于 pyG的SGC 修改的 source。 在最后一行, 直接将 emb 输出,而不经过 log_softmax.
在这里插入图片描述
损失这里 直接 计算 nll_loss 。
softmax,logsoftmax,nll_loss, cross_entroy 具体见:多分类损失函数
cross_entroy = log_softmax + nll_loss

log_softmax = log+softmax 单独做 log+softmax 速度慢,且存在溢出风险 一般合并这两个操作 上面链接 评论区的一个回复
在这里插入图片描述

softmax : 将 值 映射到(0,1)
logsoftmax: 将softmax值 映射到(-∞,0)

nll_loss: 将输入取反,计算和label的 乘积 求和 再平均

例子 ------------------------- 很直观example

因此 SSGC+MLp这里没有 进行 log_softmax, 直接 emb 和对应的 标签 进行了 损失计算( 把emb 该节点的类别 所在列的值 取反和 标签相乘求和 再平均)

交叉熵:是 对应 真实的标签 和 求得的 标签 乘积求和,,, 真实的标签是 one-hot, 对应的 类别 元素=1, 取出来预测的emb,先通过 log_softmax 到(-∞,0) 在进行nll_loss时候, 取相反数 值映射到(0,+∞), 两者乘积求和平均为损失, 若想让该损失小,则其值 越接近于0+越好, 则回推, log_softmax 的值 越接近于 0-越好。 则 softmax的值 越接近于 1 越好。 因此 两个类别(真实和预测的)会产生一致性约束

关于 这几个联系 model 最后一层是 linear 采用 cross_entroy. 是softmax 采用 nll
链接 stackoverflow里面关于softmax+negative_log_likelihood

什么是 对数似然 log likelihood
链接 主要从 离散和连续 随机变量 对于参数估计问题进行阐述,negative 是 为了目标函数求最小化,加个负号。 log 是将 指数乘法 变成 加法(原因:乘法不稳定等) 。 似然就是 通过 采样得到的样本去 衡量分布,去拟合分布的参数。 结合上文的多分类问题,我们通过 gnn 得到 emb,emb经过softmax得到 标签的 概率分布,通过和 真实分布 进行最大似然估计,得到损失,最小化损失,以使得 预测分布准确。

交叉熵和最大似然估计结合 花书 5.5 上说明了 最大化似然==最小化负对数似然 == 最小化 交叉熵
在这里插入图片描述

SSGC 不采用softmax 直接 nll 不会使得 节点的emb(没有采用logsoftmax)变化么?,,,,,, nll 则会让 节点的 emb 对应的 那类的那一维度的 值变化? 还是不太理解 这里不 采用 softmax 而是单独采用 nll(作者原文说 这样是 MLP了)

自己测试了一下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里 target 是 nll_loss 自动将 target (不是onehot)编码成 和 lsm 大小相同的 tensor(3*8),实现了 one-hot,和lsm进行元素间点乘— == 1/3(2.1469+2.3010+1.3672) = 1.9384
在这里插入图片描述

SSGC+MLP 不就是 假设 标签那维度 特征作为 概率值,,,好奇怪,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值