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

三、参考资料

相关推荐
Work(沉淀版)22 分钟前
DAY 40
人工智能·深度学习·机器学习
蓦然回首却已人去楼空1 小时前
Build a Large Language Model (From Scratch) 序章
人工智能·语言模型·自然语言处理
CM莫问1 小时前
<论文>(微软)WINA:用于加速大语言模型推理的权重感知神经元激活
人工智能·算法·语言模型·自然语言处理·大模型·推理加速
拾忆-eleven1 小时前
NLP学习路线图(二十六):自注意力机制
人工智能·深度学习
MYH5162 小时前
在NLP文本处理中,将字符映射到阿拉伯数字(构建词汇表vocab)的核心目的和意义
人工智能·深度学习·自然语言处理
程序员的世界你不懂2 小时前
Appium+python自动化(八)- 认识Appium- 下章
python·appium·自动化
要努力啊啊啊2 小时前
KV Cache:大语言模型推理加速的核心机制详解
人工智能·语言模型·自然语言处理
恸流失3 小时前
DJango项目
后端·python·django
Julyyyyyyyyyyy4 小时前
【软件测试】web自动化:Pycharm+Selenium+Firefox(一)
python·selenium·pycharm·自动化
mzlogin4 小时前
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
人工智能