消息传递神经网络(Message Passing Neural Networks, MPNN)

消息传递神经网络(Message Passing Neural Networks, MPNN)

一、引言

GNN中的消息传递机制是借助PyG、DGL之类的图神经网络框架来编写自己的消息传播GNN的基础,只有对其了解比较深刻,才能更好的设计自己的GNN模型。

二、消息传递框架概述

消息传递神经网络是Gilmer等人在Neural Message Passing for Quantum Chemistry中提出来的从空域角度定义GNN的范式(框架)。原文以量子化学为例,根据原子的性质(对应节点特征)和分子的结构(对应边特征)预测了13种物理化学性质。

MPNN的前向传播包括两个阶段,第一个阶段称为 message passing(消息传递)阶段,第二个阶段称为readout(读出)阶段。

1.消息传递阶段

假设 X i ( k − 1 ) ∈ R F X_i^{(k-1)} \in \R^F Xi(k−1)∈RF表示节点i在第k-1层的特征, e j , i ∈ R D e_{j,i}\in \R^D ej,i∈RD表示节点j到节点i的边上的特征,则消息传递机制可以用如下公式来描述:
X i ( k ) = γ ( k ) ( X i ( k − 1 ) , ⨁ j ∈ N ( i ) ϕ ( k ) ( X i ( k − 1 ) , X j ( k − 1 ) , e j , i ) ) (1) X_i^{(k)} = \gamma^{(k)} \left(X_i^{(k-1)},\bigoplus {j\in {\mathcal {N(i)}}} \phi^{(k)} \left( X_i^{(k-1)}, X_j^{(k-1) }, e{j,i} \right) \right) \tag {1} Xi(k)=γ(k) Xi(k−1),j∈N(i)⨁ϕ(k)(Xi(k−1),Xj(k−1),ej,i) (1)

在消息传递机制中,主要分为三大步骤:消息生成(message)、消息聚合(aggregate)、消息更新(update)。
message passing阶段会执行多次信息传递过程。

(1)消息生成与传播-message

在本阶段中,每个节点将生成自己的消息,然后向自己的邻居节点"传播"自己的消息,也就是公式(1)中的:
ϕ ( k ) ( X i ( k − 1 ) , X j ( k − 1 ) , e j , i ) \phi^{(k)} \left( X_i^{(k-1)}, X_j^{(k-1) }, e_{j,i} \right) ϕ(k)(Xi(k−1),Xj(k−1),ej,i)

其中, ϕ ( k ) \phi^{(k)} ϕ(k)可微函数,例如MLP。在消息生成的过程中,可能会用到:

  • 节点自己当前的特征 ( X i ( k − 1 ) ) (X_i^{(k-1)}) (Xi(k−1))
  • 节点邻居当前的特征 ( X j ( k − 1 ) ) (X_j^{(k-1)}) (Xj(k−1))
  • 节点自己当前的特征 ( e j , i ) (e_{j,i}) (ej,i)

当然上述三者并不都是必须的,具体使用什么来生成节点的消息取决于GNN的构建者。

(2)消息聚合-aggregate

在本阶段,每个节点会聚合来自邻居的消息,也就是公式(1)中的:

⨁ j ∈ N ( i ) ( M e s s a g e ) \bigoplus _{j\in {\mathcal {N(i)}}} \left( Message \right) j∈N(i)⨁(Message)

其中Message指代消息生成与传播中每个节点的消息, N ( i ) \mathcal {N(i)} N(i)表示节点i的领域, ⨁ \bigoplus ⨁表示可微(可导)的、置换不变(permutation invariant)函数。置换不变指聚合邻居的消息的结果与邻居的聚合顺序无关(结点的输入顺序不改变最终结果,这也是为了保证MPNN对图的同构有不变性),常见的包括sum、max、min、mean等。

(3)消息更新-update

在本阶段,每个节点利用聚合自邻居节点的消息生成自己的消息,也就是公式(1)中的:

γ ( k ) ( X i ( k − 1 ) , N e i g h b o r M s g ) \gamma^{(k)} \left(X_i^{(k-1)},NeighborMsg\right) γ(k)(Xi(k−1),NeighborMsg)

其中NeighborMsg指代消息聚合中每个节点聚合自邻居的消息, γ ( k ) \gamma^{(k)} γ(k)也表示可微函数,例如MLP。

(4)消息传递机制小结

经过前面的介绍可知:空域角度定义的GNN间的不同之处便在于它们关于消息生成、消息聚合和消息更新的实现不同。

总的来说,基于消息传递图神经网络框架设计的图神经网络模型,就是通过设计不同的消息生成、消息聚合和消息更新函数实现的,从而用不同的方式聚合自身和邻居特征。

2.读出阶段

readout阶段计算基于整张图的特征向量,可以用如下公式来描述:
y ^ = R ( { X v k ∣ v ∈ G } ) (2) \hat{y} = R\left(\lbrace X_v^k | v \in G \rbrace\right) \tag{2} y^=R({Xvk∣v∈G})(2)

其中, y ^ \hat{y} y^是最终的输出向量, R R R是读出函数,这个函数是可微的、满足置换不变性的。

在设计基于消息传递图神经网络框架设计图神经网络模型的时候可以根据自己的需要设计这个readout函数。

三、参考资料

相关推荐
山北雨夜漫步1 分钟前
机器学习 Day14 XGboost(极端梯度提升树)算法
人工智能·算法·机器学习
basketball6162 分钟前
Python torchvision.transforms 下常用图像处理方法
开发语言·图像处理·python
兔子蟹子6 分钟前
Java集合框架解析
java·windows·python
宁酱醇10 分钟前
各种各样的bug合集
开发语言·笔记·python·gitlab·bug
yzx99101312 分钟前
集成学习实际案例
人工智能·机器学习·集成学习
CodeJourney.14 分钟前
DeepSeek与WPS的动态数据可视化图表构建
数据库·人工智能·信息可视化
jndingxin14 分钟前
OpenCV 图形API(62)特征检测-----在图像中查找最显著的角点函数goodFeaturesToTrack()
人工智能·opencv·计算机视觉
努力犯错17 分钟前
昆仑万维开源SkyReels-V2,解锁无限时长电影级创作,总分83.9%登顶V-Bench榜单
大数据·人工智能·语言模型·开源
谷晓光18 分钟前
Python 中 `r` 前缀:字符串处理的“防转义利器”
开发语言·python
姚毛毛19 分钟前
Windows上,10分钟构建一个本地知识库
python·ai·rag