【GNN】《图深度学习》四、五章学习笔记(图嵌入、图神经网络)


在看《图深度学习》这本书时候记录的一些要点,每节序号和书的章节号对应可以翻阅。
Ⅰ是基础概念,Ⅱ是GNN的重点内容,Ⅲ是扩展知识。
Ⅳ是实际应用,Ⅴ是前沿进展,有需要的话可以深入了解。
Ⅰ《图深度学习》二、三章学习笔记(图论基础、深度学习基础)
Ⅱ《图深度学习》四、五章学习笔记(图嵌入、图神经网络)
Ⅲ《图深度学习》六、七、八、九章学习笔记(GNN的可扩展性、健壮性、复杂图、其他深度模型)
Ⅳ《图深度学习》十、十一、十二、十三章学习笔记(GNN在NLP、CV、数据挖掘、医疗领域的应用)
Ⅴ《图深度学习》十四、十五章学习笔记(高级方法、高级应用)


第四章 图嵌入

图嵌入的目的:将给定图中的每个节点映射到一个低维的向量表示(图域—>嵌入域)

图嵌入的通用框架有四个关键组件:

  • 节点从图域映射到嵌入域的映射函数
  • 提取图域中需保留信息的信息抽取器 I \mathcal I I
  • 利用嵌入域信息重构所提取图信息的重构器 I ′ \mathcal I' I
  • 通过对 I \mathcal I I I ′ \mathcal I' I的目标进行优化,学习映射或重构器中涉及的所有参数。在这里插入图片描述

4.2 简单图的图嵌入

需要保留的信息:节点共现、结构角色、节点状态和社区结构。

4.2.1 保留节点共现

流行方法之一是执行随机游走,如果一些节点倾向于在某些随机游走中共同出现,则认为这些节点是相似的。然后优化一个映射函数,使得学习到的节点表示可以重构从随机游走中提取的“相似性”。

DeepWalk

保留节点间共现关系的经典图嵌入算法。

①映射函数

使用查找表:给定索引 i i i,可以直接检索到节点 v i v_i vi的嵌入   u i \ \boldsymbol u_i  ui
f ( v i ) = u i = W T e i f(v_i)=\boldsymbol u_i=\boldsymbol W^T\boldsymbol e_i f(vi)=ui=WTei
式中,   e i ∈ { 0 , 1 } N \ \boldsymbol e_i ∈\{ 0,1\}^N  ei{0,1}N表示节点   v i \ v_i  vi的one-hot编码,其中 N N N为节点数量,矩阵   W \ \boldsymbol W  W的第   i \ i  i行是节点   v i \ \boldsymbol v_i  vi的表示。

②基于随机游走的共现提取器

随机游走:从图   G \ \mathcal G  G的一个节点开始,从它的邻居中以概率   p \ p  p选中一个节点并前进到这个节点,接着从该选中的节点开始重复上述过程,得到一个结点的序列,长度为   T \ T  T,称为图上长度为   T \ T  T的随机游走。
在这里插入图片描述
式中,被访问的下一个节点是按均匀分布从当前节点的邻居中随机选择的, d ( v ( t ) ) d(v^{(t)}) d(v(t))是节点 v ( t ) v^{(t)} v(t)的度。上述过程可以用一个随机游走生成器 R W ( ) RW() RW()来总结: W = R W ( G , v ( 0 ) , T ) \mathcal W =\rm RW(\mathcal G,v^{(0)},T) W=RW(G,v(0),T)

为了生成随机游走能够捕获整个图的信息,每个节点都被用作起始节点生成   γ \ \gamma  γ个随机游走,具体步骤如下:
在这里插入图片描述算法1最后输出集合   R \ \mathcal R  R,它包含 ∣ V ∣ \vert \mathcal V\vert V   γ \ \gamma  γ随机游走。

