首先给几个帮助理解GCN的博客:

(1)如何通俗易懂地解释卷积?

(2)从时域和频域来解析傅里叶变换(含代码和性质)

(3)傅里叶变换就是这么简单,你学会了吗?

(4)图卷积网络(GCN)新手村完全指南

(5)从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型

几个核心概念:

(1)定义两个函数f和g的卷积f*g其实是定义两个函数之间的操作。(i.e., 卷积和矩阵乘法)

(2)区别卷积和卷积核(前者是运算,后者是函数)

(3)卷积的作用:引入了邻居信息对当前点(目标)的影响,即从f导f*g融合了近邻信息。(i.e., 传统图像CNN中的卷积)

(4)傅里叶变换的作用:找到时域函数f和g在频域中的表达\head{f} = F(f) 和\head{g}(F为傅里叶变换;核心是频域中的基);用来类比实现(构造、找到)图中的基以及利用基怎么得到具体的\head{f}和\head{g}, 这里的基其实就是拉普拉斯矩阵L(L = D - A)所对应的特征向量(表示为U):  D和A都是通过图构造出来的,如A是邻接矩阵;D是每个点的度矩阵。

(5)在(4)的基础上,利用一个时域和频域的恒等式 (f*g)(t) = F^{-1}[F[f(t)] element-wise Multiplication F[g(t))]] 就可以推导出 (f*g)(t) = U g_\theta U^\top f 是关于U的一个等式,这里U是可求的,f一般是定义的,所以核心问题就是怎么去定义g_\theta (有不同的方法 )

(6)我们可以把g_\theta 理解为L矩阵特征值的函数,即g_\theta(特征值对角矩阵)。而且可以作为网络结构参数学出来(Spectral CNN: 再每一个特征值前乘以一个可以学习的w?)。

(7)由于“(6)”中的方法要计算特征值和特征向量,复杂度很高。所以可以进行第一步简化, 即切比雪夫网络(ChebNet);核心是利用递推式加速求解。

(8)本文通过一些假设,进一步简化“(7)”中的结果,如令切比雪夫多项式中的K=1,让两个参数相等,renormalization trick。最后到文中的卷积表达,即Eq(8)f(X, A) -> Z:X为点的表达,\Theta为参数,其他都是通过L变换计算出来的。这里的Z和\Theta可以通过网络结构拓展和实现(层数等价于我们要考虑的k-th order neighbors?)。

(9)最后可以用Z去做分类等任务。

所以,最后需要用到GCN(其实是用到这里的卷积函数),只需要

1)构造图的拉普拉斯矩阵相关的矩阵 adjacency matrix A;  \head{A} = A + I_N;  \head{D}_{ii} = \sum_j \head{A}_{ij}

2)利用文章中Eq8 求出Z (Z = f(X, A) 当然,这里可以迭代多次卷积,即多次网络结构,参考Eq9)

3)用Z去做最终的任务。



留言

登录 请先登陆, 再留言!