图表征学习: 学习图中的元素,如节点、边、子图或整个图的向量表征,并应用基于向量的机器学习算法进行图数据的建模和分析
动态环境: 图数据包括结构、特征、性质、任务等,随时间发生变化
开放环境: 泛指数据分布、学习目标、特征或标签等因素在机器学习过程或应用场景中发生变化
符号图: 图中存在负的边权重
1 图嵌入
1.1 游走
游走: 一系列相互连接节点的集合 W a l k = ( v 1 , v 2 , . . . , v s ) , v i ∈ V , 1 ≤ i ≤ s 且 ( v i , v i + 1 ) ∈ ε , 1 ≤ i ≤ s Walk=(v_1,v_2,...,v_s),v_i \in \mathcal{V},1 \leq i \leq s且(v_i,v_{i+1})\in \mathcal{\varepsilon},1 \leq i \leq s Walk=(v1,v2,...,vs),vi∈V,1≤i≤s且(vi,vi+1)∈ε,1≤i≤s,s是游走中节点的数量
- 若游走中的边不存在重复,则该游走称为 迹 Trial
- 若游走中的边和节点均不存在重复,则该游走称为一条 路径 Path
图的随机游走: 将图上的游走与概率结合,即定义图上的一个随机过程
- 最基本的随机游走假设马尔可夫性:游走的下一个节点仅取决于上一个节点
马尔可夫随机游走:
P r ( w a l k ) = P r ( v 1 ) ∏ i = 1 s − 1 P r ( v i + 1 ∣ v 1 , . . . , v i ) = P r ( v 1 ) ∏ i = 1 s − 1 P r ( v i + 1 ∣ v i ) Pr (walk)=Pr(v_1)\prod_{i=1}^{s-1}Pr(v_{i+1}|v_1,...,v_i)=Pr(v_1)\prod_{i=1}^{s-1}Pr(v_{i+1}|v_i) Pr(walk)=Pr(v1)i=1∏s−1Pr(vi+1∣v1,...,vi)=Pr(v1)i=1∏s−1Pr(vi+1∣vi)
- 第一个等号由条件概率公式得出,第二个用到了马尔可夫性
- 条件概率 P r ( v i + 1 ∣ v i ) Pr(v_{i+1}|v_i) Pr(vi+1∣vi)表示游走如何选择下一个节点,最简单的假设是均匀选择邻居节点即 P r ( v i + 1 ∣ v i ) = { 1 D i , i , 如果 v i + 1 ∈ N ( v i ) 0 ,其他 Pr(v_{i+1}|v_i)=\begin{cases}{1 \over D_{i,i}},如果v_{i+1}\in \mathcal{N}(v_i)\\0,其他\\\end{cases} Pr(vi+1∣vi)={Di,i1,如果vi+1∈N(vi)0,其他
- 随机游走可以被用来计算图中的许多性质,包括节点中心性(Centrality)、节点间相似性(Similarity)等
- 随机游走的每一步只考虑局域内的邻居节点,因此只能观察到图的局部信息
1.2 基于随机游走的图嵌入
1.2.1 DeepWalk
核心思想: 类比图上的随机游走和自然语言处理 ,即每个节点相当于一个单词,并将图中每个采样得到的游走视为自然语言中的一个句子 —— 借鉴自然语言处理的单词嵌入(Word Embedding)来学习图的节点嵌入,采用SkipGram模型【预测一个词的上下文词】
启发: 短距离随机游走中节点的概率分布与自然语言中的单词概率十分相似
具体思路: 在图中随机采样大量固定长度的随机游走,对于每个采样得到的游走,优化目标是使节点 v i v_i vi的上下文节点在当前游走序列中出现的概率最大化
- 记节点 v i v_i vi的嵌入向量为 h i ∈ R d h_i \in \mathbb{R}^d hi∈Rd,该节点的目标函数为最大化如下概率:
P r ( { v i − w , . . . , v i + w } \ v i ∣ h i ) = ∏ j = i − w , j ≠ i i + w P r ( v j ∣ h i ) Pr(\{v_{i-w},...,v_{i+w}\} \backslash v_i|h_i)=\prod_{j=i-w,j\neq i}^{i+w}Pr(v_j|h_i) Pr({vi−w,...,vi+w}\vi∣hi)=j=i−w,j=i∏i+wPr(vj∣hi)
其中,w是一个超参数,决定上下文窗口的大小,这个窗口指定了节点 v i v_i vi前后出现的节点,所以需要最大化窗口内节点出现的概率 - 条件概率通常使用一个softmax函数实现: P r ( v j ∣ h i ) = e x p ( h i ⊤ h j ′ ) ∑ v k ∈ V e x p ( h i ⊤ h k ′ ) Pr(v_j|h_i)={exp(h_i^{\top}h_j^{'})\over{\sum_{v_k\in\mathcal{V}}exp(h_i^{\top}h_k^{'})}} Pr(vj∣hi)=∑vk∈Vexp(hi⊤hk′)exp(hi⊤hj′)
上式中分母的归一化项需要对图中所有的节点求和,所以直接计算的复杂度会非常高,考虑两种近似算法:层次Softmax(Hierarchical Softmax)和负采样(Negative Sampling)
层次采样近似算法:
- 首先,将图中所有的节点分配到一棵二叉树上,每个节点对应树上的一个叶子节点——图中的每个节点对应二叉树上一条从根节点到叶子节点的路径
- 然后,将softmax的计算过程转化为计算二叉树上一条对应路径的概率
记到目标节点 v j v_j vj的一条树上的路径为 ( b 0 , b 1 , . . . , b ⌈ l o g ∣ V ∣ ⌉ ) (b_0,b_1,...,b_{\lceil log|\mathcal{V}|\rceil}) (b0,b1,...,b⌈log∣V∣⌉)【复杂度降低为 O ( l o g ∣ V ∣ ) O(log|\mathcal{V}|) O(log∣V∣)】,其中 b 0 b_0 b0是根节点, b ⌈ l o g ∣ V ∣ ⌉ b_{\lceil log|\mathcal{V}|\rceil} b⌈log∣V∣⌉代表 v j v_j vj,近似计算公式如下:
P r ( v j ∣ h i ) = ∏ l = 1 ⌈ l o g ∣ V ∣ ⌉ P r ( b l ∣ h i ) Pr(v_j|h_i)=\prod_{l=1}^{\lceil log|\mathcal{V}|\rceil}Pr(b_l|h_i) Pr(vj∣hi)=l=1∏⌈log∣V∣⌉Pr(bl∣hi)
路径上每个节点选择孩子节点的概率建模如下:
P r ( b l ∣ h i ) = { 1 1 + e x p ( − h i ⊤ b l − 1 ) , 如果 b l 是 b l − 1 的右孩子 1 1 + e x p ( h i ⊤ b l − 1 ) , 如果 b l 是 b l − 1 的左孩子 Pr(b_l|h_i)=\begin{cases}{{1\over {1+exp(-h_i^{\top}b_{l-1})}},如果b_l是b_{l-1}的右孩子}\\{1\over {1+exp(h_i^{\top}b_{l-1})}},如果b_l是b_{l-1}的左孩子\end{cases} Pr(bl∣hi)={1+exp(−hi⊤bl−1)1,如果bl是bl−1的右孩子1+exp(hi⊤bl−1)1,如果bl是bl−1的左孩子
负采样:
核心思想: 为了有效地学习表征,其实无须精确计算 P r ( v j ∣ h i ) Pr(v_j|h_i) Pr(vj∣hi),而只需要尽可能区分目标节点和其他节点,因此其他节点可视为负样本
主要方法: 记负样本遵循的概率分布为 P n P_n Pn,对于每个正样本即上下文出现地节点对 ( v i , v j ) (v_i,v_j) (vi,vj),负采样方法从 P n P_n Pn中采样K个负样本【复杂度降低为 O ( K ) O(K) O(K)】,取对数后的概率近似计算为:
l o g P r ( v j ∣ h i ) = l o g σ ( h j ′ ⊤ h i ) + ∑ k = 1 K E v k ∼ P n [ l o g σ ( − h k ′ ⊤ h i ) ] logPr(v_j|h_i)=log\sigma(h_j^{'\top}h_i)+\sum_{k=1}^{K}\mathbb{E}_{v_k\sim P_n}[log\sigma(-h_k^{'\top}h_i)] logPr(vj∣hi)=logσ(hj′⊤hi)+k=1∑KEvk∼Pn[logσ(−hk′⊤hi)]
其中, σ ( . ) \sigma(.) σ(.)为sigmoid函数即负数值小,正数值大,因此这个式子会是上下文出现的节点对表征尽量相像,而使随机负采样的节点对表征尽量不像
2 图神经网络
2.1 谱域图神经网络
2.1.1 谱图理论
拉普拉斯矩阵 : 邻接矩阵元素取负号,对角线为节点的度数
对于无向图 G = { V , E } \mathcal{G}=\{\mathcal{V},\mathcal{E}\} G={V,E},拉普拉斯矩阵定义为:
L = D − A L=D-A L=D−A
其中, D i , i = ∑ j A i , j D_{i,i}=\sum_jA_{i,j} Di,i=∑jAi,j
归一化拉普拉斯矩阵(Symmetric Normalized Laplacian Matrix定义为:
L s y m = D − 1 2 L D − 1 2 = I − D − 1 2 A D − 1 2 L_{sym}=D^{-{1\over2}}LD^{-{1\over2}}=I-D^{-{1\over2}}AD^{-{1\over2}} Lsym=D−21LD−21=I−D−21AD−21
性质:
- 邻接矩阵A与度数矩阵D均为对称矩阵,因此 L L L与 L s y m L_{sym} Lsym也是对称矩阵
- L L L与 L s y m L_{sym} Lsym都为半正定(Positive Semi-definite)矩阵
- 基于对称性和半正定性, L L L与 L s y m L_{sym} Lsym的特征值均为正实数,从而可以进行特征分解 L = Q Λ Q ⊤ L=Q\Lambda Q^{\top} L=QΛQ⊤
图信号: 任意一个长度等于节点数N的向量,记为 u ∈ R N u\in \mathbb{R}^N u∈RN【列向量】, u 的第 i 个元素 u i 表示该信号在第 i 个节点 v i 上的取值大小 u的第i个元素u_i表示该信号在第i个节点v_i上的取值大小 u的第i个元素ui表示该信号在第i个节点vi上的取值大小【这里特指节点特征】
下面的内容主要讲述
在两个空间内如何基于图信号来反映节点间的关系【各节点取值差别】
图信号和图拉普拉斯矩阵的联系: 令 h = L u h=Lu h=Lu
h i = ∑ j = 1 N L i , j u j = D i , i u i − ∑ j = 1 N A i , j u j = ∑ ( i , j ) ∈ E ( u i − u j ) \begin{aligned} h_i&=\sum_{j=1}^NL_{i,j}u_j \\ &=D_{i,i}u_i - \sum_{j=1}^NA_{i,j}u_j\\ &=\sum_{(i,j)\in\mathcal{E}}(u_i-u_j) \end{aligned} hi=j=1∑NLi,juj=Di,iui−j=1∑NAi,juj=(i,j)∈E∑(ui−uj)
发现: 每个元素 h i h_i hi表示原始信号 u i u_i ui与所有邻居信号差的总和
u ⊤ L u = u ⊤ ( D − A ) u = ∑ i = 1 N D i , i u i 2 − ∑ ( i , j ) ∈ E u i u j = 1 2 ∑ ( i , j ) ∈ E ( u i − u j ) 2 \begin{aligned} u^{\top}Lu&=u^{\top}(D-A)u \\ &=\sum_{i=1}^{N}D_{i,i}u_i ^2- \sum_{(i,j)\in\mathcal{E}}u_iu_j\\ &={1\over2}\sum_{(i,j)\in\mathcal{E}}(u_i-u_j)^2 \end{aligned} u⊤Lu=u⊤(D−A)u=i=1∑NDi,iui2−(i,j)∈E∑uiuj=21(i,j)∈E∑(ui−uj)2
发现: 邻居节点之间信号差的平法和——图信号的平滑度(Smoothness)【反映出节点信号与其邻居信号的差异】 —— 拉普拉斯矩阵可以看作是图上的拉普拉斯算子 (Laplace operator)
- 数值越大,信号邻居节点之间的取值差别越大——高频图信号
- 数值越小,信号邻居节点之间的取值相近—— 低频图信号
图傅里叶变换与逆变换
- 图傅里叶变换【图信号从空域到谱域】: u ^ = Q ⊤ u \hat{u}=Q^{\top}u u^=Q⊤u,其中 Q Q Q为拉普拉斯矩阵分解中的特征向量矩阵
- 图傅里叶逆变换【图信号从谱域到空域】: u = Q u ^ u=Q\hat{u} u=Qu^
- 由于特征向量矩阵 Q Q Q是正交矩阵,所以将一个图信号先进行图傅里叶变换,再进行图傅里叶逆变换,就得到了原始图信号
- 实质: 图傅里叶变换实际上是将原来的图信号投影到由拉普拉斯矩阵特征向量组成的正交空间中
图信号 u u u在拉普拉斯矩阵第 j j j个特征向量 q j q_j qj上的投影:投影后的元素 u ^ j 在新空间第 j 维的坐标值 \hat{u}_j在新空间第j维的坐标值 u^j在新空间第j维的坐标值
u ^ j = q j ⊤ u \hat{u}_j=q_j^{\top}u u^j=qj⊤u
特征向量对应的特征值 λ j \lambda_j λj代表在正交空间中图信号的平滑度:
q j ⊤ L q j = q j ⊤ ( L q j ) = q j ⊤ ( λ j q j ) = λ j q_j^{\top}Lq_j=q_j^{\top}(Lq_j)=q_j^{\top}(\lambda_jq_j)=\lambda_j qj⊤Lqj=qj⊤(Lqj)=qj⊤(λjqj)=λj
- 图傅里叶变换得到的新空间由不同平滑度的特征向量作为正交基底组成
- 较小特征值对应的特征向量更加平滑,反之更加不平滑
一个例子:如果图信号在较大特征值上对应的坐标值都为0,而较小的特征值对应的坐标值不为零,意味着图信号基本投影到了较小特征值对应的特征向量即新空间的维度上,那么就是说这个图信号是平滑的,各节点取值差别不大
2.1.2 谱域图神经网络
前景知识:
-
谱域图卷积(Spectral Graph Convolution):
- 通过图傅里叶变换将原始信号从空域转换到谱域
- 在谱域上计算向量点乘
- 将处理后的图信号经过图傅里叶逆变换转换回空域上
-
谱域图卷积的数学形式: 记图卷积为 ⋆ G \star_G ⋆G, u u u表示输入的图信号, g g g表示卷积核, ⊙ \odot ⊙表示两个向量逐元素相乘
u ′ = g ⋆ G u = Q ( ( Q ⊤ g ) ⊙ ( Q ⊤ u ) ) u^{'}=g \star_G u = Q((Q^{\top}g)\odot(Q^{\top}u)) u′=g⋆Gu=Q((Q⊤g)⊙(Q⊤u)) -
将谱域图卷积用于可学习的神经网络中: 可以将 Q ⊤ g Q^{\top}g Q⊤g转化为一个可学习的卷积核 【
直接将其作为学习参数,而不再依赖于傅立叶变换
】,是一个由可学习参数组成的对角矩阵 Θ = d i a g ( θ 1 , . . . , θ N ) \Theta=diag(\theta_1,...,\theta_N) Θ=diag(θ1,...,θN)—— 可以看作是一种滤波器,通过与图信号的谱表示进行逐元素乘积来改变不同成分的权重,那么上式转化为如下【从右向左看】:
u ′ = Q ( Θ Q ⊤ u ) u^{'}=Q(\Theta Q^{\top}u) u′=Q(ΘQ⊤u)
谱域图神经网络(Spectral Graph Convolution Neural Network, SGCNN):
u j ( l + 1 ) = σ ( ∑ i = 1 f l Q Θ i , j ( l ) Q ⊤ u i ( l ) ) , j = 1 , 2 , . . , f l + 1 u_j^{(l+1)}=\sigma(\sum_{i=1}^{f_l}Q\Theta^{(l)}_{i,j}Q^{\top}u_i^{(l)}),j=1,2,..,f_{l+1} uj(l+1)=σ(i=1∑flQΘi,j(l)Q⊤ui(l)),j=1,2,..,fl+1
f l f_l fl:第 l l l层图信号维度, u i ( l ) ∈ N N u_i^{(l)}\in \mathbb{N}^N ui(l)∈NN:第 l l l层第 i i i维图信号
将上式扩展成了多输入输出,最终得到的图信号 U ( L ) = [ u 1 ( L ) , u 2 ( L ) , . . . , u f L ( L ) ] U^{(L)}=[u_1^{(L)},u_2^{(L)},...,u_{f_L}^{(L)}] U(L)=[u1(L),u2(L),...,ufL(L)]
谱域图神经网络的缺点:
- Θ i , j ( l ) \Theta^{(l)}_{i,j} Θi,j(l):作为独立参数被学习【为每个节点指定一个参数】,导致模型参数数量与图的节点数呈线性关系即参数为 O(N)
- 滤波操作会影响整个图信号,即谱域图神经网络不具有空间局部性——每个节点均会受到其他所有节点的影响,而非仅受到若干局部相邻节点的影响
2.1.3 切比雪夫图卷积神经网络
核心: 使用切比雪夫多项式简化谱域滤波器
理解:
- 傅里叶变换:找到一组基向量,将原域的值 通过这些基向量 投影到 另一个 域 ,时域到频域,空域到谱域
- 在图傅里叶变换中,特征向量是基,在传统傅里叶变换中,正弦波(欧拉公式指数化后)是基,那么特征值对应角向量,因此对正弦波的拉伸情况(特征向量的操作)等价于形成当前正弦波的角向量的拉伸(特征值的操作)基向量
- 图傅里叶变换:计算信号 在特征向量上的投影,从而得到信号在频率为特征值上的分量,即变换后是关于特征值的函数
- 在数学上,可以使用多项式来逼近许多不同类型的函数
- 因此,可以利用多项式 逼近 傅里叶变换后的卷积核
简化传统的谱域图卷积神经网络中的卷积核,将其表示为关于特征值的函数,并对其进行多项式逼近 ,多项式如下:
g θ ( Λ ) = ∑ k = 0 K θ k Λ k g_{\theta}(Λ) =\sum_{k=0}^{K}\theta_kΛ^{k} gθ(Λ)=k=0∑KθkΛk
其中, θ k \theta_k θk是多项式系数,是需要学习得到的,将其放入图卷积公式中,得到
Q ⊤ g θ ( Λ ) Q = Q ⊤ ∑ k = 0 K θ k Λ k Q = ∑ k = 0 K θ k Q ⊤ Λ k Q = ∑ k = 0 K θ k L k \begin{aligned} Q^{\top}g_{\theta}(Λ) Q&=Q^{\top}\sum_{k=0}^{K}\theta_kΛ^{k}Q\\ &=\sum_{k=0}^{K}\theta_kQ^{\top}Λ^{k}Q\\ &=\sum_{k=0}^{K}\theta_kL^{k} \end{aligned} Q⊤gθ(Λ)Q=Q⊤k=0∑KθkΛkQ=k=0∑KθkQ⊤ΛkQ=k=0∑KθkLk
发现: 不需要Q了,不需要进行特征值分解了
进一步改进,使用切比雪夫多项式逼近:
使用切比雪夫多项式进行逼近要求输入数据必须在区间[-1, 1]内,需要对特征值矩阵进行归一化 ,方式有很多,比如:
Λ ~ = 2 Λ λ N − I \widetilde{Λ}=2{Λ \over \lambda_N}-I Λ =2λNΛ−I
$ \lambda_N$为拉普拉斯矩阵最大的特征值,归一化后特征值取值范围为[-1,1]
切比雪夫多项式定义:
T 0 ( x ) = 1 T 1 ( x ) = x T k ( x ) = x T k − 1 ( x ) − T k − 1 ( x ) \begin{aligned} \mathcal{T}_0(x)&=1\\ \mathcal{T}_1(x)&=x\\ \mathcal{T}_k(x)&=x\mathcal{T}_{k-1}(x)-\mathcal{T}_{k-1}(x) \end{aligned} T0(x)T1(x)Tk(x)=1=x=xTk−1(x)−Tk−1(x)
切比雪夫多项式逼近卷积核: g θ ( Λ ) ≈ ∑ k = 0 K θ k T k ( Λ ~ ) g_{\theta}(Λ) ≈ \sum_{k=0}^{K}\theta_k\mathcal{T}_k(\widetilde{Λ}) gθ(Λ)≈∑k=0KθkTk(Λ )
放入到图卷积公式中:
Q ⊤ g θ ( Λ ) Q u = Q ⊤ ∑ k = 0 K θ k T k ( Λ ~ ) Q u = ∑ k = 0 K θ k Q ⊤ T k ( Λ ~ ) Q u = ∑ k = 0 K θ k T k ( L ~ ) u = ∑ k = 0 K θ k u ‾ k \begin{aligned} Q^{\top}g_{\theta}(Λ) Qu&=Q^{\top}\sum_{k=0}^{K}\theta_k\mathcal{T}_k(\widetilde{Λ})Qu\\ &=\sum_{k=0}^{K}\theta_kQ^{\top}\mathcal{T}_k(\widetilde{Λ})Qu\\ &=\sum_{k=0}^{K}\theta_k\mathcal{T}_k(\widetilde{L})u\\ &=\sum_{k=0}^{K}\theta_k\overline{u}_k \end{aligned} Q⊤gθ(Λ)Qu=Q⊤k=0∑KθkTk(Λ )Qu=k=0∑KθkQ⊤Tk(Λ )Qu=k=0∑KθkTk(L )u=k=0∑Kθkuk
其中, L ~ \widetilde{L} L 为归一化特征值对应的归一化拉普拉斯矩阵; u ‾ k = T k ( L ~ ) u \overline{u}_k=\mathcal{T}_k(\widetilde{L})u uk=Tk(L )u可以利用切比雪夫多项式递归计算:
u ‾ 0 = u u ‾ 1 = L ~ u u ‾ k = T k ( L ~ ) u = L ~ u ‾ k − 1 − u ‾ k − 2 \begin{aligned} \overline{u}_0&=u\\ \overline{u}_1&=\widetilde{L}u\\ \overline{u}_k&=\mathcal{T}_k(\widetilde{L})u=\widetilde{L}\overline{u}_{k-1}-\overline{u}_{k-2} \end{aligned} u0u1uk=u=L u=Tk(L )u=L uk−1−uk−2
发现:
- 不需要对拉普拉斯矩阵计算特征分解
- 递归计算方法可以避免直接进行矩阵乘法的高成本计算
- 卷积过程具有空间局部性: u ‾ 0 \overline{u}_0 u0仅受每个节点自身的影响, u ‾ 1 \overline{u}_1 u1仅受每个节点和其邻居的影响, u ‾ k \overline{u}_k uk仅受每个节点k阶邻居的影响
多项式逼近卷积核的局部聚合的能力
2.1.4 图卷积神经网络
核心: 对切比雪夫图卷积神经网络进一步改进,将K阶多项式简化为1阶,通过堆叠多层以达到与切比雪夫图卷积神经网络相似的模型容量
具体:
- 首先,将切比雪夫多项式的最大阶数简化为1
- 其次,采用对称归一化的拉普拉斯矩阵代替非归一化的拉普拉斯矩阵 L s y m = D − 1 2 L D − 1 2 = I − D − 1 2 A D − 1 2 L_{sym}=D^{-{1\over2}}LD^{-{1\over2}}=I-D^{-{1\over2}}AD^{-{1\over2}} Lsym=D−21LD−21=I−D−21AD−21,其最大特征值严格小于或等于2,从而 归一化的 Λ ~ s y m = 2 Λ s y m 2 − I = Λ s y m − I \widetilde{Λ}_{sym}=2{Λ _{sym}\over 2}-I=Λ _{sym}-I Λ sym=22Λsym−I=Λsym−I
g θ ( Λ s y m ) ≈ θ 0 T 0 ( Λ ~ s y m ) + θ 1 T 1 ( Λ ~ s y m ) ≈ θ 0 + θ 1 Λ ~ s y m \begin{aligned} g_{\theta}(Λ_{sym})&≈ \theta_0\mathcal{T}_0(\widetilde{Λ}_{sym})+\theta_1\mathcal{T}_1(\widetilde{Λ}_{sym})\\ &≈\theta_0+\theta_1\widetilde{Λ}_{sym} \end{aligned} gθ(Λsym)≈θ0T0(Λ sym)+θ1T1(Λ sym)≈θ0+θ1Λ sym
u ′ = Q ⊤ g θ ( Λ s y m ) Q u = Q ⊤ ( θ 0 + θ 1 Λ ~ s y m ) Q u = θ 0 u + θ 1 Q ⊤ ( Λ s y m − I ) Q u = θ 0 u + θ 1 ( L s y m − I ) u = θ 0 u + θ 1 ( − D − 1 2 A D − 1 2 ) u \begin{aligned} u^{'}&=Q^{\top}g_{\theta}(Λ_{sym}) Qu\\ &=Q^{\top}(\theta_0+\theta_1\widetilde{Λ}_{sym})Qu\\ &=\theta_0u+\theta_1Q^{\top}(Λ _{sym}-I)Qu\\ &=\theta_0u+\theta_1(L_{sym}-I)u\\ &=\theta_0u+\theta_1(-D^{-{1\over2}}AD^{-{1\over2}})u \end{aligned} u′=Q⊤gθ(Λsym)Qu=Q⊤(θ0+θ1Λ sym)Qu=θ0u+θ1Q⊤(Λsym−I)Qu=θ0u+θ1(Lsym−I)u=θ0u+θ1(−D−21AD−21)u
取 θ 0 = − θ 1 = θ \theta_0=-\theta_1=\theta θ0=−θ1=θ,另外 邻接矩阵矩阵和单位阵相加的操作实际上在图结构上就是加了一个自环,在每次卷积的过程中能够聚合到自身的信息,从而有
u ′ = θ ( I + D − 1 2 A D − 1 2 ) u = θ ( D ~ − 1 2 A ~ D ~ − 1 2 ) u = θ A ^ u \begin{aligned} u^{'}&=\theta(I+D^{-{1\over2}}AD^{-{1\over2}})u\\ &=\theta(\widetilde{D}^{-{1\over2}}\widetilde{A}\widetilde{D}^{-{1\over2}})u\\ &=\theta\hat{A}u \end{aligned} u′=θ(I+D−21AD−21)u=θ(D −21A D −21)u=θA^u
优点:
- 不需要显式地计算拉普拉斯矩阵的特征分解,也无需切比雪夫图卷积神经网络的递归计算,计算效率高——计算复杂度与图中的边呈线性关系
- 每一层图卷积中,每个节点的表征仅与其邻居节点有关,很强的空间局部性
进一步考虑: 每个节点含有 f 0 f_0 f0个输入图信号,那么记图信号(或节点特征矩阵) H ( 0 ) ∈ R N × f 0 H^{(0)}\in \mathbb{R}^{N \times f_0} H(0)∈RN×f0;记 f l f_l fl为图卷积神经网路第 l l l层中信号的维度即每个节点的表征维度;从而图卷积神经网络多通道含非线性肌活函数的图卷积矩阵形式表达如下:
H L + 1 = σ ( A ^ H l Θ l ) , l = 1 , 2 , . . . , L H^{L+1}=\sigma(\hat{A}H^{l}\Theta^{l}),l=1,2,...,L HL+1=σ(A^HlΘl),l=1,2,...,L
2.2 空域图神经网络
2.2.1 空域视角下的图卷积神经网络
H L + 1 = σ ( A ^ H l Θ l ) = σ ( D ~ − 1 2 A ~ D ~ − 1 2 H l Θ l ) , l = 1 , 2 , . . . , L H^{L+1}=\sigma(\hat{A}H^{l}\Theta^{l})=\sigma(\widetilde{D}^{-{1\over2}}\widetilde{A}\widetilde{D}^{-{1\over2}}H^{l}\Theta^{l}),l=1,2,...,L HL+1=σ(A^HlΘl)=σ(D −21A D −21HlΘl),l=1,2,...,L
考虑每一个节点的表征即只看 H l + 1 H^{l+1} Hl+1矩阵的第 i i i行:
H i , : ( l + 1 ) = σ ( ∑ p ∈ N ( i ) ⋃ { i } 1 D ~ i , i D ~ p , p H p , : ( l ) Θ ( l ) ) , i = 1 , 2 , . . . , N H_{i,:}^{(l+1)}=\sigma(\sum_{p\in \mathcal{N}{(i)}\bigcup \{i\}}{1 \over {\sqrt{\widetilde{D}_{i,i}\widetilde{D}_{p,p}}}}H^{(l)}_{p,:}\Theta^{(l)}),i=1,2,...,N Hi,:(l+1)=σ(p∈N(i)⋃{i}∑D i,iD p,p1Hp,:(l)Θ(l)),i=1,2,...,N
另一个角度理解:
- 将上一层的表征矩阵左乘归一化的邻接矩阵 = 加权求和每个节点自身信息和所有一阶邻居节点的表征信息
- 将上一层的表征矩阵右乘参数矩阵以及最后非线性运算 = 经过一个全连接层即得到聚合邻居节点信息后的节点表征,其中所有节点共用一套参数
- 一层卷积过程中,每个节点表征的更新只用到了其一阶邻居的信息,而和非其他直接相连的节点无关
2.2.2 图采样聚合神经网络(GraphSAGE)
主要步骤:
- 邻居采样: N s ( v ) ← S A M P L E ( N ( v ) , s ) \mathcal{N}_s(v) \leftarrow SAMPLE(\mathcal{N}(v),s) Ns(v)←SAMPLE(N(v),s),从节点的邻居集合中无放回采样s个样本
- 聚合邻居信息: h N s ( v ) ′ ← A G G R E G A T E ( { h u , ∀ u ∈ N s ( v ) } ) h^{'}_{\mathcal{N}_s(v)} \leftarrow AGGREGATE(\{h_u,\forall u \in \mathcal{N}_s(v) \}) hNs(v)′←AGGREGATE({hu,∀u∈Ns(v)})
- 更新节点表征: h v ′ ← σ ( [ h v , h N s ( v ) ′ ] Θ ) , [ . , . ] 表示并置 ( c o n c a t e n a t i o n ) 操作 h^{'}_v \leftarrow \sigma([h_v,h^{'}_{\mathcal{N}_s(v)}]\Theta),[.,.]表示并置(concatenation)操作 hv′←σ([hv,hNs(v)′]Θ),[.,.]表示并置(concatenation)操作
- 表征归一化: h v ′ ← h v ′ ∣ ∣ h v ′ ∣ ∣ h^{'}_v \leftarrow {h^{'}_v \over{||h^{'}_v ||}} hv′←∣∣hv′∣∣hv′
每个节点重复上述步骤 L L L次,图神经网络有 L L L层
邻居采样机制:
- 对每个结点采样了固定大小的邻居:在更新每次结点表征时,不需要其他所有的邻居信息,从而提高了计算效率
- 使用批量算法:针对图神经网络的 L L L层,分别迭代执行L次的采样和L次的聚合操作,通过采样操作得到在每一次节点表征更新时需要的节点集合;记一次批量中第 l l l次层需要的节点集合为 B l , l = 1 , 2 , . . . , L \mathcal{B}_l,l=1,2,...,L Bl,l=1,2,...,L, B L \mathcal{B}_L BL为该批量选定的待更新的节点集合【到了最后一层】;那么第 l l l次采样中有:
B l − 1 ← B l ∪ { N s ( u ) , ∀ u ∈ B l } \mathcal{B}_{l-1}\leftarrow \mathcal{B}_{l} \cup \{\mathcal{N}_s(u),\forall u \in \mathcal{B}_{l} \} Bl−1←Bl∪{Ns(u),∀u∈Bl}
B 0 \mathcal{B}_{0} B0包含的节点最多,为所有待更新节点和其 L L L阶邻居
聚合机制:
- 邻居节点是一个集合而不存在顺序关系,因此聚合函数需要满足置换不变性(Permutation Invariance)——改变集合中节点的顺序,计算结果不变
- 三类聚合函数:
- 平均: h N s ( v ) ′ ← σ ( M E A N ( { h v } ∪ { h u , ∀ u ∈ N s ( v ) } ) h^{'}_{\mathcal{N}_s(v)} \leftarrow \sigma(MEAN(\{h_v\}\cup\{h_u,\forall u \in \mathcal{N}_s(v) \}) hNs(v)′←σ(MEAN({hv}∪{hu,∀u∈Ns(v)})
- 图卷积神经网络求均值利用节点度数做归一化,而当前是利用邻居数量做归一化
- 图卷积直接将自身信息添加到求和进行节点更新,而当前通过并置操作
- 图卷积最后一步没有表征归一化操作
- 长短期记忆网络: h N s ( v ) ′ = L S T M ( { h u , ∀ u ∈ N s ( v ) } ) h^{'}_{\mathcal{N}_s(v)}= LSTM(\{h_u,\forall u \in \mathcal{N}_s(v) \}) hNs(v)′=LSTM({hu,∀u∈Ns(v)})
- 池化最大(or 平均值 or 求和等): h N s ( v ) ′ ← m a x ( { σ ( W p o o l h u + b ) , ∀ u ∈ N s ( v ) } ) h^{'}_{\mathcal{N}_s(v)} \leftarrow max(\{\sigma(W_{pool}h_u+b),\forall u \in \mathcal{N}_s(v) \}) hNs(v)′←max({σ(Wpoolhu+b),∀u∈Ns(v)})
- 平均: h N s ( v ) ′ ← σ ( M E A N ( { h v } ∪ { h u , ∀ u ∈ N s ( v ) } ) h^{'}_{\mathcal{N}_s(v)} \leftarrow \sigma(MEAN(\{h_v\}\cup\{h_u,\forall u \in \mathcal{N}_s(v) \}) hNs(v)′←σ(MEAN({hv}∪{hu,∀u∈Ns(v)})
Note:
- GraphSAGE 强调 **归纳学习(Inductive Learning)**能力:训练时的图结构和测试时的图结构不同,且测试时的图结构在训练时不可见【**直推式学习(Transductive Learning)**指训练时可观察到测试数据的结构】
- 图卷积神经网络也可用于归纳学习场景: 也属于空域
2.2.3 图注意力网络(GAT)
- GraphSAGE中,每个节点的邻居节点对于更新其表征的权重相同;图卷积中邻居节点的权重则由节点度数提前定义
- 但是, 不同的邻居节点对中心节点的影响可能不同,且依赖于具体任务和数据
核心: 利用自注意力机制计算权重
主要步骤:
- 对任意存在边的两个节点 v 和 u v和u v和u,计算未归一化的注意力得分:
e v , u = L e a k y R e L U ( a ⊤ [ W h v , W h u ] ) e_{v,u}=LeakyReLU(a^{\top}[Wh_v,Wh_u]) ev,u=LeakyReLU(a⊤[Whv,Whu])
LeakReLU 为带泄露的线性蒸馏单元;思路是先将每条边对应的两个节点的上一层表征通过线性变换和并置操作转化为一个向量,然后一个单层的全连接层,输出未归一化的得分 - 利用 softmax()函数归一化每个节点的邻居信息,得到归一化的注意力得分
α v , u = e v , u ∑ k ∈ N v e v , k \alpha_{v,u}={e_{v,u}\over {\sum_{k\in \mathcal{N}_v}e_{v,k}}} αv,u=∑k∈Nvev,kev,u - 根据邻居权重更新节点表征:
h v ′ = σ ( ∑ u ∈ v ∪ { v } α v , u h u W ) h^{'}_v=\sigma(\sum_{u\in \mathcal{v}\cup \{v\}}\alpha_{v,u}h_uW) hv′=σ(u∈v∪{v}∑αv,uhuW)
图注意力网络也支持多头注意力机制
3 消息传递图神经网络
3.1 消息传递图神经网络 MPNN
一种通用框架
核心: 在图结构上进行消息传递,以便将消息从一个节点传递其邻居节点
公式: 考虑无向图 G \mathcal{G} G,记节点 v v v 在第 l l l 层的表征为 h v l h_v^{l} hvl,节点 v v v和 u u u之间的边特征为 e v , u e_{v,u} ev,u,那么 第 l l l层的消息传递公式为:
m v ( l + 1 ) = M l ( { h v l , h v l , e v , u } ) , u ∈ N ( v ) h v l + 1 = U l ( h v l , m v ( l + 1 ) ) \begin{aligned} m_v^{(l+1)} &= \mathcal{M}_l(\{h_v^{l},h_v^{l},e_{v,u}\}),u\in \mathcal{N}(v)\\ h_v^{l+1}&=\mathcal{U}_l(h_v^{l},m_v^{(l+1)}) \end{aligned} mv(l+1)hvl+1=Ml({hvl,hvl,ev,u}),u∈N(v)=Ul(hvl,mv(l+1))
Note : 改变消息函数和节点更新函数可以得到不同的图神经网络模型
4 图池化
图池化(Pooling)或读出(Readout) 目标: 从细颗粒度图结构(每个节点的表征)得到粗颗粒度图结构表征(子图或全图的表征)
分类:
- 直接图池化模型
- 层次图池化模型
- 其他图池化方法
4.1 直接图池化模型
核心: 由于图中节点不存在顺序关系,可以将所有节点的表征视为一个集合,采用对集合的运算得到全局图特征
平均/最大/求和池化:
h G = m a x / a v e / s u m { h v L , ∀ v ∈ V } h_{\mathcal{G}}=max/ave/sum\{h_v^{L},\forall v \in \mathcal{V}\} hG=max/ave/sum{hvL,∀v∈V}
门控全局池化: 基于注意力
h G = t a n h ( ∑ v ∈ V A t t 1 ( h v ( L ) , h v ( 0 ) ) ∑ v ′ ∈ V A t t 1 ( h v ′ ( L ) , h v ′ ( 0 ) ) ⊙ t a n h ( A t t 2 ( h v ( L ) , h v ( 0 ) ) ) ) h_{\mathcal{G}}=tanh(\sum_{v\in \mathcal{V}} {{Att_1(h_v^{(L)},h_v^{(0)})} \over {\sum_{v^{'}\in\mathcal{V}}Att_1(h_{v^{'}}^{(L)},h_{v^{'}}^{(0)})}} \odot tanh(Att_2(h_v^{(L)},h_v^{(0)}))) hG=tanh(v∈V∑∑v′∈VAtt1(hv′(L),hv′(0))Att1(hv(L),hv(0))⊙tanh(Att2(hv(L),hv(0))))
4.2 层次图池化模型
动机: 直接图池化模型从节点表征一步学习到图表征,可能忽略了图的复杂层次结构 —— 将所有节点表征直接简化为一个表征,限制模型的灵活性和表达能力
核心思想: 逐步"粗化(Coarsening)"处理图——有序减小图的规模,并保留图的层次结构信息,直至学习到所需要的颗粒度的图表征
分类:
- 基于下采样: 选择原图中最重要的节点作为粗化图的节点
- 基于超节点: 将输入图中的节点组合成新的超节点,并用这些超节点作为粗话图的节点
关键步骤:
- 制定粗化图节点的生成策略
- 生成粗话图的结构
- 生成粗话图的节点特征