1 知识回顾
- 节点嵌入表示:相似度的计算similarity(u,v)=zvTzu
- 深度图编码器:基于图结构的多层非线性变换
- 使用场景包括节点分类、连接预测、社区检测、网络相似性
- 主要解决的难点:
- 任意尺寸输入、拓扑复杂
- 没有固定节点顺序和参考锚点
- 动态变化,具有多模态特征
2 深度学习基础
-
监督学习:给定输入x,预测标签y,目标函数是ΘminL(y,f(x))
-
损失函数(交叉熵损失函数):CrossEntropy(y,f(x))=−i=1∑C(yilogf(x)i),其中yi和f(x)i是第i类的实际值和预测值
-
优化目标函数:
- 梯度下降法:沿着梯度的相反方向不断更新权重,直至收敛
- 随机梯度下降法:在每一步中选择不同的小批量数据集作为输入,使用梯度下降不断迭代,更新权重
-
反向传播:基于链式法则,计算复合函数的导数,将误差从输出层向隐藏层反向传播,直至传播到输入层
-
非线性激活函数:
- ReLU(x)=max(x,0)
- σ(x)=1+e−x1
3 图深度学习
- 神经网络的图表示:把图表示成邻接矩阵,再把邻接矩阵嵌入节点特征,最后把该矩阵作为神经网络的输入
- 解决方案:将卷积推广到图的网络中,同时利用节点特征,通过传递和聚集邻居节点的信息,可设计不同的图神经网络
4 图卷积网络(GCN)
4.1 图卷积网络基本思想
- 基本思想:基于本地网络的领域生成节点嵌入表示,对每个节点分别构建自己的计算图
- 与经典神经网络的不同之处:图神经网络每个节点基于其邻域定义一个计算图,如果两个节点的网络邻域相似,那么这两个节点将具有相同的计算图
- 节点聚合:将领域的所有信息求平均值
4.2 深度编码器
hv(0)=xvhvk+1=σ(Wk∑u∈N(v)∣N(v)∣hu(k)+Bkhv(k)),∀k∈{0,1,⋯,K−1}zv=hv(K)
其中,σ是非线性激活函数,例如ReLU;Wk表示领域聚合的权重;Bk表示隐藏层的权重;N(v)是节点v的邻域(相连节点)
记:H(k)=[h1(k)⋯h∣V∣(k)]T,Dv,v=Deg(v)=∣N(v)∣,可得:
u∈N(v)∑∣N(v)∣hu(k−1)⇒H(k+1)=D−1AH(k)
更新函数可得:
H(k+1)=σ(A~H(k)WkT+H(k)BkT)
其中,A~=D−1A
4.3 模型训练
-
监督学习:最小化损失函数
-
无监督学习:可以用图结构作为自监督
-
无监督训练:激活函数为L=zu,zv∑CE(yu,v,DEC(zu,zv))
-
自监督训练:激活函数为L=v∈V∑yvlog(σ(zvTθ))+(1−yv)log(1−σ(zvTθ))
4.4 图神经网络现代设计
5 GNNs、CNNs和Transformers对比
hvl+1=σ⎝⎛u∈N(v)∪{v}∑Wluhu(l)⎠⎞,∀l∈{0,⋯,L−1}
可化简为
hv(l+1)=σ⎝⎛u∈N(v)∑Wluhu(l)+Blhv(l)⎠⎞,∀l∈{0,⋯,L−1}
-
GNNs:更新公式是hvl+1=σ⎝⎛Wlu∈N(v)∑∣N(v)∣hu(l)+Blhv(l)⎠⎞,∀l∈{0,1,⋯,L−1}
-
CNN可以被看作是固定的邻域和固定顺序的特殊GNN:
- CNN中卷积核的大小是预定义的。
- GNN的优点是它能处理每个节点的度数都不相同的任意图
- CNN不具有置换不变性,改变像素位置会导致不同的输出
-
Transformer模型的每一层可以被看作是一个特殊的GNN,在一个完全连接的word图上运行。由于每个词都关注所有其他的词,所以转换层的计算图与全连接的word图上的GNN的计算图相同。
6 GNN通用框架
6.1 定义单个GNN层
- 信息计算:节点第l层的嵌入是l−1层节点自身的信息和l−1层邻域信息的聚合,并且这些信息的计算顺序对结果没有影响。
mu(l)=MSG(l)(hu(l−1))
- 信息聚合:每个节点都要从它的邻域聚合信息,聚合函数可以采用求和、平均或求最大值函数
hv(l)=AGG(l)({mu(l),u∈N(v)})
- 优化:解决节点v本身的节点信息丢失问题
mu(l)=W(l)hu(l−1)mv(l)=B(l)hv(l−1)
hv(l)=CONCAT(AGG({mu(l),u∈N(v)}),mv(l))
- 添加非线性激活函数(例如ReLU、Sigmoid),增强网络的表现力
6.2 经典图神经网络层
hv(l)=σ⎝⎛u∈N(v)∑∣N(v)∣hu(l−1)⎠⎞
可分别写成消息计算和消息聚合的形式:
mu(l)=∣N(v)∣1W(l)hu(l−1)hv(l)=σ(Sum({mu(l),u∈N(v)}))
hv(l)=σ(W(l)⋅CONCAT(hv(l−1),AGG({hu(l−1),∀u∈N(v)})))
可分别写成消息计算和消息聚合的形式:
hN(v)(l)=AGG({hu(l−1),∀u∈N(v)})hvl=σ(W(l)⋅CONCAT(hv(l−1),hN(v)(l)))
可以使用不同的聚合函数:
-
Mean:AGG=u∈N(v)∑∣N(v)∣hu(l−1)
-
Pool:AGG=Mean({MLP(hu(l−1)),∀u∈N(v)})
-
LSTM:AGG=LSTM([hu(l−1),∀u∈π(N(v))])
-
GAT:
hv(l)=σ⎝⎛u∈N(v)∑αvuW(l)hu(l−1)⎠⎞
其中,αvu=∣N(v)∣1是节点u的消息对节点v的权重因子,不同邻居带来的信息权重相同(即连接权重相同)
6.3 图注意力网络
6.4 通用的GNN层模板

