1. 什么是图和图神经网络?
图的定义
图(Graph)是一种表示实体及其关系的数据结构,数学上定义为 G=(V,E)G = (V, E)G=(V,E),其中:
- VVV:节点集合,表示实体(如用户、分子中的原子、知识图谱中的实体)。
- E⊆V×VE \subseteq V \times VE⊆V×V:边集合,表示节点之间的关系(如社交关系、化学键、引用关系)。
图的类型包括:
- 有向图:边有方向,如 (u,v)≠(v,u)(u, v) \neq (v, u)(u,v)=(v,u)(Twitter关注关系)。
- 无向图:边无方向,如 (u,v)=(v,u)(u, v) = (v, u)(u,v)=(v,u)(Facebook友谊关系)。
- 加权图:边带有权重,表示关系的强度。
- 异构图:包含多种类型的节点或边(如知识图谱中的实体和关系)。
- 动态图:图的结构随时间变化(如交通网络)。
每个节点可以有特征向量 xv∈RFx_v \in \mathbb{R}^Fxv∈RF,表示节点的属性;边也可以有特征 euve_{uv}euv,表示关系的属性。
图神经网络(GNN)
图神经网络(Graph Neural Networks, GNN) 是一类专门设计用于处理图结构数据的神经网络。GNN通过利用图的拓扑结构(节点和边的连接关系),学习节点、边或整个图的表示(embedding),用于下游任务,如:
- 节点分类:预测节点的标签(如社交网络中用户的兴趣)。
- 边预测:预测节点间是否存在边(如推荐系统中的用户-物品交互)。
- 图分类:对整个图进行分类(如化学分子是否具有毒性)。
- 图生成:生成新的图结构(如分子设计)。
GNN的核心优势在于,它能够捕获图的非欧几里得结构,而传统深度学习模型(如CNN、RNN)主要处理规则的网格或序列数据。
2. 为什么需要GNN?
图数据在现实世界中无处不在(如社交网络、分子结构、知识图谱),但处理图数据面临以下挑战:
- 非规则结构:图的拓扑结构不规则,无法直接用固定大小的矩阵或张量表示。
- 局部与全局信息:节点的属性不仅取决于自身,还与邻居甚至整个图的结构相关。
- 动态性和异构性:图可能随时间变化,或包含多种类型的节点和边。
- 大规模性:现实世界的图(如社交网络)可能包含数亿节点和边,计算复杂度高。
传统方法(如基于手工特征的机器学习或简单的MLP)无法有效建模图的拓扑结构,而GNN通过以下方式解决了这些问题:
- 邻居聚合:通过消息传递机制,从邻居节点收集信息,捕获局部和全局结构。
- 参数共享:对所有节点使用相同的权重,减少参数量,提高泛化能力。
- 端到端学习:直接从图数据中学习表示,无需手动特征工程。
- 可扩展性:通过采样或子图训练,处理大规模图。
3. GNN的核心思想
GNN的核心是消息传递(Message Passing),通过迭代地聚合邻居节点的信息来更新每个节点的表示。消息传递的过程可以分解为以下步骤:
-
消息生成(Message Generation):
- 对于节点 vvv,从其邻居 u∈N(v)u \in \mathcal{N}(v)u∈N(v)(邻居集合)生成消息。
- 消息通常是邻居的特征 huh_uhu 或隐藏表示,通过线性变换、神经网络或其他函数生成。
-
消息聚合(Aggregation):
- 将所有邻居的消息聚合成一个固定大小的向量。
- 常见的聚合函数包括求和(sum)、均值(mean)、最大值(max)、注意力机制等。
-
节点更新(Update):
- 使用聚合后的消息和节点自身的表示,更新节点 vvv 的隐藏表示。
- 更新通常通过神经网络(如MLP)或简单的线性变换实现。
消息传递可以表示为以下通用公式:
hv(k)=UPDATE(k)(hv(k−1),AGGREGATE(k)({ hu(k−1)∣u∈N(v)}))h_v^{(k)} = \text{UPDATE}^{(k)} \left( h_v^{(k-1)}, \text{AGGREGATE}^{(k)} \left( \{ h_u^{(k-1)} \mid u \in \mathcal{N}(v) \} \right) \right)hv(k)=UPDATE(k)(hv(k−1),AGGREGATE(k)({ hu(k−1)∣u∈N(v)}))
- hv(k)h_v^{(k)}hv(k):节点 vvv 在第 kkk 层的隐藏表示。
- N(v)\mathcal{N}(v)N(v):节点 vvv 的邻居集合。
- AGGREGATE\text{AGGREGATE}AGGREGATE:聚合函数。
- UPDATE\text{UPDATE}UPDATE:更新函数。
通过多层(多次迭代)消息传递,GNN可以捕获更高阶的邻居信息(即 kkk-跳邻居)。
4. GNN的基本模型与分类
以下是几种经典的GNN模型及其特点:
4.1 消息传递神经网络(MPNN)
MPNN是GNN的通用框架,涵盖了大多数GNN模型。其核心公式为:
mv(k)=∑u∈N(v)M(k)(hv(k−1),hu(k−1),euv)m_v^{(k)} = \sum_{u \in \mathcal{N}(v)} M^{(k)} \left( h_v^{(k-1)}, h_u^{(k-1)}, e_{uv} \right)mv(k)=∑u∈N(v)M(k)(hv(k−1),hu(k−1),euv)
hv(k)=U(k)(hv(k−1),mv(k))h_v^{(k)} = U^{(k)} \left( h_v^{(k-1)}, m_v^{(k)} \right)hv(k)=U(k)(hv(k−1),mv(k))
- M(k)M^{(k)}M(k):消息函数,生成邻居的消息,可能考虑边特征 euve_{uv}euv。
- U(k)U^{(k)}U(k):更新函数,通常是一个神经网络。
- mv(k)m_v^{(k)}mv(k):聚合后的消息。
MPNN的灵活性在于,消息生成和聚合方式可以根据任务自由设计。例如,聚合可以是求和、均值或注意力机制。
4.2 图卷积网络(GCN)
图卷积网络(Graph Convolutional Network, GCN) 是最早的GNN模型之一,灵感来源于卷积神经网络(CNN)。GCN通过对邻居特征进行加权求和来更新节点表示,公式为:
hv(k)=σ(∑u∈N(v)∪{ v}1dvduhu(k−1)W(k))h_v^{(k)} = \sigma \left( \sum_{u \in \mathcal{N}(v) \cup \{v\}} \frac{1}{\sqrt{d_v d_u}} h_u^{(k-1)} W^{(k)} \right)hv(k)=σ(∑u∈N(v)∪{ v}dvdu1hu(k−1)W(k))
- dv,dud_v, d_udv,du:节点 vvv 和 uuu 的度(degree),用于归一化。
- W(k)W^{(k)}W(k):可学习的权重矩阵。
- σ\sigmaσ:激活函数(如ReLU)。
- N(v)∪{ v}\mathcal{N}(v) \cup \{v\}N(v)∪{ v}:包括节点自身(自环)。
GCN假设所有邻居的贡献通过度归一化均匀分配,适合同构图,但对异构图或加权图的支持有限。
4.3 GraphSAGE
GraphSAGE(Sample and Aggregate)是一种可扩展的GNN,特别适合大规模图。它通过采样固定数量的邻居来降低计算复杂度,更新公式为:
hv(k)=σ(W(k)⋅CONCAT(hv(k−1),AGGREGATE({ hu(k−1)∣u∈S(v)})))h_v^{(k)} = \sigma \left( W^{(k)} \cdot \text{CONCAT} \left( h_v^{(k-1)}, \text{AGGREGATE} \left( \{ h_u^{(k-1)} \mid u \in \mathcal{S}(v) \} \right) \right) \right)hv(k)=σ(W(k)⋅CONCAT(hv(k−1),AGGREGATE({ hu(k−1)∣u∈S(v)})))
- S(v)\mathcal{S}(v)S(v):从 N(v)\mathcal{N}(v)N(v) 中采样出的固定大小邻居子集。
- AGGREGATE\text{AGGREGATE}AGGREGATE:可以是均值、LSTM、池化(如max-pooling)等。
- CONCAT\text{CONCAT}CONCAT:将节点自身表示和聚合后的邻居表示拼接。
GraphSAGE支持归纳学习(inductive learning),可以在训练后对未见过的节点进行预测,适用于动态图或增量学习场景。
4.4 图注意力网络(GAT)
图注意力网络(Graph Attention Network, GAT) 引入了注意力机制,动态学习邻居的重要性。更新公式为:
hv(k)=σ(∑u∈N(v)∪{ v}αvuW(k)hu(k−1))h_v^{(k)} = \sigma \left( \sum_{u \in \mathcal{N}(v) \cup \{v\}} \alpha_{vu} W^{(k)} h_u^{(k-1)} \right)hv(k)=σ(∑u∈N(v)∪{ v}αvuW(k)hu(k−1))
- αvu\alpha_{vu}αvu:注意力系数,通过以下公式计算:
αvu=exp(LeakyReLU(aT[Whv(k−1)∣∣Whu(k−1)]))∑w∈N(v)∪{ v}exp(LeakyReLU(aT[Whv(k−1)∣∣Whw(k−1)]))\alpha_{vu} = \frac{\exp \left( \text{LeakyReLU} \left( a^T [ W h_v^{(k-1)} || W h_u^{(k-1)} ] \right) \right)}{\sum_{w \in \mathcal{N}(v) \cup \{v\}} \exp \left( \text{LeakyReLU} \left( a^T [ W h_v^{(k-1)} || W h_w^{(k-1)} ] \right) \right)}αvu=∑w∈N(v)∪{ v}exp(LeakyReLU(aT[Whv(k−1)∣∣Whw(k−1)]))

最低0.47元/天 解锁文章
8096

被折叠的 条评论
为什么被折叠?



