前置知识
基本符号
梯度▽, 对数量场求梯度▽u,结果为向量。
散度▽·,注意散度符号有点。对向量场求散度▽·A ,点乘结果为数。
拉普拉斯算子△,或写为
▽
2
▽^2
▽2,定义为梯度的散度。
于是有
▽ f = g r a d ( f ) △ f = ▽ 2 f = ▽ ⋅ ▽ f = d i v ( g r a d ( f ) ) ▽f=grad(f) \\ △f=▽^2f = ▽\cdot ▽f = div(grad(f)) ▽f=grad(f)△f=▽2f=▽⋅▽f=div(grad(f))
图上的拉普拉斯矩阵
定义式
L
=
D
−
W
L=D-W
L=D−W
Combinatorial Laplacian
对象为图时,
W即为邻接矩阵A,此时可改写
L
=
D
−
A
L=D-A
L=D−A
D是一个对角矩阵,对角元素为图上各节点的入度。
性质:n个特征值非负
#https://zhuanlan.zhihu.com/p/67336297
这篇文章的KG矩阵符号正负写反了,或者说定义写反了。
应该是算梯度时,边射出顶点为负,射入顶点为正。这样符合终点减起点的直觉。[f(v1)-f(v0)]/d01。
算散度时,该点处,射出梯度为正,输入梯度为负。出梯度减入梯度得散度。
归一化后的拉普拉斯矩阵(Symmetric normalized Laplacian),简记为
L
s
y
m
L^{sym}
Lsym。
L
s
y
m
=
D
−
1
2
L
D
−
1
2
=
I
n
−
D
−
1
2
A
D
−
1
2
L^{sym}=D^{-\frac{1}{2}}LD^{-\frac{1}{2}}=I_{n}-D^{-\frac{1}{2}}AD^{-\frac{1}{2}}
Lsym=D−21LD−21=In−D−21AD−21
显然L是实对称矩阵,因此可以正交分解为
L
=
U
Λ
U
T
L=U\Lambda U^T
L=UΛUT
其中
U
U
U为n个单位特征向量作为列向量排列而成的正交矩阵。
Λ
\Lambda
Λ为n个特征值排列在对角线上的对角阵。
还有一种Random walk normalized Laplacian,简记为 L r w L^{rw} Lrw
拉普拉斯矩阵的归一化推导。
Laplacian Eigenmaps and Spectral Techniques for Embedding and Clustering, Mikhail Belkin
谱方法
开山鼻祖应该是这篇图谱论Spectral graph theory,CHUNG,1997, 原书pdf228页。
http://www.ams.org/books/cbms/092/
容易证明,傅里叶变换是一种线性变换。
我们可以将
U
T
U^T
UT视为傅里叶变换(时域到谱域的线性映射)的矩阵表达。
Q:为什么可以用拉普拉斯矩阵的特征向量作为傅里叶变换的基?
@处决思想者: “N维空间中的任意一组正交基都可以作为vertex domain到spectral domain的基,而Graph Fourier Transformer选择Laplacian特征向量作为基,原因是Graph Laplacian的特征向量可以视为图 最好的一组n维embedding,因为满足Dirichlet Energy最小,所以这组基可以carry the smooth geometry of graph.”
[1]Bruna J, Zaremba W, Szlam A, et al. Spectral networks and locally connected networks on graphs[J]. arXiv preprint arXiv:1312.6203, 2013.
来源: https://www.zhihu.com/question/355874991/answer/1204283923
x
^
=
U
T
x
\hat{x}=U^{T}x
x^=UTx,x为原信号。
同理,
U
U
U便是傅里叶逆变换的矩阵表达。
x
=
U
x
^
x=U\hat{x}
x=Ux^
引入卷积定理:信号卷积的傅立叶变换等价于信号傅立叶变换的乘积。
即,先把两个信号变换到谱域上,做乘法,再把乘积结果变换回时域。
于是可以写出定义式,
给定图上的两个信号
x
,
y
∈
R
n
x,y\in R^{n}
x,y∈Rn,则卷积运算
x
⋆
y
=
F
−
1
(
F
(
x
)
⋅
F
(
y
)
)
=
U
(
(
U
T
x
)
⊙
(
U
T
y
)
)
x\star y \\ = F^{-1}(F(x)\cdot F(y)) \\ =U((U^{T}x)\odot(U^{T}y))
x⋆y=F−1(F(x)⋅F(y))=U((UTx)⊙(UTy))
注意 ⋆ \star ⋆这个卷积符号完全是自定义的一个符号,不同论文里可能采用不同的符号标识,这并不重要。
F为傅里叶变换,F^{-1}为逆变换。
为了简便起见,我们对上述定义式再做变形。
由于hardamard dot满足交换律,
x
⋆
y
=
U
(
(
U
T
y
)
⊙
(
U
T
x
)
)
x\star y =U((U^{T}y)\odot(U^{T}x))
x⋆y=U((UTy)⊙(UTx))
其中
U
T
y
,
U
T
x
∈
R
n
U^Ty,U^Tx \in R^{n}
UTy,UTx∈Rn,是变换后的谱域上的向量。
两个向量的哈马达积显然可以改写为一个对角阵与一个向量的矩阵乘积。
于是我们可以用一个对角阵
g
θ
∈
R
n
×
n
g_{\theta} \in R^{n\times n}
gθ∈Rn×n代替
U
T
y
U^Ty
UTy,从而将hardamard dot改写为更常用的matmul dot。
x
⋆
y
=
U
g
θ
U
T
x
x\star y=Ug_{\theta}U^{T}x
x⋆y=UgθUTx
形状 U , U T , g θ ∈ R n × n , x , y ∈ R n U,U^T,g_{\theta} \in R^{n\times n} , x,y\in R^n U,UT,gθ∈Rn×n,x,y∈Rn
最终结果为 x ⋆ y ∈ R n x\star y \in R^n x⋆y∈Rn
又由于y这个符号已经被替换了,为了更符合人的直觉,我们可以这样写。
g
θ
⋆
x
=
U
g
θ
U
T
x
g_{\theta}\star x=Ug_{\theta}U^{T}x
gθ⋆x=UgθUTx
上述定义式中,我们将
g
θ
g_{\theta}
gθ称为卷积核
。
这条终极定义式
的直觉含义就是,用卷积核
g
θ
g_{\theta}
gθ对图信号x进行卷积。
因此可以采取更口语化的表达
g
θ
⋆
x
=
U
g
θ
U
T
x
g_{\theta}\star x=U \space g_{\theta} \space U^{T} \space x
gθ⋆x=U gθ UT x
卷积结果= 逆变换 x 卷积核 x 谱变换 x 原信号。
这种利用谱域来定义卷积的方法通称为谱方法。
利用谱方法定义的卷积神经网络称为谱卷积神经网络,spectral CNN。
在 spectral CNN中,第m层的结构可以公式化表达如下:
X
j
m
+
1
=
h
(
U
∑
i
=
1
p
F
i
,
j
m
U
T
X
i
m
)
,
j
=
1
,
2
,
.
.
.
,
q
X_{j}^{m+1}=h(U\sum_{i=1}^{p}F_{i,j}^{m}U^{T}X_{i}^{m}),j=1,2,...,q
Xjm+1=h(Ui=1∑pFi,jmUTXim),j=1,2,...,q
其中p,q分别为输入与输出的维度(可理解为channel)。类似图像CNN里,输出若为q则有q次扫描产生q个featuremap。上式会重复q次。
h为激活函数
X i m ∈ R D X_{i}^{m} \in R^D Xim∈RD,表示第m层,第i个channel上长度为D的向量。
F i , j m F_{i,j}^m Fi,jm为第j轮时对第i个长度为D的向量进行卷积的卷积核。
- 上述谱方法存在一个显而易见的缺陷,即不满足局部性。
一般我们认为更接近的结点之间的影响应该更大,而疏远的结点之间的影响应该被淡化。就像我们在2D图像上进行CNN扫描时,只进行局部感知。
而spectral CNN的传递公式中,很明显我们求 X j m + 1 X_{j}^{m+1} Xjm+1的过程中,并没有区分第m层的那些 X i m X_{i}^{m} Xim的贡献度不同。
因为不关注第m层中结点i的空间信息(结点i与谁近与谁远),所以不存在什么局部扫描窗口。
这样子定义的图上卷积,有那么点全连接的意思。
- 另一个缺陷是求拉普拉斯矩阵的开销巨大,对于现实问题,成千上万维度,其计算代价不够经济,从而不可接受。
- “在灵活性方面,基于谱的模型仅限于在无向图上工作,有向图上的拉普拉斯矩阵没有明确的定义。” (来源https://zhuanlan.zhihu.com/p/75307407)
- 因此如今谱方法已被扫入历史的旧衣柜,仅作为初学者的勇导台奉献余辉。
谱方法补充
写到这里,我们可以回顾谱方法的定义式。
定义式中,我们把傅里叶变换作为
U
T
U^T
UT的实际含义。
但显然,得到
U
g
θ
U
T
x
Ug_{\theta}U^{T}x
UgθUTx这个式子后,U^T可以表示任何一个可逆线性变换,不是吗?
下面就是积木游戏了。
积木换一下,就是一个新网络,发一篇新文章。
例如,令
U
T
U^T
UT表示小波变换,就得到了小波神经网络(GWNN)Xu Bingbing, .etc, ICLR2019。
所有用傅里叶做的工作,换成小波再做一次,又可以发一篇。
切比雪夫多项式的计算优化
我们已知
g
θ
g_{\theta}
gθ是对角阵。
先用切比雪夫网络(Chebyshev net)将
g
θ
g_{\theta}
gθ改写为参数形式的切比雪夫多项式。
g
θ
≈
∑
k
=
0
K
−
1
θ
k
T
k
(
Λ
^
)
g_{\theta} \approx \sum_{k=0}^{K-1}\theta_{k}T_{k}(\hat{\Lambda})
gθ≈k=0∑K−1θkTk(Λ^)
其中K为超参,表示跳数限制,也可以控制要学习的参数数量。
θ k 是 标 量 , 表 示 要 学 习 的 参 数 。 \theta_{k}是标量,表示要学习的参数。 θk是标量,表示要学习的参数。
Λ ^ = 2 λ m a x Λ − I n \hat{\Lambda}=\frac{2}{\lambda_{max}}\Lambda-I_{n} Λ^=λmax2Λ−In
T k ( x ) T_k(x) Tk(x)是一个由递归定义的函数。
T k ( x ) = 2 x T k − 1 ( x ) − T k − 2 ( x ) T_k(x)=2xT_{k-1}(x)-T_{k-2}(x) Tk(x)=2xTk−1(x)−Tk−2(x), T 0 ( x ) = 1 T_0(x)=1 T0(x)=1, T 1 ( x ) = x T_1(x)=x T1(x)=x
显然 T k ( Λ ^ ) ∈ R n × n T_k(\hat{\Lambda}) \in R^{n \times n} Tk(Λ^)∈Rn×n
上述约等于号成立的正确性参见David K. Hammond, Wavelets on graphs via spectral ´
graph theory. Applied and Computational Harmonic Analysis, 30(2):129–150, 2011.
写成如上形式是为了简化计算。
下面给出命题:
proposition:
U T k ( Λ ^ ) U T = T k ( U Λ ^ U T ) UT_{k}(\hat{\Lambda})U^T=T_{k}(U\hat{\Lambda}U^T) UTk(Λ^)UT=Tk(UΛ^UT)
证明如下:
由于 T k ( x ) T_k(x) Tk(x)是递归定义的,采用数学归纳法证明显然最为方便。
为了配合矩阵运算,我们做一点符合矩阵形式的修改
T 0 ( x ) = I T_0(x)=I T0(x)=I
那么显然有
U T 0 ( Λ ^ ) U T = U I U T = I = T 0 ( U Λ ^ U T ) UT_0(\hat{\Lambda})U^T=UIU^T=I=T_0(U\hat{\Lambda}U^T) UT0(Λ^)UT=UIUT=I=T0(UΛ^UT)
U T 1 ( Λ ^ ) U T = U Λ ^ U T = T 1 ( U Λ ^ U T ) UT_1(\hat{\Lambda})U^T=U\hat{\Lambda}U^T=T_1(U\hat{\Lambda}U^T) UT1(Λ^)UT=UΛ^UT=T1(UΛ^UT)
我们假设
U T k − 1 ( Λ ^ ) U T = T k − 1 ( U Λ ^ U T ) UT_{k-1}(\hat{\Lambda})U^T=T_{k-1}(U\hat{\Lambda}U^T) UTk−1(Λ^)UT=Tk−1(UΛ^UT)
U T k − 2 ( Λ ^ ) U T = T k − 2 ( U Λ ^ U T ) UT_{k-2}(\hat{\Lambda})U^T=T_{k-2}(U\hat{\Lambda}U^T) UTk−2(Λ^)UT=Tk−2(UΛ^UT)
则
U T k ( Λ ^ ) U T = U [ 2 Λ ^ T k − 1 ( Λ ^ ) − T k − 2 ( Λ ^ ) ] U T = 2 U Λ ^ T k − 1 ( Λ ^ ) U T − U T k − 2 ( Λ ^ ) U T = 2 U Λ ^ U T ⋅ U T k − 1 ( Λ ^ ) U T − T k − 2 ( U Λ ^ U T ) = 2 U Λ ^ U T ⋅ T k − 1 ( U Λ ^ U T ) − T k − 2 ( U Λ ^ U T ) = T k ( U Λ ^ U T ) UT_{k}(\hat{\Lambda})U^T= U[2\hat{\Lambda}T_{k-1}(\hat{\Lambda})-T_{k-2}(\hat{\Lambda})]U^T\\ =2U\hat{\Lambda}T_{k-1}(\hat{\Lambda})U^{T} - UT_{k-2}(\hat{\Lambda})U^T \\ =2U\hat{\Lambda}U^T \cdot U \space T_{k-1}(\hat{\Lambda})U^{T} - T_{k-2}(U\hat{\Lambda}U^T) \\ =2U\hat{\Lambda}U^T \cdot T_{k-1}(U\hat{\Lambda}U^{T}) - T_{k-2}(U\hat{\Lambda}U^T) \\ =T_{k}(U\hat{\Lambda}U^T) UTk(Λ^)UT=U[2Λ^Tk−1(Λ^)−Tk−2(Λ^)]UT=2UΛ^Tk−1(Λ^)UT−UTk−2(Λ^)UT=2UΛ^UT⋅U Tk−1(Λ^)UT−Tk−2(UΛ^UT)=2UΛ^UT⋅Tk−1(UΛ^UT)−Tk−2(UΛ^UT)=Tk(UΛ^UT)
由归纳法知命题正确。证毕。
基于上述proposition,可以对卷积运算化简。
g
θ
⋆
x
=
U
g
θ
U
T
x
≈
U
[
∑
i
=
0
K
−
1
θ
k
T
k
(
Λ
^
)
]
U
T
x
=
∑
i
=
0
K
−
1
[
θ
k
U
T
k
(
Λ
^
)
U
T
]
x
=
∑
i
=
0
K
−
1
[
θ
k
T
k
(
U
Λ
^
U
T
)
]
x
=
∑
i
=
0
K
−
1
[
θ
k
T
k
(
L
^
)
]
x
g_{\theta}\star x=Ug_{\theta}U^{T}x \approx U[\sum_{i=0}^{K-1}\theta_{k}T_{k}(\hat{\Lambda})]U^{T}x \\ = \sum_{i=0}^{K-1}[\theta_{k}UT_{k}(\hat{\Lambda})U^{T}]x \\ =\sum_{i=0}^{K-1}[\theta_{k}T_{k}(U\hat{\Lambda}U^{T})]x \\ =\sum_{i=0}^{K-1}[\theta_{k}T_{k}(\hat{L})]x
gθ⋆x=UgθUTx≈U[∑i=0K−1θkTk(Λ^)]UTx=∑i=0K−1[θkUTk(Λ^)UT]x=∑i=0K−1[θkTk(UΛ^UT)]x=∑i=0K−1[θkTk(L^)]x
其中 U Λ ^ U T = U ( 2 λ m a x Λ − I n ) U T = 2 λ m a x U Λ U T − U I n U T = 2 λ m a x L − I n U\hat{\Lambda}U^{T}=U(\frac{2}{\lambda_{max}}\Lambda-I_{n})U^T \\ =\frac{2}{\lambda_{max}}U\Lambda U^T-UI_{n}U^{T} \\ =\frac{2}{\lambda_{max}}L-I_{n} UΛ^UT=U(λmax2Λ−In)UT=λmax2UΛUT−UInUT=λmax2L−In
L是拉普拉斯矩阵。
简记为
L ^ = 2 λ m a x L − I n = U Λ ^ U T \hat{L}=\frac{2}{\lambda_{max}}L-I_{n}=U\hat{\Lambda}U^{T} L^=λmax2L−In=UΛ^UT
显然
g
θ
⋆
x
=
U
g
θ
U
T
x
≈
∑
i
=
0
K
−
1
[
θ
k
T
k
(
L
^
)
]
x
g_{\theta}\star x =Ug_{\theta}U^{T}x \approx\sum_{i=0}^{K-1}[\theta_{k}T_{k}(\hat{L})]x
gθ⋆x=UgθUTx≈i=0∑K−1[θkTk(L^)]x
此式将计算复杂度从
U
g
θ
U
T
Ug_{\theta}U^{T}
UgθUT,3个
R
n
×
n
R^{n \times n}
Rn×n矩阵相乘
降解到
内层求
T
k
(
L
^
)
T_k(\hat{L})
Tk(L^)只需要2个
R
n
×
n
R^{n \times n}
Rn×n相乘,外层计算k次加法即可。
而最为神奇的是!
化简后的式子可以直接利用L进行计算,而不必求U。
省去了
L
=
U
Λ
U
T
L=U\Lambda U^T
L=UΛUT做特征值分解求U的巨大开销。
空间方法
定义写的花里胡哨。
简单的说,空间方法更注重邻接关系。
如果给每个结点一个embd后的向量表达,对结点y而言,将y与y的所有邻接结点对应的向量,以某种权重规则
线性加总,再进行后续操作(如激活),这样的方法就是典型的空间方法。
实际操作的时候,不只会考虑y与y的所有邻接结点
{
x
i
}
\{x_i\}
{xi},还会将y的所有邻接边对应的向量
e
x
y
e_{xy}
exy也纳入计算之中。
将这种如何从结点与边中摄取信息的权重规则定义为聚合函数
。
将聚合之后的值如何用来更新结点、边的规则定义为更新函数
。
这样就得到了空间方法中的通用框架,聚合、更新。
写到这里我们再回顾一下上一部分的谱方法。
完全可以将谱方法中,基于拉普拉斯矩阵分解的线性变换,看成聚合函数,而更新函数就是简单的激活函数。
如此一来,谱方法也能被这个通用框架所解释。
虽然这个结论似乎并没有什么x用。
在*attention is all you need(2017)*之后,理所当然的会出现graph+attention这种排列组合的产物。
图注意力网络(GAT, graph attention network,Petar Velicˇkovic´, ICLR2018)
就是这么个紧追热点的时代楷模。
GAT对上述通用框架的改进在于,利用模型本身去学习聚合函数。具体点说就是用attention机制去学权重规则。在GAT中原本的边关系不再重要,唯一重要的是结点本身的embd向量。因为边关系是利用结点向量去算的。(attention真是好用啊)
这就要求我们为每个结点学习一个更好的向量表达。
GAT的缺点在于,对于大规模网络,每个结点的邻接结点成千上万,进行这么多的结点对attention计算,复杂度同样不可接受。
于是理所当然的,不能对全部进行计算,就对部分进行计算,怎么选出“部分”呢,无论怎么选都会被诟病,自然是随机选看起来最公平。
GraphSAGE, Hamilton,NIPS2017就是这样,对邻接结点随机采样,再聚合。
像这种名字里有“采样”的东西,一般都能再根据采样规则做点小创新。不需要打开这篇论文就能猜到起码有个完全均匀采样,有个按边权重分配概率的不均匀采样。
又由于采样对象是图,完全可以加个参数控制采样层数。一阶邻接结点采样,二阶邻接采样。由于成本的关系实践中一般到二阶就差不多了吧。