DGL 消息传递机制详解

DGL 核心 — 消息传递

 

DGL中的消息传递,大家通常知其然不知所以然。在看完GCN的公式后,会出现这样的疑问: 矩阵运算在哪 ?D波浪和A波浪在哪 ?

GCN公式: https://www.cnblogs.com/denny402/p/10917820.html

 

下文详细解释了这个背后的机制:

 

DGL 的核心为消息传递机制(message passing),主要分为消息函数 (message function)和汇聚函数(reduce function)。如下图所示:

DGL 消息传递机制详解_第1张图片

  • 消息函数(message function):传递消息的目的是将节点计算时需要的信息传递给它,因此对每条边来说,每个源节点将会将自身的Embedding(e.src.data)和边的Embedding(edge.data)传递到目的节点;对于每个目的节点来说,它可能会受到多个源节点传过来的消息,它会将这些消息存储在"邮箱"中。

  • 汇聚函数(reduce function):汇聚函数的目的是根据邻居传过来的消息更新跟新自身节点Embedding,对每个节点来说,它先从邮箱(v.mailbox['m'])中汇聚消息函数所传递过来的消息(message),并清空邮箱(v.mailbox['m'])内消息;然后该节点结合汇聚后的结果和该节点原Embedding,更新节点Embedding。

 

更新:  message函数的参数是边,包括源节点,目标节点的特征信息,处理完的数据放置到节点的mailbox中。  聚合函数reduce_function或  apply_node函数作用于节点本身,即传入的参数是节点信息和节点的邮箱信息。

原始出处: https://mp.weixin.qq.com/s?__biz=MzIyNjM2MzQyNg==&mid=2247544576&idx=2&sn=bb912ea385f319b708658dcadbeb4f01&chksm=e873fe4ddf04775b5d64889a3e1ed7350159b527a094c07f2c4fb3b96eabf0ff773bb1f8609d&scene=178&cur_album_id=1600877474559639556#rd

你可能感兴趣的:(图神经网络,自然语言处理,深度学习)