消息传递神经网络(Message Passing Neural Networks, MPNN)
- 一、引言
- 二、消息传递框架概述
- 1.消息传递阶段
- (1)消息生成与传播-message
- (2)消息聚合-aggregate
- (3)消息更新-update
- (4)消息传递机制小结
- 2.读出阶段
- 三、参考资料
一、引言
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
函数。
三、参考资料
- PyG中关于MPNN的理解
- Neural Message Passing for Quantum Chemistry