Graph Convolutional Network

[@kipfsemi-supervised_2017] 在 ChebNet 的基础上继续简化:首先设置 GCN - 图1,将感受野限制在 1-hop 邻域,类似于 CNN 中的 GCN - 图2 卷积, 然后使用近似 ![](https://g.yuque.com/gr/latex?%5Clambda%7B%5Cmathrm%7Bmax%7D%7D%5Capprox%202#card=math&code=%5Clambda_%7B%5Cmathrm%7Bmax%7D%7D%5Capprox%202&id=m3chs),原式可简化为:

GCN - 图3%20%5Cmathbf%7Bx%7D%3D%5Ctheta%20%7B0%7D%5E%7B%5Cprime%7D%5Cmathbf%7Bx%7D-%5Ctheta%20%7B1%7D%5E%7B%5Cprime%7D%5Cmathbf%7BD%7D%5E%7B-%5Cfrac%7B1%7D%7B2%7D%7D%5Cmathbf%7BWD%7D%5E%7B-%5Cfrac%7B1%7D%7B2%7D%7D%5Cmathbf%7Bx%7D%0A#card=math&code=%5Cmathbf%7Bg%7D%7B%5Ctheta%5E%7B%5Cprime%7D%7D%5Cstar%20%5Cmathbf%7Bx%7D%5Capprox%20%5Ctheta%20%7B0%7D%5E%7B%5Cprime%7D%5Cmathbf%7Bx%7D%2B%5Ctheta%20%7B1%7D%5E%7B%5Cprime%7D%5Cleft%28%20%5Cmathbf%7BL%7D-%5Cmathbf%7BI%7D_n%20%5Cright%29%20%5Cmathbf%7Bx%7D%3D%5Ctheta%20%7B0%7D%5E%7B%5Cprime%7D%5Cmathbf%7Bx%7D-%5Ctheta%20_%7B1%7D%5E%7B%5Cprime%7D%5Cmathbf%7BD%7D%5E%7B-%5Cfrac%7B1%7D%7B2%7D%7D%5Cmathbf%7BWD%7D%5E%7B-%5Cfrac%7B1%7D%7B2%7D%7D%5Cmathbf%7Bx%7D%0A&id=OJqpg)

这里有两个参数 GCN - 图4GCN - 图5,原论文认为需要减少参数量以避免过拟合,所以设置 GCN - 图6,得到新的表达式:

GCN - 图7%20%5Cmathbf%7Bx%7D%0A#card=math&code=%5Cmathbf%7Bg%7D_%7B%5Ctheta%7D%5Cstar%20%5Cmathbf%7Bx%7D%5Capprox%20%5Ctheta%20%5Cleft%28%20%5Cmathbf%7BI%7D_n%2B%5Cmathbf%7BD%7D%5E%7B-%5Cfrac%7B1%7D%7B2%7D%7D%5Cmathbf%7BWD%7D%5E%7B-%5Cfrac%7B1%7D%7B2%7D%7D%20%5Cright%29%20%5Cmathbf%7Bx%7D%0A&id=zoXMX)

由于 GCN - 图8 的特征值范围为 GCN - 图9,为了避免梯度爆炸或梯度消失, [@kipf_semi-supervised_2017] 提出了 重归一化技巧(Renormalization trick)

GCN - 图10

其中 GCN - 图11,得到最终的表达式:

GCN - 图12

模型结构

模型使用两层神经网络,第一层是先用 GCN - 图13 来提取图信号的特征,然后使用 ReLU 作为激活函数。
第二层一样,不过因为需要输出概率,所以用 softmax 函数。
Loss 函数使用交叉熵函数。
image.png
image.png
image.png

一些问题

:::danger Renormalization trick 到底有什么用? ::: 原论文也没解释明白,但实验结果说明了该方法的确有一定效果。
image.png

[@wu_simplifying_2019]证明了 GCN - 图18 的谱半径会比 GCN - 图19 更小,在 Cora 数据集上的实验中,后者特征值的范围为 GCN - 图20,而前者的范围大约为 GCN - 图21,考虑到 GCN - 图22 层网络的累乘,GCN - 图23%20%5EK#card=math&code=%28%20%5Cmathbf%7B%5Ctilde%7BD%7D%7D%5E%7B-%5Cfrac%7B1%7D%7B2%7D%7D%5Cmathbf%7B%5Ctilde%7BW%7D%5Ctilde%7BD%7D%7D%5E%7B-%5Cfrac%7B1%7D%7B2%7D%7D%29%20%5EK&id=wWWwh)的特征值范围会收缩到 GCN - 图24 左右,但是否这个原因导致效果变好呢,答案目前尚不知晓。
此外,文章 《从 Graph Convolution Networks (GCN) 谈起》 认为 GCN - 图25 是一个增量输入,将其放到 GCN - 图26 中相当于进行了一次归一化,类似于 batch normalization 的效果。

:::danger 为什么设 k=1? ::: 原论文的解释如下:
image.png

:::danger 为什么叫半监督? ::: 作者认为 GCN 类似于一种 Weisfeiler-Lehman algorithm,即使使用随机参数依旧能取得很好的结果:
image.png
image.png
这是空手道俱乐部数据集上的结果, W 使用随机初始化,X 使用单位矩阵,效果跟一些无监督学习方法差不多。
于是作者在式 (13) 上套了个 softmax 层进行训练,训练过程见下图:
image.png

:::danger 为什么不用更深的网络? ::: 作者也进行了测试,每层的定义如下:
image.png
试验结果说明 2~3 层网络的效果最好,越深反而越差,作者认为是参数量过多导致的过拟合,但主流原因认为是多层GCNs使节点输出特征过度平滑,具体可参考论文《How powerful are graph neural networks》
image.png

参考

论文:《Semi-Supervised Classification with Graph Convolutional Networks》