图卷积神经网络GCN ICLR 2017 , 是曾经在美国加州大学UCI教授、现在荷兰阿姆斯特丹大学教授 Max Welling团队的大作(Max是图灵奖获得者Hinton的弟子),第一作者T. N. Kipf已经成为这个领域有名的学者和工程师。
如果你能读懂英文,建议直接看作者最初发布的网站
https://tkipf.github.io/graph-convolutional-networks/
讲到GCN,就必须要讲到ChebNet, GCN可以认为是ChebNet的简化版和魔改版。
ChebNet是2016年NeurIPS上的论文,可以认为是第一代基于深度学习的图神经网络。
引用GCN里的一张图,这张图也是非常经典,看着很花哨,公式写起来很简单。
GCN可以认为是第一代,可以商业化的图神经网络。
GCN的公式非常简单。
其中,是激活函数,原作者采用ReLU,至于ReLU是什么你都不懂的话,可以需要从头开始学习深度学习和机器学习。后面我计划推出一个深度学习从零开始的教程。这里相当于把输入的原特征矩阵
和
做了一个相乘之后,再和邻接矩阵A相乘。
可以认为是一个简单的线性神经网络。对应PyTorch里的Linear或者TensorFlow里的Dense。
是一个N*F的矩阵,
是一个F*F'的矩阵,相乘之后得到N*F'。 A是一个N*N的矩阵,和A相乘后得到一个新的N*F'的矩阵,也就是
。
具体来说公式是:
这里对原来的邻接矩阵做了一个归一化,可以不必看懂这个归一化,除非你懂线性代数。就是这么简单。对于懂线性代数的人来说,非常容易看懂。所以想要看懂深度学习,线性代数是基础。
另外,图神经网络可以多层。下一层来自于上一层
的计算。当然现在的图神经网络已经比较复杂了,例如加上ResNet残差连接层,加入注意力机制,池化机制等等。
最后根据最后一层,去做分类,预测节点的类别。
早期的图神经网络GCN、GAT只预测节点的类别。但GIN开始,对GCN和GAT做一个节点特征的池化Pooling,就能得到真个图的特征,并应用在图分类上。
后续文章再对GAT和GIN,以及最新的图神经网络进行介绍。但从现在最新图神经网络的效果来看,并没有比GCN、GAT具有特别翻天覆地的精读提示,一般也就提示1-3个百分点。所以很多应用的文章直接拿GCN和GAT应用下就能发文章,如何应用GNN发文章,后面博客会写。