笔记参考GCN的数学原理
目录
1.GCN基础知识
2.谱图理论
3.傅里叶变换
4.图卷积
1. GCN基础知识
1.1 graph vs image
- graph:由点和边组成,可以表示任意的事物与事物之间的关系。
- image:graph在欧式空间表示事物与事物之间的关系。每个像素点看成一个节点(有rgb三个纬度的特征),像素与像素之间的相邻关系作为边。例如一个
3
∗
3
3*3
3∗3的image可以建立为如下的graph(如果加入对角线相邻)
- image与graph关系:image实质上是graph在欧式空间上的一个特例,graph是泛化的image。
1.2 GNN
GNN是专门用于处理图数据的神经网络架构
-
应用场景:有很多场景都可以用graph建模。
- 文本分类中,可以将文本和词作为节点,其包含关系作为边,建立文档与词的关系图以解决问题。
- 社交网络中,用户为节点,用户之间的好友关系作为边,建立社交关系图
-
数学表达
H ( l + 1 ) = f ( A , H ( l ) ) H^{(l+1)}=f(A,H^{(l)}) H(l+1)=f(A,H(l))
A A A表示邻接矩阵; H ( l ) H^{(l)} H(l)第l层的输入特征, H ( l + 1 ) H^{(l+1)} H(l+1)表示第l层的输出特征; f f f表示一种graph层次的映射(聚合) -
GNN模型:对 f f f的设计,不同的 f f f对应不同的GNN架构
1.3 GCN
H
(
l
+
1
)
=
D
~
−
1
2
A
~
D
~
−
1
2
H
(
l
)
W
H^{(l+1)}=\widetilde{D}^{-\frac{1}{2}}\widetilde{A}\widetilde{D}^{-\frac{1}{2}}H^{(l)}W
H(l+1)=D
−21A
D
−21H(l)W
ps:只考虑无向简单图(无自环和重边)
- 参数解释
A A A表示邻接矩阵
A ~ \widetilde{A} A 表示有自连的邻接矩阵,即 A ~ = A + I \widetilde{A}=A+I A =A+I
$D $表示度矩阵(对角矩阵:只有主对角线上元素有值,其值表示对应节点的度,即邻居的个数)
D ~ \widetilde{D} D 表示自连矩阵的度矩阵, D ~ = D + I \widetilde{D}=D+I D =D+I
- 理解
(1)邻接矩阵加入自环
(2)对称归一化,
(3)最终得到的矩阵对输入特征进行聚合
2. 谱图理论
2.1 线代基础
- 特征值与特征向量: A x = λ x Ax=\lambda x Ax=λx, λ \lambda λ是矩阵 A A A的特征值, x x x是特征值对应的特征向量
- 实对称矩阵性质:有n个特征值,对应n个相互正交的特征向量。即 A = u Λ u T A=u\Lambda u^T A=uΛuT,且 u u T = I uu^T=I uuT=I
- 半正定矩阵: λ i ≥ 0 \lambda_ i\geq0 λi≥0
- 二次型定义: x x x对于矩阵 A A A的二次型为 x T A x x^TAx xTAx
- 瑞丽商: q = x T A x x T x q=\frac{x^TAx}{x^Tx} q=xTxxTAx。若 x x x是 A A A的特征向量,则 q = λ q=\lambda q=λ
2.2 谱图理论
- 相关矩阵
A A A的拉普拉斯矩阵: L = D − A L=D-A L=D−A
L L L的对称规范化: L s y m = D − 1 2 L D − 1 2 L_{sym}=D^{-\frac{1}{2}}L{D}^{-\frac{1}{2}} Lsym=D−21LD−21 - 矩阵性质
L L L和 L s y m L_{sym} Lsym都是实对称阵且都是半正定的,此外 L s y m L_{sym} Lsym的特征值的范围在[0,2] - 证明
瑞丽商大于等于0,构造中间矩阵G,公式打起来过于繁琐,证明过程见视频。
3. 傅里叶变换
研究同一个事物在不同的域之间的不同视角
详细讲解傅里叶变换之掐死教程
3.1 Example
同一个事物在不同的基上的表达
- example1:利用傅里叶变换再频率域的操作可以简化问题。例如一段男女混杂的声音,在频率域可以很好地区分和去除。
- example2:多项式的傅里叶变换。将系数作为基的多项式转换为点对作为基的多项式。
3.2 Graph 的傅里叶变换
- 区别于image
image不需要进行傅里叶变换,而可以直接在空间域做卷积。是因为image具有较为规则的拓扑结构,因此可以使用一种特定形状的kernel作为卷积核。 - graph做傅里叶变换的必要性
graph具有任意形状的拓扑结构,每个节点拥有不同数量的邻居,无法在空间域给定一个特定形状的kernel作为卷积核,因此在空间域去做图的卷积是十分困难的。,借助傅里叶变换,可以在频率域对graph轻易地做卷积(在频率域对graph做卷积很容易)。卷积之后进行逆变换到空间域 - graph的傅里叶变换:
L
x
Lx
Lx
- 等式左边:这里假设 x x x是n个节点,每个节点的特征纬度为1。如果将拉普拉斯矩阵和 x x x相乘得到的结果便是每一个节点聚合其邻居节点之后的表征。
- 等式右边:而这个操作的本质是拉普拉斯变换, U T U^T UT是一个正交阵,x与一个正交阵相乘意味着空间基底的交换。所以对公式 U Λ U T x U\Lambda U^Tx UΛUTx从右往左看, L x Lx Lx实质上是先将x变换基底,然后对每个纬度进行放缩,最后用逆变换变换到原来的空间。
- 小结:在新的域( U T U^T UT)中,只需要对其进行放缩操作就可以实现对graph聚合邻居的效果。可见在新的域中,卷积是一个相对容易的操作。
- 存在问题:但是由于分解特征值和特征向量的复杂度很大( O ( n 2 ) O(n^2) O(n2)),对于较大规模的graph无法计算,因此GCN则是傅里叶变换再特征值分解上做了一些限制,推导出一种不需要做特征值分解复杂度在 O ( n l o g n ) O(nlogn) O(nlogn)方法
4. 图卷积
假设邻接矩阵 A A A经过函数 F F F之后可以得到一个关于graph性质较好的矩阵,例如拉普拉斯矩阵等,即 F ( A ) = U Λ U T F(A)=U\Lambda U^T F(A)=UΛUT
-
图卷积操作定义
x经过傅里叶变换到频率域中,在频率域中经过操作 g θ ( λ ) g_\theta(\lambda) gθ(λ)(需要学习的函数),然后通过逆变换返回空间域。 -
对函数的限制
为了简化计算(避免计算特征值和特征向量),假设 g θ ( λ ) g_\theta(\lambda) gθ(λ)是关于 λ \lambda λ的多项式,即
因为 U Λ U T k = U Λ k U T {U\Lambda U^T}^k=U\Lambda ^kU^T UΛUTk=UΛkUT,所以有
-
切比雪夫多项式
在实际操作中,并不是用系数的方式拟合 g θ ( λ ) g_\theta(\lambda) gθ(λ),因为随着n的增大,会出现梯度消失/爆炸的问题。所以使用的是切比雪夫多项式,因为具有下图第二个公式的性质,不存在梯度消失/爆照,随着n的增大,在数值上有摆动的趋势;但是其自变量必须在[-1,1]区间内
即要满足特征值在[-1,1]之间,由于 L s y m L_sym Lsym的特征值在[0,2]范围内,所以 L s y m − I L_sym-I Lsym−I可以满足条件,即 F ( A ) = L s y m − I F(A)=L_sym-I F(A)=Lsym−I(特征值在[-1,1]的实对称阵),得到的卷积的定义为:
-
一阶近似
为了避免计算矩阵的k次方,GCN做了一阶近似,即将上述卷积的k仅仅遍历到1(令 K = 1 K=1 K=1),不考虑二阶以上的遍历,得到下式
-
使用正则化及trick
-
θ
0
\theta_0
θ0和
θ
1
\theta_1
θ1共享参数,令
θ
1
=
−
θ
0
\theta_1=-\theta_0
θ1=−θ0,得到下式
- renormalize trick:将
I
I
I加到
A
A
A中(没有原因,但是效果很好,也可以进一步简化计算)得到GCN的最终公式
-
θ
0
\theta_0
θ0和
θ
1
\theta_1
θ1共享参数,令
θ
1
=
−
θ
0
\theta_1=-\theta_0
θ1=−θ0,得到下式