-
许多现代深度学习模块可以融入到GNN层中,例如:
- 批量标准化(Batch Normalization):可以稳定神经网络的训练过程
- Dropout:避免过拟合
- 注意力或门控机制(Attention/Gating):可以控制消息的重要性
- 以及其他任何有用的深度学习模块
-
Batch Normalization:
- 目标:稳定神经网络的训练过程
- 基本思想:在每个维度上分别计算N个样本的均值、标准差,使用计算出的均值和标准差对特征进行归一化处理
-
Dropout
- 目标:对神经网络进行规范化处理以防止过拟合
- 基本思想:在训练时,以一定的概率p,随机将神经元设置为零(即关闭神经元);在测试时,使用所有神经元参与计算
-
非线性激活函数:
- ReLU:ReLU(x)=max(x,0)
- Sigmoid:σ(x)=1+e−x1
- Leaky ReLU:PReLU(x)=max(x,0)+amin(x,0),其中a是一个需要训练的参数
6.5 GNN层间的堆叠
-
过度平滑问题:当GNN层数过深时,会导致所有节点的Embedding相同,导致过度平滑
-
通过感受野的概念解释过度平滑的问题:一个节点的嵌入是由它的感受野决定的,如果两个节点具有高度重叠的感受野,那么它们的嵌入表示非常相似,当堆叠很多的GNN层,即使两个离着很远的节点,也会有相似的计算图
-
提高浅层GNN的表达能力:
- 在GNN层的内部,将计算和聚合整合到一个深度神经网络中,例如使用3层MLP
- 在GNN层之前和之后添加MLP层(应用于每个节点),作为前处理层和后处理层
-
添加跳转连接(Skip Connections):带跳转连接的GCN层
hv(l)=σ⎝⎛u inN(v)∑W(l)∣N(v)∣hu(l−1)+hv(l−1)⎠⎞
6.6 图增强
- 图特征增强
- 图结构增强
- 解决图太稀疏问题:添加虚拟节点或边
- 解决图太密集问题:消息传递时只采样部分邻居节点进行传递
- 解决图太大问题:计算embedding时,对子图进行采样
6.6.1 图特征增强的方式
- 输入图没有节点特征,我们只有这个图的邻接矩阵
- 为节点分配常数特征
- 为节点分配唯一的ID,这些ID值可以被转换为独热(one-hot)向量
- 存在环节点数的特征
- 使用循环计数作为增强的节点特征
- 人工补充信息到节点属性特征中
6.6.2 图结构增强
(1)针对图稀疏:
- 添加虚拟节点或边
- 常用方法:在虚拟边上连接2跳邻居
- 实现:用A+A2替换邻接矩阵A
- 添加虚拟节点:虚拟节点将连接到图中的所有节点
- 好处:提高了稀疏图中的消息传递,虚拟节点的Embedding可以作为全图的Embedding
(2)针对图密集的问题
- 节点邻域采样
- 实现:随机对一个节点的邻域节点进行消息传递
- 好处:降低计算成本,可扩展到大规模图