Graph Convolutional Network
[@kipfsemi-supervised_2017] 在 ChebNet 的基础上继续简化:首先设置 ,将感受野限制在 1-hop 邻域,类似于 CNN 中的 卷积, 然后使用近似 ![](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),原式可简化为:
%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)
这里有两个参数 和 ,原论文认为需要减少参数量以避免过拟合,所以设置 ,得到新的表达式:
%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)
由于 的特征值范围为 ,为了避免梯度爆炸或梯度消失, [@kipf_semi-supervised_2017] 提出了 重归一化技巧(Renormalization trick):
其中 ,得到最终的表达式:
模型结构
模型使用两层神经网络,第一层是先用 来提取图信号的特征,然后使用 ReLU 作为激活函数。
第二层一样,不过因为需要输出概率,所以用 softmax 函数。
Loss 函数使用交叉熵函数。
一些问题
:::danger
Renormalization trick 到底有什么用?
:::
原论文也没解释明白,但实验结果说明了该方法的确有一定效果。
[@wu_simplifying_2019]证明了 的谱半径会比 更小,在 Cora 数据集上的实验中,后者特征值的范围为 ,而前者的范围大约为 ,考虑到 层网络的累乘,%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)的特征值范围会收缩到 左右,但是否这个原因导致效果变好呢,答案目前尚不知晓。
此外,文章 《从 Graph Convolution Networks (GCN) 谈起》 认为 是一个增量输入,将其放到 中相当于进行了一次归一化,类似于 batch normalization 的效果。
:::danger
为什么设 k=1?
:::
原论文的解释如下:
:::danger
为什么叫半监督?
:::
作者认为 GCN 类似于一种 Weisfeiler-Lehman algorithm,即使使用随机参数依旧能取得很好的结果:
这是空手道俱乐部数据集上的结果, W 使用随机初始化,X 使用单位矩阵,效果跟一些无监督学习方法差不多。
于是作者在式 (13) 上套了个 softmax 层进行训练,训练过程见下图:
:::danger
为什么不用更深的网络?
:::
作者也进行了测试,每层的定义如下:
试验结果说明 2~3 层网络的效果最好,越深反而越差,作者认为是参数量过多导致的过拟合,但主流原因认为是多层GCNs使节点输出特征过度平滑,具体可参考论文《How powerful are graph neural networks》
参考
论文:《Semi-Supervised Classification with Graph Convolutional Networks》