【缺啥补啥】图表征学习-1

图表征学习: 学习图中的元素,如节点、边、子图或整个图的向量表征,并应用基于向量的机器学习算法进行图数据的建模和分析
动态环境: 图数据包括结构、特征、性质、任务等,随时间发生变化
开放环境: 泛指数据分布、学习目标、特征或标签等因素在机器学习过程或应用场景中发生变化
符号图: 图中存在负的边权重

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),viV,1is(vi,vi+1)ε,1is,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=1s1Pr(vi+1v1,...,vi)=Pr(v1)i=1s1Pr(vi+1vi)

  • 第一个等号由条件概率公式得出,第二个用到了马尔可夫性
  • 条件概率 P r ( v i + 1 ∣ v i ) Pr(v_{i+1}|v_i) Pr(vi+1vi)表示游走如何选择下一个节点,最简单的假设是均匀选择邻居节点即 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+1vi)={Di,i1,如果vi+1N(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 hiRd,该节点的目标函数为最大化如下概率:
    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({viw,...,vi+w}\vihi)=j=iw,j=ii+wPr(vjhi)
    其中,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(vjhi)=vkVexp(hihk)exp(hihj)

上式中分母的归一化项需要对图中所有的节点求和,所以直接计算的复杂度会非常高,考虑两种近似算法:层次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,...,blogV)复杂度降低为 O ( l o g ∣ V ∣ ) O(log|\mathcal{V}|) O(logV)】,其中 b 0 b_0 b0是根节点, b ⌈ l o g ∣ V ∣ ⌉ b_{\lceil log|\mathcal{V}|\rceil} blogV代表 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(vjhi)=l=1logVPr(blhi)
路径上每个节点选择孩子节点的概率建模如下:
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(blhi)={1+exp(hibl1)1,如果blbl1的右孩子1+exp(hibl1)1,如果blbl1的左孩子


负采样:
核心思想: 为了有效地学习表征,其实无须精确计算 P r ( v j ∣ h i ) Pr(v_j|h_i) Pr(vjhi),而只需要尽可能区分目标节点和其他节点,因此其他节点可视为负样本
主要方法: 记负样本遵循的概率分布为 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(vjhi)=logσ(hjhi)+k=1KEvkPn[logσ(hkhi)]
其中, σ ( . ) \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=DA
其中, 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=D21LD21=ID21AD21

性质:

  • 邻接矩阵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 uRN【列向量】, 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=1NLi,juj=Di,iuij=1NAi,juj=(i,j)E(uiuj)

发现: 每个元素 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} uLu=u(DA)u=i=1NDi,iui2(i,j)Euiuj=21(i,j)E(uiuj)2

发现: 邻居节点之间信号差的平法和——图信号的平滑度(Smoothness)【反映出节点信号与其邻居信号的差异】 —— 拉普拉斯矩阵可以看作是图上的拉普拉斯算子 (Laplace operator)

  • 数值越大,信号邻居节点之间的取值差别越大——高频图信号
  • 数值越小,信号邻居节点之间的取值相近—— 低频图信号

图傅里叶变换与逆变换

  • 图傅里叶变换【图信号从空域到谱域】: u ^ = Q ⊤ u \hat{u}=Q^{\top}u u^=Qu,其中 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=qju

特征向量对应的特征值 λ 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 qjLqj=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=gGu=Q((Qg)(Qu))

  • 将谱域图卷积用于可学习的神经网络中: 可以将 Q ⊤ g Q^{\top}g Qg转化为一个可学习的卷积核直接将其作为学习参数,而不再依赖于傅立叶变换】,是一个由可学习参数组成的对角矩阵 Θ = 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(ΘQu)


谱域图神经网络(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=1flQΘi,j(l)Qui(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=0Kθ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} Qgθ(Λ)Q=Qk=0KθkΛkQ=k=0KθkQΛkQ=k=0Kθ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=xTk1(x)Tk1(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} Qgθ(Λ)Qu=Qk=0KθkTk(Λ )Qu=k=0KθkQTk(Λ )Qu=k=0KθkTk(L )u=k=0Kθ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 uk1uk2

发现:

  • 不需要对拉普拉斯矩阵计算特征分解
  • 递归计算方法可以避免直接进行矩阵乘法的高成本计算
  • 卷积过程具有空间局部性: 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=D21LD21=ID21AD21,其最大特征值严格小于或等于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ΛsymI=ΛsymI

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=Qgθ(Λsym)Qu=Q(θ0+θ1Λ sym)Qu=θ0u+θ1Q(ΛsymI)Qu=θ0u+θ1(LsymI)u=θ0u+θ1(D21AD21)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+D21AD21)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)=σ(pN(i){i}D i,iD p,p 1Hp,:(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,uNs(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 Bll=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} \} Bl1Bl{Ns(u),uBl}
    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,uNs(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,uNs(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),uNs(v)})

