消息传递神经网络(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函数。

三、参考资料

相关推荐
SCBAiotAigc6 小时前
Chrome的cookie编辑插件EditThisCookie
人工智能·chrome·python·ubuntu
啊阿狸不会拉杆6 小时前
《数字图像处理》实验6-图像分割方法
图像处理·人工智能·算法·计算机视觉·数字图像处理
不惑_6 小时前
通俗理解什么是神经网络
人工智能·深度学习·神经网络
愚公搬代码6 小时前
【愚公系列】《扣子开发 AI Agent 智能体应用》014-基于大模型的企业知识库(知识库的理论基础 RAG)
人工智能
Nwiliuyw6 小时前
Isaac Gym的WARNING: Forcing cpu pipeline. GPU pipeline disabled无法启用问题可能是个幌子骗了你
人工智能·经验分享·学习
dagouaofei6 小时前
运营述职 PPT 工具横评:效率与呈现谁更优
python·powerpoint
GAOJ_K6 小时前
旋转花键如何保障精密设备长期运行高精度?
人工智能·科技·自动化·制造
神算大模型APi--天枢6466 小时前
合规落地加速期,大模型后端开发与部署的实战指南
大数据·前端·人工智能·架构·硬件架构
CaiGuoHui16 小时前
利用大型语言模型(LLM)实现Verilog设计中的功能缺陷定位
人工智能·深度学习·语言模型·自然语言处理
先做个垃圾出来………6 小时前
Python测试桩工具
java·开发语言·python