5. 广义视角下的 GNN 框架

  • GNN 层的本质为:消息(Message) + 聚合(Aggregation)。在这一视角下的有许多不同的实例:GCNGraphSAGEGAT等,下面我们将着重讲解这三个不同的实例。

GNN 的总体框架分别包括:1)消息 与 2)聚合,也就是一个网络层中的操作。

3)层与层之间的连接

4)图增广(Graph augmentation) 与 5)学习目标(Learning Object)

下面我们一部分一部分进行分析。


1)消息(Message)

图网络中的message函数可以通过下式进行表示:

m u ( l ) = MSG ⁡ ( l ) ( h u ( l − 1 ) ) \mathbf{m}_{u}^{(l)}=\operatorname{MSG}^{(l)}\left(\mathbf{h}_{u}^{(l-1)}\right) mu(l)=MSG(l)(hu(l1))

主要想法是:每个节点将创建一条消息,稍后再发送给其他节点。

最简单的message函数是线性变换:

m u ( l ) = W ( l ) h u ( l − 1 ) \mathbf{m}_{u}^{(l)}=\mathbf{W}^{(l)} \mathbf{h}_{u}^{(l-1)} mu(l)=W(l)hu(l1)

其通过将节点特征 h u ( l − 1 ) \mathbf{h}_{u}^{(l-1)} hu(l1) 乘以权重矩阵 W ( l ) \mathbf{W}^{(l)} W(l),得到变换之后的message。


2)聚合(Aggregation)

每个节点,假设当前节点为 v v v都将从其邻居节点 N ( v ) N(v) N(v)中聚合信息

h v ( l ) = A G G ( l ) ( { m u ( l ) , u ∈ N ( v ) } ) \mathbf{h}_{v}^{(l)}=\mathrm{AGG}^{(l)}\left(\left\{\mathbf{m}_{u}^{(l)}, u \in N(v)\right\}\right) hv(l)=AGG(l)({mu(l),uN(v)})

聚合函数可以选取:求和 Sum ⁡ ( ⋅ ) \operatorname{Sum}(\cdot) Sum(), Mean ⁡ ( ⋅ ) \operatorname{Mean}(\cdot) Mean() Max ⁡ ( ⋅ ) \operatorname{Max}(\cdot) Max() 函数。

但这样直接聚合邻居节点会有一个问题:自身节点本身的信息会被遗失。
因此,在聚合操作时,我们考虑自身信息与邻居信息,首先分别进行一次变换,转为对应的message。

而后再通过拼接(Concatenation)的方式来将自身节点与邻居节点汇总的信息进行聚合。

h v ( l ) = CONCAT ⁡ ( AGG ⁡ ( { m u ( l ) , u ∈ N ( v ) } ) , m v ( i ) ) \mathbf{h}_{v}^{(l)}=\operatorname{CONCAT}\left(\operatorname{AGG}\left(\left\{\mathbf{m}_{u}^{(l)}, u \in N(v)\right\}\right), \mathbf{m}_{v}^{(i)}\right) hv(l)=CONCAT(AGG({mu(l),uN(v)}),mv(i))

在经过了聚合之后通常需要再进行一次非线性激活层 σ ( ⋅ ) \sigma(\cdot) σ(),通常为: ReLU ⁡ ( ⋅ ) , Sigmoid ⁡ ( ⋅ ) , ⋯ \operatorname{ReLU}(\cdot), \operatorname{Sigmoid}(\cdot), \cdots ReLU(),Sigmoid(),

后面以这种广义视角,分别单独介绍三种网络中的信息与聚合结构。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