Note:

  • GraphSAGE 强调 **归纳学习(Inductive Learning)**能力:训练时的图结构和测试时的图结构不同,且测试时的图结构在训练时不可见【**直推式学习(Transductive Learning)**指训练时可观察到测试数据的结构】
  • 图卷积神经网络也可用于归纳学习场景: 也属于空域

2.2.3 图注意力网络(GAT)

  • GraphSAGE中,每个节点的邻居节点对于更新其表征的权重相同;图卷积中邻居节点的权重则由节点度数提前定义
  • 但是, 不同的邻居节点对中心节点的影响可能不同,且依赖于具体任务和数据

核心: 利用自注意力机制计算权重

主要步骤:

  • 对任意存在边的两个节点 v 和 u v和u vu,计算未归一化的注意力得分:
    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=kNvev,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=σ(uv{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}),uN(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,vV}
门控全局池化: 基于注意力
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(vVvVAtt1(hv(L),hv(0))Att1(hv(L),hv(0))tanh(Att2(hv(L),hv(0))))

4.2 层次图池化模型

动机: 直接图池化模型从节点表征一步学习到图表征,可能忽略了图的复杂层次结构 —— 将所有节点表征直接简化为一个表征,限制模型的灵活性和表达能力

核心思想: 逐步"粗化(Coarsening)"处理图——有序减小图的规模,并保留图的层次结构信息,直至学习到所需要的颗粒度的图表征

分类:

  • 基于下采样: 选择原图中最重要的节点作为粗化图的节点
  • 基于超节点: 将输入图中的节点组合成新的超节点,并用这些超节点作为粗话图的节点

关键步骤:

  • 制定粗化图节点的生成策略
  • 生成粗话图的结构
  • 生成粗话图的节点特征

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/231.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何批量给Word文件增加前缀序号?“汇帮批量重命名”帮助你批量给word文件增加前缀序号。

批量给Word文件增加前缀序号的过程,对于经常处理大量文档的人来说,是一项既繁琐又必要的任务。首先,我们需要明确为什么要给Word文件增加前缀序号。在很多情况下,当我们需要按照一定的顺序对多个文档进行管理和归档时,…

基于STC15系列库操作LED灯

一、准备工作 1. 基于STC15系列库的工程模板 参考:51单片机工程模板的建立(基于STC15系列库)-CSDN博客 2. Keil编译器 二、程序编写 1. 新建 led.c 和 led.h 文件并存放于 user/led 文件夹下; 2. 新建 user.c 和 user.h 文件并…

如何辨别:DNS污染or DNS劫持?

DNS劫持和DNS污染的情况在互联网中并不少见,到底是出现了DNS污染还是DNS劫持。什么是DNS污染?什么是DNS劫持?我们该如何辨别DNS污染和DNS劫持? DNS劫持: DNS 劫持是指恶意攻击者通过非法手段篡改了网络中的 DNS 服务…

android 创建module

文章目的: 快速创建module并使用 创建步骤: 1 创建module 2 修改module下的build.gradle文件 3 修改清单文件中MainActivity属性,否则APP会因为有多个启动界面而崩溃 4 在主项目build.gradle引用该object Module 至此,可在APP中…

针对springcloud gateway 跨域问题解决方案

springcloud gateway版本 <spring-boot.version>2.3.3.RELEASE</spring-boot.version> <spring-cloud.version>Hoxton.SR8</spring-cloud.version>跨域问题说明 application:1 Access to XMLHttpRequest at https://xxxxxxxxxx from origin http://l…

Goland远程连接Linux进行项目开发

文章目录 1、Linux上安装go的环境&#xff12;、配置远程连接3、其他配置入口 跑新项目&#xff0c;有个confluent-Kafka-go的依赖在Windows上编译不通过&#xff0c;报错信息&#xff1a; undefined reference to __imp__xxx似乎是这个依赖在Windows上不支持&#xff0c;选择让…

IMX6ULL-UBOOT驱动移植

介绍 IMX6ULL正点原子开发板使用的是14x14_evk的芯片 其中14x14代表的是芯片的尺寸。 本教程的标识符以nsouther或者 NSOUTHER NSouther为主 添加板子自己的配置文件 板子的默认配置文件保存在 configs目录下&#xff0c;我们以mx6ull_14x14_evk_emmc_defconfig为主&#xf…

SOT23-6封装单键触摸感应触发芯片TC233A

前言&#xff1a; 触摸芯片很多&#xff0c;现在触摸按键已经应用到很多行业&#xff0c;虽然不能覆盖所有的按键&#xff0c;但确实用的越来越多&#xff0c;国产的价格也便宜的令人发指&#xff0c;比如这个TC233A&#xff0c;也就一毛多一点。 TC233A概述 TC233A 是一个单…

