第2章:消息传递范式¶
消息传递是实现GNN的一种通用框架和编程范式。它从聚合与更新的角度归纳总结了多种GNN模型的实现。
消息传递范式¶
假设节点 \(v\) 上的的特征为 \(x_v\in\mathbb{R}^{d_1}\),边 \(({u}, {v})\) 上的特征为 \(w_{e}\in\mathbb{R}^{d_2}\)。 消息传递范式 定义了以下逐节点和边上的计算:
\[\text{边上计算: } m_{e}^{(t+1)} = \phi \left( x_v^{(t)}, x_u^{(t)}, w_{e}^{(t)} \right) , ({u}, {v},{e}) \in \mathcal{E}.\]
\[\text{点上计算: } x_v^{(t+1)} = \psi \left(x_v^{(t)}, \rho\left(\left\lbrace m_{e}^{(t+1)} : ({u}, {v},{e}) \in \mathcal{E} \right\rbrace \right) \right).\]
在上面的等式中, \(\phi\) 是定义在每条边上的消息函数,它通过将边上特征与其两端节点的特征相结合来生成消息。 聚合函数 \(\rho\) 会聚合节点接受到的消息。 更新函数 \(\psi\) 会结合聚合后的消息和节点本身的特征来更新节点的特征。