图(Graph)和 图神经网络(Graph Neural Networks, GNN)

1. 什么是图和图神经网络?

图的定义

图(Graph)是一种表示实体及其关系的数据结构,数学上定义为 G=(V,E)G = (V, E)G=(V,E),其中:

  • VVV:节点集合,表示实体(如用户、分子中的原子、知识图谱中的实体)。
  • E⊆V×VE \subseteq V \times VEV×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}^FxvRF,表示节点的属性;边也可以有特征 euve_{uv}euv,表示关系的属性。

图神经网络(GNN)

图神经网络(Graph Neural Networks, GNN) 是一类专门设计用于处理图结构数据的神经网络。GNN通过利用图的拓扑结构(节点和边的连接关系),学习节点、边或整个图的表示(embedding),用于下游任务,如:

  • 节点分类:预测节点的标签(如社交网络中用户的兴趣)。
  • 边预测:预测节点间是否存在边(如推荐系统中的用户-物品交互)。
  • 图分类:对整个图进行分类(如化学分子是否具有毒性)。
  • 图生成:生成新的图结构(如分子设计)。

GNN的核心优势在于,它能够捕获图的非欧几里得结构,而传统深度学习模型(如CNN、RNN)主要处理规则的网格或序列数据。


2. 为什么需要GNN?

图数据在现实世界中无处不在(如社交网络、分子结构、知识图谱),但处理图数据面临以下挑战:

  1. 非规则结构:图的拓扑结构不规则,无法直接用固定大小的矩阵或张量表示。
  2. 局部与全局信息:节点的属性不仅取决于自身,还与邻居甚至整个图的结构相关。
  3. 动态性和异构性:图可能随时间变化,或包含多种类型的节点和边。
  4. 大规模性:现实世界的图(如社交网络)可能包含数亿节点和边,计算复杂度高。

传统方法(如基于手工特征的机器学习或简单的MLP)无法有效建模图的拓扑结构,而GNN通过以下方式解决了这些问题:

  • 邻居聚合:通过消息传递机制,从邻居节点收集信息,捕获局部和全局结构。
  • 参数共享:对所有节点使用相同的权重,减少参数量,提高泛化能力。
  • 端到端学习:直接从图数据中学习表示,无需手动特征工程。
  • 可扩展性:通过采样或子图训练,处理大规模图。

3. GNN的核心思想

GNN的核心是消息传递(Message Passing),通过迭代地聚合邻居节点的信息来更新每个节点的表示。消息传递的过程可以分解为以下步骤:

  1. 消息生成(Message Generation)

    • 对于节点 vvv,从其邻居 u∈N(v)u \in \mathcal{N}(v)uN(v)(邻居集合)生成消息。
    • 消息通常是邻居的特征 huh_uhu 或隐藏表示,通过线性变换、神经网络或其他函数生成。
  2. 消息聚合(Aggregation)

    • 将所有邻居的消息聚合成一个固定大小的向量。
    • 常见的聚合函数包括求和(sum)、均值(mean)、最大值(max)、注意力机制等。
  3. 节点更新(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(k1),AGGREGATE(k)({ hu(k1)uN(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)=uN(v)M(k)(hv(k1),hu(k1),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(k1),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)=σ(uN(v){ v}dvdu 1hu(k1)W(k))

  • dv,dud_v, d_udv,du:节点 vvvuuu 的度(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(k1),AGGREGATE({ hu(k1)uS(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)=σ(uN(v){ v}αvuW(k)hu(k1))

  • α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=wN(v){ v}exp(LeakyReLU(aT[Whv(k1)∣∣Whw(k1)]))

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱看烟花的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值