万字长文带你入门 GCN( 七 )


本文插图
计算卷积有很多种方法 , 除了直接计算外 , 我们还可以考虑「卷积定理」:在适当条件下 , 两个信号的卷积的傅立叶变换是他们的傅立叶变换的点积 。 换句话说 , 一个域(如时域)的卷积等于另一个域(如频域)的点乘:
其中 表示 的傅立叶变换 。
借助傅立叶逆变换 可以写成:
万字长文带你入门 GCN
本文插图
这样做有什么好处呢?或者说 , 我们为什么要变换一个域后再去做卷积操作?
因为利用卷积定理可以简化卷积的运算量 。 对于一个长度为 n 的序列 , 按照卷积的定义来计算则需要做 2n-1 组对位乘法 , 即时间复杂度为 ;而利用傅立叶变换后 , 只需要计算一组对位乘法 , 而且离散傅立叶变换有快速的算法(快速傅立叶变换) , 所以总的计算复杂度为。
3.2 Graph Convolution
现在有了图傅立叶变换 , 又有了离散卷积操作 , 那么我们想:既然无法直接在空域进行卷积 , 可否将图信号映射到频域后再做卷积操作 。
所以我们有:
万字长文带你入门 GCN
本文插图
其中 , 向量 与向量 的元素点积 , 等价于将 组织成对角矩阵的形式进行矩阵乘法 , 所以我们有:
万字长文带你入门 GCN
本文插图
最后我们再左乘 进行逆变换:
万字长文带你入门 GCN
本文插图
这里 , 我们不写成 的主要原因在于 , 我们可以将其与深度学习相结合 , 在 GCN 中我们的卷积核是可训练并且参数共享的 , 所以在此我们可以直接将 写成, 这个便是深度学习中的可学习参数 。
3.3 GCN-1
第一代的卷积神经网络也就是刚刚我们给出的公式:
万字长文带你入门 GCN
本文插图
这和论文中给出的公式是一样的:
万字长文带你入门 GCN
本文插图
这边补充一点 , 在这篇论文中 , 作者还给出了一个基于空域的「深度局部连接网络」(Deep Locally Connected Networks) , 我们可以简单看一下:
万字长文带你入门 GCN
本文插图
每一层变换定义为:

万字长文带你入门 GCN
本文插图
其中 ,表示第 k 第 i 个节点; 表示第 k 层节点 i 和节点 j 的权值 , 考虑局部邻居; 表示卷积运算; 表示第 k 层的池化操作 。 也就是说每个节点都是由其邻居和自身卷积池化得到 。
虽然看起来很简单 , 但是优点在于它不需要很强的前提假设 , 其只需要网络具有局部邻域结构 , 甚至不需要很好的 Embedding 向量 。
但这种结构下有一个很大的缺点:「没有办法实现共享参数」 。
作者针对这种问题提出了我们所看到第一代图卷积神经网络 。
3.4 GCN-2
第一代的图卷积神经网络很巧妙的利用图谱理论来实现拓扑图的卷积操作 , 但其有很多缺点 , 比如说:计算复杂度太高 , 我们需要对拉普拉斯矩阵进行谱分解得到特征向量矩阵, 时间复杂度为 ;
针对这个问题 , 学者提出了第二代 GCN 。
首先我们回顾下图傅立叶变换:
万字长文带你入门 GCN
本文插图


推荐阅读