目录
-
- 1 谱域GCN
-
- 1.1 GNN 和 GCN 有什么不同?
- 1.2 为什么GCN中要引入拉普拉斯矩阵?
- 1.3 为什么拉普拉斯矩阵要正则化?
- 1.4 为什么要对拉普拉斯矩阵进行特征分解?
- 1.5 空域GCN是不是就完全不需要考虑拉普拉斯矩阵及其特征分解了?如果不用的话,那是为什么不用呢?
- 1.6 谱域GCN传播公式中,哪里体现了傅里叶变换、拉普拉斯矩阵、拉普拉斯矩阵的特征值分解?(or 谱域GCN的卷积怎么卷的?是一种怎样的数学运算?梯度下降反向传播体现在哪里?)
- 1.7 终于明白了谱域GCN的傅里叶变换、拉普拉斯矩阵、特征值体现在哪。。
- 1.8 谱域和空域的“卷积”到底是怎么卷的?是一种怎样的数学运算?各自的梯度下降反向传播体现在哪里?
- 1.9 谱域和空域各自的优缺点?各自擅长什么场景、处理哪类问题?
- 2 参考资料/学习资料
1 谱域GCN
1.1 GNN 和 GCN 有什么不同?
GCN可以说是一种特殊的GCN,区别在于聚合邻居节点信息时的聚合方法。GNN和GCN都是要将邻居节点的信息聚合到自身节点i的,然后与自身节点i的信息加权融合后再做变换,但不同的是,GNN采集节点i的邻居节点A、B、C信息时,各隐藏层对A、B、C的系数a、b、c都是一样的,但GCN中每层隐藏层的系数是可变的——“GNN相当于使用了相同层的GCN”。
还有一种说法是,「GNN的思路很简单:为了编码图的结构信息,每个节点可以由低维状态向量表示。即GNN的目标是为每个节点学习一个节点表示 」(这种说法把GNN说的更简单了,相当于GNN只是提出了“要将图的结构信息进行编码”这一想法。)GNN是为了给节点学习一个节点表示,而GCN、GAT等就是采取了不同方法来学习这个节点表示罢了。
1.2 为什么GCN中要引入拉普拉斯矩阵?
在调研总结完全部知识后,最终对该问题进行如下4步的why - because的梳理:
在谱域研究图,需要对图进行傅里叶变换将图投影到傅里叶域
→ 一个域之所以称为“域”,起码得有一组正交基,使得该域的各个位置/各种状态都可以由这组正交基的线性组合来表示
→ 拉普拉斯矩阵的特征向量恰好可以组成一组正交基
→ 使得傅里叶域中的图的任意向量/任意状态,都可以用这组正交基来表示,亦即 可以用矩阵形式来表示图的傅里叶变换了
先介绍一下拉普拉斯矩阵:
对于图 G = ( V , E ) G=(V, E) G=(V,E) ,其拉普拉斯矩阵 L = D − A L=D-A L=D−A,其中 D D D 是顶点的度矩阵, A A A 是图的邻接矩阵。拉普拉斯矩阵包含了图的节点个数信息、节点的度信息、节点的连接信息,可以很全面地概述一张图所包含的各类信息。

常用的拉普拉斯矩阵有三种:
L = D − A L=D-A L=D−A 普通形式的拉普拉斯矩阵
L s y s = D − 1 2 L D − 1 2 = I − D − 1 2 A D − 1 2 L^{sys}=D^{-\frac{1}{2}}LD^{-\frac{1}{2}}=I-D^{-\frac{1}{2}}AD^{-\frac{1}{2}} Lsys=D−21LD−21=I−D−21AD−21 正则化且对称的拉普拉斯矩阵
L r w = D − 1 L = I − D − 1 A L^{rw}=D^{-1}L=I-D^{-1}A Lrw=D−1L=I−D−1A 随机游走正则化的拉普拉斯矩阵
那么问题来了,**为什么拉普拉斯矩阵要进行正则化呢?**→ 见“2.3 为什么拉普拉斯矩阵要正则化”
至于为什么GCN要用到拉普拉斯矩阵呢,因为拉普拉斯矩阵是对称矩阵,可以进行特征分解。
那么问题又来了,为什么我们需要一个「能够被特征分解」的矩阵呢(或者说为什么我们需要一个「能够被特征分解」的拉普拉斯矩阵呢)?→见“2.4 为什么要对拉普拉斯矩阵进行特征分解”
1.3 为什么拉普拉斯矩阵要正则化?
先给出结论:可以将拉普拉斯矩阵的正则化看作是对原始邻接矩阵的一种「横、纵向正则化」。
一般来说,GNN有一下三种正则化的形式(或者说,从代码的层面来理解有三种形式;因为对整个邻接矩阵A的正则化是拆分为了横向正则化和纵向正则化):
1)节点features的正则化。与其他NN训练前要将特征们正则化一样的原理;
2)对于带权图,需要横向正则化。比如一张带权图,节点表示金融的客户,边表示客户之间的交易金额。那不同节点之间边的weight可能差异很大,可能导致难c收敛。但对于整个问题来说,edge weights的绝对大小不重要,相对大小才重要。横向正则化在其他NN中也常见。
3)纵向正则化,这是graph比较“独有”的操作了。纵向标准化实际上是希望将节点的邻居节点对其的“贡献”进行标准化。比如说脉脉上的用户之间的关注关系就是天然的同构图,假设我们要做节点分类判定某个用户A是不是算法工程师,并且假设A仅仅和另一个算法工程师B以及10个猎头有关注的关系,直观上,猎头对用户A的节点类别的判定的贡献应该是很小的,因为猎头往往会和算法,开发,测试,产品等不同类型的用户有关联关系,他们对于用户A的“忠诚关联度”是很低的,而对于算法工程师B而言,假设他仅仅和A有关联, 那么明显,B对A的“忠诚关联度”是很高的,B的node features以及B和A的关联关系在对A进行节点分类的时候应该是更重要的。
那么,纵向标准化就较好的考虑到了上面的问题,思想很简单,假设节点1和节点2有一个权重为1的edge相连,节点2和其他1000个节点也有关联,那么节点2对于节点1的贡献度为1/1000,即用edge weights除以节点1的度(有权图上用加权度)。
此处补充一些关于**「拉普拉斯矩阵的性质」**的基础知识:
1)拉普拉斯矩阵是半正定的(特征值都≥0);
2)最小的特征值是0,并且最小特征值0对应的特征向量为全1向量;
3)特征值中0出

本文详细介绍了谱域GCN的概念,探讨了GNN与GCN的区别,强调了拉普拉斯矩阵在GCN中的作用,包括为何需要引入拉普拉斯矩阵、正则化的原因以及特征值分解的重要性。同时,解释了谱域GCN的卷积过程,以及空域GCN的特点。文章通过实例和公式阐述了傅里叶变换、拉普拉斯矩阵和特征值在GCN中的体现,帮助读者理解谱域和空域卷积的数学运算。

6078

被折叠的 条评论
为什么被折叠?