Skip-gram算法通过捕获句子中词之间的共现关系来保存句子的信息,认为中心词与其上下文(距离为 w w w)的词是有共现关系的。DeepWalk将这个概念应用到随机游走中,两个节点的共现被表示为元组 ( v c o n , v c e n ) (v_{con},v_{cen}) (vcon,vcen),后者是中心节点,后者是它的某个上下文节点。

算法2用于从随机游走中提取节点间共现关系。这里平等的对待所有上下文节点,不考虑它们与中心节点的距离。
在这里插入图片描述
③重构器和目标

为了通过嵌入域重构共现信息,需要通过节点嵌入推断在   I \ \mathcal I  I各个元组出现的概率。一个节点可以同时扮演两个角色,即中心节点和其他节点的上下文节点,因此用两个不同的映射函数生成节点,表示它们扮演不同角色。
在这里插入图片描述
在这里插入图片描述
上式可被视为来自元组 ( v c o n , v c e n ) (v_{con},v_{cen}) (vcon,vcen)在嵌入域的重构信息。如果能够从嵌入域中准确推断 I \mathcal I I的原图信息,就可以认为提取的信息 I \mathcal I I是从嵌入域中被良好重构的。因此,重构 I \mathcal I I的概率可以建模如下:
I ′ = R e c ( I ) = ∏ ( v c o n , v c e n ) ∈ s e t ( I ) p ( v c o n ∣ v c e n ) # ( v c o n , v c e n ) . \mathcal I'=Rec( \mathcal I)=\prod_{(v_{con},v_{cen})∈set(\mathcal I)}p(v_{con}\vert v_{cen})^{\#(v_{con},v_{cen})}. I=Rec(I)=(vcon,vcen)set(I)p(vconvcen)#(vcon,vcen).
式中, s e t ( I ) set(\mathcal I) set(I)表示 I \mathcal I I中无重复的元组集合, # ( v c o n , v c e n ) \#(v_{con},v_{cen}) #(vcon,vcen)表示 I \mathcal I I中元组 ( v c o n , v c e n ) (v_{con},v_{cen}) (vcon,vcen)的频次。为了确保更好的重构,需要学习映射函数的参数使得上式最大化。可以通过最小化以下目标函数学习嵌入参数 W c o n , W c e n \boldsymbol W_{con},\boldsymbol W_{cen} Wcon,Wcen,目标函数是上式的负对数形式。
在这里插入图片描述
④加速学习过程

  • 分层softmax:不学习映射参数 W \boldsymbol W W,学习映射函数 f f f
  • 负采样:从那些没有出现在中心节点的上下文节点中采样 k k k个节点,形成负样本元组,目标函数是使负元组中样本节点之间的概率被最小化。
node2vec

提出了具有两个超参数 p p p q q q二阶随机游走来代替DeepWalk中的随机游走来生成 I \mathcal I I
在这里插入图片描述
式中, d i s ( v ( t − 1 ) , v ( t + 1 ) ) dis(v^{(t-1)},v^{(t+1)}) dis(v(t1),v(t+1))表示这两个节点之间的最短路径长度。它在决定下一个节点时,即考虑了前一个节点,又考虑了当前节点。

  • p p p控制从节点 v ( t − 1 ) v^{(t-1)} v(t1)游走到节点 v ( t ) v^{(t)} v(t)后以及重新访问节点 v ( t − 1 ) v^{(t-1)} v(t1)的概率。较小的 p p p鼓励随机游走重新访问之前的节点,较大的 p p p会减少回溯到访问过的节点的可能性。
  • q q q允许随机游走区分”向内“和“向外”节点。当 q > 1 q>1 q>1时,游走倾向于接近节点 v ( t − 1 ) v^{(t-1)} v(t1)的节点,当 q < 1 q<1 q<1时,游走倾向于访问远离节点 v ( t − 1 ) v^{(t-1)} v(t1)的节点。
LINE

