-
拉普拉斯矩阵
1.1 图的拉普拉斯矩阵L=D-A,其中D是顶点的度矩阵(对角矩阵),对角线上元素依次为各个顶点的度, A是图的邻接矩阵。如下图所示:
1.2 对称归一化的拉普拉斯矩阵
L s y m = D − 1 / 2 L D − 1 / 2 = I − D − 1 / 2 A D − 1 / 2 L^{sym}=D^{-1/2}LD^{-1/2}=I-D^{-1/2}AD^{-1/2} Lsym=D−1/2LD−1/2=I−D−1/2AD−1/2
1.3 随机游走归一化的拉普拉斯矩阵
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易知拉普拉斯矩阵都是实对称矩阵,因此实对称矩阵必然可对角化,因此可以进行特征分解(特征分解,其充要条件为n阶方阵存在n个线性无关的特征向量)。图的拉普拉斯矩阵共有三个性质:
-
对称矩阵一定n个线性无关的特征向量
-
半正定矩阵的特征值一定非负
-
对阵矩阵的特征向量相互正交,即所有特征向量构成的矩阵为正交矩阵
因此拉普拉斯矩阵的特征值分解如下:
L = U [ λ 1 ⋱ λ n ] U − 1 L=U\begin{bmatrix} \lambda _{1} & & \\ & \ddots & \\ & & \lambda _{n} \end{bmatrix}U^{-1} L=U⎣⎡λ1⋱λn⎦⎤U−1
其中 λ \lambda λ为特征值,U是正交矩阵,即: U U T = E UU^{T} = E UUT=E,所以上式特征值分解可以写成:
L = U [ λ 1 ⋱ λ n ] U T L=U\begin{bmatrix} \lambda _{1} & & \\ & \ddots & \\ & & \lambda _{n} \end{bmatrix}U^{T} L=U⎣⎡λ1⋱λn⎦⎤UT
-
图的傅里叶变换
传统的傅里叶变换公式: F ( ω ) = F [ f ( t ) ] = ∫ f ( t ) e − i ω t d t F(\omega )=\mathcal{F}[f(t)]=\int f(t)e^{-i\omega t}dt F(ω)=F[f(t)]=∫f(t)e−iωtdt。
由于 e − i ω t e^{-i\omega t} e−iωt满足: Δ e − i ω t = ∂ 2 ∂ t 2 e − i ω t = − ω 2 e − i ω t \Delta e^{-i\omega t}=\frac{\partial ^{2}}{\partial t^{2}}e^{-i\omega t}=-\omega ^{2}e^{-i\omega t} Δe−iωt=∂t2∂2e−iωt=−ω2e−iωt类似于 A V = λ V AV=\lambda V AV=λV的特征方程。因此 e − i ω t e^{-i\omega t} e−iωt就是 Δ \Delta Δ的特征函数, − ω 2 -\omega ^{2} −ω2视为特征值。定义图的傅里叶变换: F ( λ l ) = f ^ ( λ l ) = ∑ i = 1 N f ( i ) u l ∗ ( i ) F(\lambda _{l})=\hat{f}(\lambda _{l})=\sum_{i=1}^{N}f(i)u_{l}^{*}(i) F(λl)=f^(λl)=∑i=1Nf(i)ul∗(i),其中 f f f为图上的N维向量, f ( i ) f(i) f(i)与图的顶点一一对应。 u l ∗ ( i ) u_{l}^{*}(i) ul∗(i)表示第 l l l特征向量的第 i i i个分量, ∗ * ∗为共轭。推广到矩阵形式:
( f ^ ( λ 1 ) f ^ ( λ 2 ) ⋮ f ^ ( λ N ) ) = ( u 1 ( 1 ) u 1 ( 2 ) ⋯ u 1 ( N ) u 2 ( 1 ) u 2 ( 2 ) ⋯ u 2 ( N ) ⋮ ⋮ ⋱ ⋮ u N ( 1 ) u N ( 2 ) ⋯ u N ( N ) ) ( f ( 1 ) f ( 2 ) ⋮ f ( N ) ) \begin{pmatrix} \hat{f}(\lambda _{1})\\ \hat{f}(\lambda _{2})\\ \vdots \\ \hat{f}(\lambda _{N}) \end{pmatrix}=\begin{pmatrix} u_{1}(1) &u_{1}(2) & \cdots &u_{1}(N) \\ u_{2}(1)& u_{2}(2) & \cdots & u_{2}(N)\\ \vdots & \vdots & \ddots & \vdots \\ u_{N}(1)& u_{N}(2) & \cdots & u_{N}(N) \end{pmatrix}\begin{pmatrix} f(1)\\ f(2)\\ \vdots \\ f(N) \end{pmatrix} ⎝⎜⎜⎜⎛f^(λ1)f^(λ2)⋮f^(λN)⎠⎟⎟⎟⎞=⎝⎜⎜⎜⎛u1(1)u2(1)⋮uN(1)u1(2)u2(2)⋮uN(2)⋯⋯⋱⋯u1(N)u2(N)⋮uN(N)⎠⎟⎟⎟⎞⎝⎜⎜⎜⎛f(1)f(2)⋮f(N)⎠⎟⎟⎟⎞
即为: f ^ = U T f \hat{f}=U^{T}f f^=UTf类似的,传统傅里叶逆变换如下公式: F − 1 ( ω ) = 1 2 π ∫ f ( t ) e i ω t d t F^{-1}(\omega )=\frac{1}{2\pi }\int f(t)e^{i\omega t}dt F−1(ω)=2π1∫f(t)eiωtdt,定义图的傅立叶逆变换的矩阵形式为: f = U f ^ f=U\hat{f} f=Uf^
-
图卷积基础GCN
由于空域上的卷积等价于频域上的乘积,即:
f ∗ h = F [ f ^ ( ω ) h ^ ( ω ) ] = 1 2 π ∫ f ^ ( ω ) h ^ ( ω ) e i ω t d w f*h=\mathcal{F}[\hat{f}(\omega )\hat{h}(\omega )]=\frac{1}{2\pi }\int \hat{f}(\omega )\hat{h}(\omega )e^{i\omega t}dw f∗h=F[f^(ω)h^(ω)]=2π1∫f^(ω)h^(ω)eiωtdw,
因此利用图的傅里叶变换进行如下推导:将 h h h的傅里叶变换写成对角矩阵的形式: ( h ( λ 1 ) ^ ⋱ h ( λ n ) ^ ) \begin{pmatrix} \hat{h(\lambda _{1})}& & \\ & \ddots & \\ & & \hat{h(\lambda _{n})} \end{pmatrix} ⎝⎛h(λ1)^⋱h(λn)^⎠⎞,则 f ^ ( ω ) h ^ ( ω ) = ( h ( λ 1 ) ^ ⋱ h ( λ n ) ^ ) U T f \hat{f}(\omega )\hat{h}(\omega )=\begin{pmatrix} \hat{h(\lambda _{1})}& & \\ & \ddots & \\ & & \hat{h(\lambda _{n})} \end{pmatrix}U^{T}f f^(ω)h^(ω)=⎝⎛h(λ1)^⋱h(λn)^⎠⎞UTf,接下来求逆变换,则 f ∗ h = U ( h ( λ 1 ) ^ ⋱ h ( λ n ) ^ ) U T f f*h=U\begin{pmatrix} \hat{h(\lambda _{1})}& & \\ & \ddots & \\ & & \hat{h(\lambda _{n})} \end{pmatrix}U^{T}f f∗h=U⎝⎛h(λ1)^⋱h(λn)^⎠⎞UTf,很多论文也写成如下形式: f ∗ h = U ( ( U T h ) ⨀ ( U T f ) ) f*h=U((U^{T}h)\bigodot(U^{T}f)) f∗h=U((UTh)⨀(UTf)),其中 ⨀ \bigodot ⨀为Hadamard product。
-
神经网络中的图卷积
由于在神经网络中我们需要对卷积核的参数进行更新优化进而达到学习的目的,在图卷积中我们也需要类似的参数。第一代GCN就把 d i a g ( h ( λ l ) ^ ) diag(\hat{h(\lambda _{l})}) diag(h(λl)^)直接作为卷积核,对角线上的参数进行更新学习。然而这种方法缺陷太多,包括:
- O ( n 2 ) O(n^{2}) O(n2)的计算复杂度,
- 卷积核需要n个参数
- 卷积核不具备spatial localization(啥意思?)
第二代GCN将 h ( λ l ) ^ \hat{h(\lambda _{l})} h(λl)^设计成了 ∑ j = 0 K α j λ l j \sum_{j=0}^{K}\alpha _{j}\lambda _{l}^{j} ∑j=0Kαjλlj,即
∑ j = 0 K α j Λ j = ( ∑ j = 0 K α j λ 1 j ⋱ ∑ j = 0 K α j λ n j ) \sum_{j=0}^{K}\alpha _{j}\Lambda ^{j}=\begin{pmatrix} \sum_{j=0}^{K}\alpha _{j}\lambda _{1}^{j} & & \\ & \ddots & \\ & &\sum_{j=0}^{K}\alpha _{j}\lambda _{n}^{j} \end{pmatrix} ∑j=0KαjΛj=⎝⎜⎛∑j=0Kαjλ1j⋱∑j=0Kαjλnj⎠⎟⎞
进而导出 U ∑ j = 0 K α j Λ j U T = ∑ j = 0 K α j U Λ j U T = ∑ j = 0 K α j L j U\sum_{j=0}^{K}\alpha _{j}\Lambda ^{j}U^{T}=\sum_{j=0}^{K}\alpha _{j}U\Lambda ^{j}U^{T}=\sum_{j=0}^{K}\alpha _{j}L^{j} U∑j=0KαjΛjUT=∑j=0KαjUΛjUT=∑j=0KαjLj,好处包括:- 卷积核有K个参数,降低复杂度
- 矩阵变换后不需要进行特征分解,可以直接利用拉普拉斯矩阵,但复杂度还是 O ( n 2 ) O(n^{2}) O(n2)。
- K为感受野,卷积核具有很好的spatial localization
切比雪夫多项式进复杂度。具体不细说…
-
图注意力网络GAN
首先计算注意力系数,即对于定点 i i i,计算他的邻居们( j ∈ N i j\in N_{i} j∈Ni)和自己的相关系数: e i j = a ( [ W h i ∣ ∣ W h j ] ) e_{ij}=a([Wh_{i}||Wh_{j}]) eij=a([Whi∣∣Whj]),其中W是线性映射,体现对特征的增强。 [ . ∣ ∣ . ] [.||.] [.∣∣.]指对变换后的特征进行拼接,最后 a a a将拼接的特征映射到一个实数上。这样,相关性的学习就等价于 W W W和 a a a的学习。有了相关系数后,对其使用softmax得到注意力系数,公式如下:
α i j = e x p ( L e a k y R e L U ( e i j ) ) ∑ k ∈ N i e x p ( L e a k y R e L U ( e i k ) ) \alpha _{ij}=\frac{exp(LeakyReLU(e_{ij}))}{\sum_{k\in N_{i}}^{}exp(LeakyReLU(e_{ik}))} αij=∑k∈Niexp(LeakyReLU(eik))exp(LeakyReLU(eij))
得到注意力系数后,对特征加权求和。