【Shell语言】linux中awk命令

linux中awk命令 看这里放声嘶吼谁也不舍得沉默 宽阔也抓不住我下一秒钟的echo ——《暂时失控》苏打绿 awk命令简介 AWK 是一种处理文本文件的语言&#xff0c;是一个强大的文本分析工具。 之所以叫 AWK 是因为其取了三位创始人 Alfred Aho&#xff0c;Peter Weinberger, 和 B…

请陪伴Kimi和GPT成长

经验的闪光汤圆 但是我想要写实的 你有吗&#xff1f; 岁数大了&#xff0c;希望如何学习新知识呢&#xff1f;又觉得自己哪些能力亟需补强呢&#xff1f; 看论文自然得用Kimi&#xff0c;主要是肝不动了&#xff0c;眼睛也顶不住了。 正好昨天跟专业人士学会了用工作流的办法跟…

Python中的Super方法实现问题及解决方案

1、问题背景 在Python中&#xff0c;super方法用于在子类中调用父类的方法。Guido van Rossum曾给出了一个纯Python实现的super方法&#xff0c;以便更好地理解其工作原理。然而&#xff0c;在这个实现中&#xff0c;存在一个问题&#xff1a;当传入的对象不是要调用的父类的实…

C++入门 (2)

文章目录 C入门C输入输出缺省参数全缺省半缺省函数声明与定义分离 函数重载C支持函数重载的原理--名字修饰 C入门 C输入输出 C输入输出包含在# include《iostream》中 cout 类似在控制台中输出&#xff0c;使用cout需要使用流插入符&#xff08;<<&#xff09; 这个符号…

Hotcoin4月16日上新热门资产:头部RWA技术提供方Centrifuge(CFG)

Hotcoin持续为全球600万用户发掘优质潜力资产&#xff0c;热门币种交易上热币。一文快速了解今日上新资产:Centrifuge(CFG) 推荐指数 8.2 交易对 CFG/USDT 交易时间 4月16日 19:00 资产赛道 RWA 项目简介 Centrifuge是一个去中心化资产融资协议&#xff0c;专注于释放现实世界资…

Object.hasOwn is not a function

背景 开发一个H5页面,使用Object.hasOwn来测试属性是否存在,在error监控中,发现某些用户访问会出现如下报错: 问题分析 因为不是所有的用户都报错,继而先去mdn上查看这个api的浏览器兼容性: Object.hasOwn() - JavaScript | MDN 从【Can I Use】上也查看了此web技术的…

STM32串口通信

一、串口发送 1.初始化引脚 void Serial_Init(uint32_t BaudRate) {RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOA ,ENABLE );RCC_APB2PeriphClockCmd (RCC_APB2Periph_USART1 ,ENABLE );GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF_PP…

[疑难杂症2024-003]如何判断一张没有头信息的dcm图像,是否是压缩图像?

本文由Markdown语法编辑器编辑完成&#xff0e; 1. 前言: DCM格式&#xff0c;是医学图像领域里面的通用格式&#xff0e;DCM图像一般分为两大部分&#xff0c;一部分是TAG信息&#xff0c;一部分是像素. 而TAG信息&#xff0c;一般又会分为两部分&#xff0c;如下图所示, 是…

C++_智能指针

文章目录 前言一、智能指针原理二、库支持的智能指针类型1.std::auto_ptr2.std::unique_ptr3.std::shared_ptr4.std::weak_ptr 三、删除器总结 前言 智能指针是一种采用RAII思想来保护申请内存不被泄露的方式来管理我们申请的内存&#xff0c;对于RAII&#xff0c;我们之前也已…

LeetCode-热题100:102. 二叉树的层序遍历

题目描述 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a; root [3,9,20,null,null,15,7] 输出&#xff1a; [[3],[9,20],[15,7]] 示例 2&am…

【GEE实践应用】使用MODIS NDVI数据集绘制研究区域每日NDVI序列曲线

// 设置研究区域 var geometry table;// 选择MODIS NDVI 数据集 var modisNDVI ee.ImageCollection(MODIS/006/MOD13A2).filterBounds(geometry).filterDate(2000-01-01, 2023-12-31);// 计算每天的平均 NDVI var dailyMeanNDVI modisNDVI.map(function(image) {var date e…

AndroidStudio AGP 7+, 编译aar并输出到本地仓库

1 编写构建gradle脚本代码 1.1 配置publication和repository 在指定moudle目录下新建名为"maven-publish.gradle"文件&#xff0c;其声明的publication和repository如下所示&#xff1a; apply plugin: maven-publish// This creates a task called publishReleas…