引入了二阶相似度的概念,其目标函数可以表示如下:
在这里插入图片描述
式中, E \mathcal E E是图   G \ \mathcal G  G的边集。LINE与DeepWalk最大的区别在于它采用 E \mathcal E E而不是   I \ \mathcal I  I作为重构信息。实际上, E \mathcal E E可以看作是   I \ \mathcal I  I的特例,其中随机游走的长度   T \ T  T被设置为1。

以上三种网络嵌入方法还可以从矩阵分解的角度来分析。

4.2.2 保留结构角色

将彼此远离但具有相似结构角色节点投射到相似的表示中。

struc2vec

具有与DeepWalk相同的映射功能和重构器功能,但它从原图域中提取的信息是结构角色相似度,并将其用于构建新的图。新图中的边表示结构角色相似性,利用基于随机游走的算法从新图中提取共现关系。

①衡量结构角色相似度

如果两个节点的度相近,那么可以认为它们在结构上相似。此外,如果他们的邻居的度也相近,则这两个节点在结构上更加相似。两个节点之间的结构距离可以递归地定义如下:
g k ( v 1 , v 2 ) = g k − 1 ( v 1 , v 2 ) + d i s ( s ( R k ( v 1 ) , s ( R k ( v 2 ) ) ) . g_k(v_1,v_2)=g_{k-1}(v_1,v_2)+dis(s(R_k(v_1),s(R_k(v_2))). gk(v1,v2)=gk1(v1,v2)+dis(s(Rk(v1),s(Rk(v2))).
式中, R k ( v ) R_k(v) Rk(v)表示与节点 v v v相距 k k k跳的节点集,对 R k ( v ) R_k(v) Rk(v)中的节点进行排序,得到度序列 s ( R k ( v ) ) s(R_k(v)) s(Rk(v)) d i s ( s ( R k ( v 1 ) , s ( R k ( v 2 ) ) ) ⩾ 0 dis(s(R_k(v_1),s(R_k(v_2)))\geqslant0 dis(s(Rk(v1),s(Rk(v2)))0表示 v 1 v_1 v1 v 2 v_2 v2度序列之间的距离,即 v 1 v_1 v1 v 2 v_2 v2 k k k跳邻居的度相似度。

DTW算法可以处理不同长度的序列,因此选择它作为距离函数 d i s ( ⋅ , ⋅ ) dis(·,·) dis(⋅,⋅)。它可以找到两个序列之间的最佳匹配,使得所有配对元素之间的距离之和最小。分别来自两个序列的两个元素之间的距离按如下方式测量:
在这里插入图片描述

这个距离取决于两个元素的最大值和最小值之间的比率;因此, l ( 1 , 2 ) l(1, 2) l(1,2)   l ( 100 , 101 ) \ l(100, 101)  l(100,101)会被认为拥有十分不同的距离,这一性质在衡量节点的度之间的差别时十分重要。

②基于结构相似度构造新图

得到两两节点之间的结构距离后,可以构造一个多层带权图来编码节点之间的结构相似度。

设原图 G \mathcal G G的直径是 k ∗ k^* k,可以构造一个 k ∗ k^* k层图,其中第 k k k层建立在定义如下的权重之上:在这里插入图片描述
式中, w k ( u , v ) w_k(u,v) wk(u,v)表示图的第 k k k层的节点 u u u v v v之间的变得权重。距离 g k ( u , v ) g_k(u,v) gk(u,v)越小,节点之间的连接越强。

特别地,第 k k k层中的每个节点 v v v都连接到其在第 k − 1 k-1 k1层和 k + 1 k+1 k+1层中对应的节点,层之间对应节点之间的边权重定义如下:
在这里插入图片描述
Γ k ( v ) \Gamma_k(v) Γk(v)度量节点 v v v与第 k k k层中其他节点的相似性。

③新图上的有偏随机游走

struc2vec提出了一种有偏随机游走算法生成一组随机游走,用于生成待重构的共现元组。引入超参数 q q q,随机游走以概率 q q q停留在同一层,并以概率 1 − q 1-q 1q跳到另一层。

  • 如果随机游走停留在同一层,从当前节点 u u u步入另一节点 v v v的概率计算如下:
    在这里插入图片描述
    Z k ( u ) Z_k(u) Zk(u)是第 k k k层节点 u u u的归一化因子,其定义如下:
    在这里插入图片描述
  • 如果决定游走到另一个图层中的与之对应的节点,则到达图层 k + 1 k+1 k+1和图层 k − 1 k-1 k1的概率如下:
    在这里插入图片描述

4.2.3 保留节点状态

节点的全局状态可以使用2.3.3节中介绍的中心性来度量。保留全局状态信息不是保留图中节点全局状态分数,而是保留它们全局状态分数的排名

①提取器

提取器计算全局状态分数,并根据分数对节点进行排序,得到 ( v ( 1 ) , . . . , v ( N ) ) (v_{(1)},...,v_{(N)}) (v(1),...,v(N))

②重构器

重构器用于从节点嵌入中恢复由提取器提取的排序信息。为了重构全局排序,需要保持 ( v ( 1 ) , . . . , v ( N ) ) (v_{(1)},...,v_{(N)}) (v(1),...,v(N))中所有节点对的相对排序。一对节点全局排名被保留下来的概率可以通过使用节点嵌入建模为:
在这里插入图片描述
式中, p ( v ( i ) , v ( j ) ) p(v_{(i)},v_{(j)}) p(v(i),v(j))表示节点 v ( i ) v_{(i)} v(i)的排名在 v ( j ) v_{(j)} v(j)之前的概率,具体来说,它被建模为:
在这里插入图片描述
式中, u ( i ) \boldsymbol u_{(i)} u(i) u ( j ) \boldsymbol u_{(j)} u(j)分别表示 v ( i ) v_{(i)} v(i) v ( j ) v_{(j)} v(j)的嵌入, w \boldsymbol w w是一个需要被学习的参数向量。模型期望任何有序对 ( v ( i ) , v ( j ) ) (v_{(i)},v_{(j)}) (v(i),v(j))都应该有很高的概率,可以通过最小化以下目标函数来实现:
在这里插入图片描述

4.2.4 保留社区结构

社区结构是图中最突出的特征之一,有一种基于矩阵分解的方法,既保留了连接、共现等面向节点的结构,又通过模块度最大化保留了社区结构。

①保留面向节点的结构

包括节点对的连接信息、节点邻域间的相似度信息,它们都可以从给定图中提取并以矩阵的形式表示。

②提取器

节点对的连接信息被提取后被表示为邻接矩阵 A \boldsymbol A A的形式,邻域相似度计算如下:
在这里插入图片描述
节点 v i v_i vi v j v_j vj共享的邻居越多, s i , j s_{i,j} si,j越大;反之越小。这种邻域相似关系可以归结为一个矩阵 S \boldsymbol S S

③重构器和目标

重构器旨在以 A \boldsymbol A A S \boldsymbol S S的形式回复这两种类型的提取信息。要同时重构它们,先将他们线性组合得到, η > 0 \eta>0 η>0,控制邻域相似性的重要程度:
在这里插入图片描述
然后, P \boldsymbol P P在嵌入域被重构为: W c o n W c e n T \boldsymbol W_{con}\boldsymbol W_{cen}^T WconWcenT,它们是两个映射函数 f c o n f_{con} fcon f c e n f_{cen} fcen的参数,目标可以表述如下:
在这里插入图片描述
式中, ∥ ⋅ ∥ F \Vert ·\Vert_F F表示矩阵的Frobenius范数。

④保留社区结构

一种流行的社区检测方法是基于模块度最大值的方法。对于一个有2个社区的图,假设知道它的社区分配,则模块度的定义如下:
在这里插入图片描述
扩展到两个社区以上,引入分配矩阵 H \boldsymbol H H

⑤总体目标

为了同时保留面向节点的结构信息和社区结构信息,引入矩阵 C \boldsymbol C C W c e n \boldsymbol W_{cen} Wcen一起重构指示矩阵 H \boldsymbol H H
在这里插入图片描述

4.3 复杂图的嵌入

简单总结了个表,具体实现得看书。

第五章 图神经网络

图神经网络可以看作一个关于图的特征的学习过程。

对于侧重于节点的任务来说,图神经网络模型学习每个节点的代表性特征;

对于侧重于图的任务来说,图神经网络模型学习整个图的代表性特征,而学习节点特征通常是它的一个中间步骤。

  • 图滤波:以节点特征和图结构作为输入、以一组新的节点特征作为输出的过程。只改变节点特征而不会改变图结构。

    学习节点特征( F ( o f ) \bold F^{(\rm of)} F(of))的过程可以概括如下,要用到节点的输入特征( F ( i f ) \bold F^{(\rm if)} F(if))和图结构( A \bold A A):
    F ( o f ) = h ( A , F ( i f ) ) . \bold F^{(\rm of)}=h(\bold A,\bold F^{(\rm if)}). F(of)=h(A,F(if)).
    上式中的 o f \rm of of i f \rm if if分别表示滤波过程中的输出和输入(output/input),算子 h ( ⋅ ) h(·) h()被称为图滤波器或者卷积算子。

  • 池化汇总节点特征以生成图特征。图的池化操作利用图结构信息指导池化过程,生成粗化图的图结构(或邻接矩阵)及其节点特征:
    A ( o p ) , F ( o p ) = p o o l ( A ( i p ) , F ( i p ) ) . \bold A^{(\rm op)},\bold F^{(\rm op)}=\rm pool(\bold A^{(\rm ip)},\bold F^{(\rm ip)}). A(op),F(op)=pool(A(ip),F(ip)).

5.2 图神经网络基本框架

5.2.1 侧重于节点的任务

对于侧重于节点的任务,基本框架是图滤波层和非线性激活层的组合,前一层的输出作为下一层的输入。
在这里插入图片描述
i i i层图滤波层可被描述为,式中 α ( ) \alpha() α()表示第 ( i − 1 ) (i-1) (i1)个图滤波层之后的逐元素应用的激活函数:
F ( i ) = h i ( A , α i − 1 ( F ( i − 1 ) ) ) . \bold F^{(i)}=h_i(\bold A,\alpha_{i-1}(\bold F^{(i-1)})). F(i)=hi(A,αi1(F(i1))).

5.2.2 侧重于图的任务

对于侧重于图的任务,基本框架分为三部分:图滤波层、激活层和图池化层,这些层的组合被称作块(block)。

在这里插入图片描述

一个块的输出被用作下一个连续块的输入,含有 L L L个块的图神经网络框架的计算过程可被表示为,:
A ( j ) , F ( j ) = B ( j ) ( A ( j − 1 ) , F ( j − 1 ) ) ,          j = 1 , . . . , L . \bold A^{(j)},\bold F^{(j)}=B^{(j)}(\bold A^{(j-1)},\bold F^{(j-1)}),\ \ \ \ \ \ \ \ j=1,...,L. A(j),F(j)=B(j)(A(j1),F(j1)),        j=1,...,L.

5.3 图滤波器

5.3.1 基于谱的图滤波器

图谱滤波:调制图信号的频率,使得其中一些频率分量被保留或放大,而另一些频率分量被移除或减小。

在这里插入图片描述
滤波的过程可视为将算子 U g ^ ( Λ ) U T U\hat g(\Lambda)U^{\rm T} Ug^(Λ)UT应用于输入的图信号 f f f。其中,函数 g ^ ( Λ ) \hat g(\Lambda) g^(Λ)被称为滤波器。

滤波器建模优点局限
Poly-FilterK阶截断多项式计算时不需要特征分解,卷积算子在空间域是局部化的多项式的基彼此不正交,系数相互依赖,学习过程中受到扰动时不稳定
Cheby-Filter具有一组正交基的切比雪夫多项式在扰动下表现得更稳定计算一个节点的新表征时,会涉及该节点的K跳邻域
GCN-Filter切比雪夫多项式的阶设为1更新节点特征时只涉及与其直接相邻的邻居Cheby-Filter简化版

以上为单通道图信号引入了图滤波器,其中每个节点都与单个标量值相关联。实践中,图信号通常是多通道的,即其中每个节点对应一个特征向量。可以将多通道图信号的图滤波器视为在每个通道中应用图滤波器。

5.3.2 基于空间的图滤波器

方法
GraphSAGESAMPLE+ AGGREGATE(Mean、LSTM、Pooling)
GAT-Filter与GCN-Filter相似,聚合时区分邻居的重要性
ECC-Filter利用边信息设计图滤波器
GGNN-Filter为具有不同类型的有向边的图设计
Mo-Filter引入混合模型网络,用于对图和流形等非欧几里得数据进行卷积计算
MPNN基于空间的图滤波器的通用框架

5.4 图池化

  • 平面图池化:直接从节点表示生成图级表示。该层中不会生成新的图,而是生成一个节点。

  • 层次图池化:逐步粗化图直到得到图的表示,从而保留图的层次结构信息

    1. 通过降采样选择最重要的节点作为粗化图的节点来获得粗化图。(保留了原图中的节点)

      1)选择降采样度量方法;2)为粗化图生成图结构;3)为粗化图生成节点特征。

      • gPool层:第一个采用降采样策略对图进行粗化。
    2. 聚集输入图中的多个节点以形成粗化图的一个超节点。(生成了新的节点)

      1)生成超节点作为粗化图的节点;2)生成粗化图的图结构;3)生成粗化图的节点特征。

      • DiffPool:以可微的过程生成超节点。
      • EigenPooling:采用谱聚类的方法生成超节点,在此基础上形成粗化图的图结构和节点特征。

5.5 图卷积神经网络的参数学习

  • 节点分类:GNN模型通常将整个图作为输入生成节点表示,然后利用这些表示来训练节点分类器, Θ \Theta Θ表示模型参数, Z \bold Z Z表示输出的节点类别概率矩阵。

    F ( o u t ) = G N N n o d e ( A , F ; Θ 1 ) \bold F^{\rm (out)}=\rm GNN_{node}(\bold A,\bold F;\bold \Theta_1) F(out)=GNNnode(A,F;Θ1)
    Z = S o f t m a x ( F ( o u t ) ; Θ 2 ) \bold Z=\rm Softmax(\bold F^{\rm (out)};\bold \Theta_2) Z=Softmax(F(out);Θ2)
    L t r a i n = Σ v i ∈ V l l ( f G N N ( A , F ; Θ ) i , y i ) \mathcal L_{train}=\Sigma_{v_i∈\mathcal V_l}l(f_{GNN}(\bold A,\bold F;\bold \Theta)_i,y_i) Ltrain=ΣviVll(fGNN(A,F;Θ)i,yi)

  • 图分类:GNN模型通常被用作特征编码器,将输入图映射为特征表示,再将图级表示用于进行图分类。 z G z_{\mathcal G} zG表示输入图的预测概率。

    f G = G N N g r a p h ( G ; Θ 1 ) \bold f_{\mathcal G}=\rm GNN_{graph}(\mathcal G;\bold \Theta_1) fG=GNNgraph(G;Θ1)
    z G = S o f t m a x ( f G Θ 2 ) z_{\mathcal G}=\rm Softmax(\bold f_{\mathcal G}\bold \Theta_2) zG=Softmax(fGΘ2)
    L t r a i n = Σ G i ∈ D l ( f G N N ( G i ; Θ ) i , y i ) \mathcal L_{train}=\Sigma_{\mathcal G_i∈\mathcal D}l(f_{GNN}(\mathcal G_i;\bold \Theta)_i,y_i) Ltrain=ΣGiDl(fGNN(Gi;Θ)i,yi)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值