通用框架

MPNN(Message Passing Neural Network)

消息传递神经网络

  • MPNN包含两个阶段:

    • 消息传递阶段

      Message Passing

      • 消息传递阶段运行 T T T个时间步,包含两个子函数:消息函数 M t M_t Mt和节点更新函数 U t U_t Ut。使用消息 m v t m_v^t mvt,隐状态 h v t h_v^t hvt的更新函数如下:

        m v t + 1 = ∑ w ∈ N v M t ( h v t , h w t , e v w ) \bm{ m_v^{t+1} = \sum\limits_{w \in N_v}M_t(h_v^t, h_w^t, e_{vw}) } mvt+1=wNvMt(hvt,hwt,evw)

        h v t + 1 = U t ( h v t , m v t + 1 ) \bm{ h_v^{t+1} = U_t(h_v^t, m_v^{t+1}) } hvt+1=Ut(hvt,mvt+1)
        其中, e v w e_{vw} evw表示从 v v v w w w的边的特征

    • 读出阶段

      Readout

      • Readout阶段使用读出函数R来计算全图的表示:

        y ^ = R ( { h v T ∣ v ∈ G } ) \bm{ \hat{y} = R(\{h_v^T | v \in G\}) } y^=R({hvTvG})

  • MPNN可以通过设置不同的消息函数、节点更新函数和读出函数来变成不同的模型

NLNN(Non-Local Neural Network,NLNN)

非局部神经网络

  • NLNN利用DNN捕捉远程依赖关系,NLNN的非局部运算会针对特定位置计算所有位置的的特征加权总和,位置既可以是时间维度上的位置,也可以是空间维度上的位置。NLNN可以看作是多种“Self-Attention”机制的统一。

  • 泛化的非局部运算的一般定义如下:

    h i ′ = 1 C ( h ) ∑ ∀ j f ( h i , h j ) g ( h j ) \bm{ h_i^{'} = \frac{1}{C(h)}\sum\limits_{\forall j}f(h_i, h_j)g(h_j) } hi=C(h)1jf(hi,hj)g(hj)
    其中,i是目标位置,j的选择应枚举所有可能的位置。 f ( h i , h j ) f(h_i, h_j) f(hi,hj)用于计算位置i和j之间的Attention Score。 g ( h j ) g(h_j) g(hj)表示输入 h j h_j hj的变换,因子 1 C ( h ) \frac{1}{C(h)} C(h)1用于将结果归一化

    • 函数g的选择

      • 线性变换

        g ( h j ) = W g h j \bm{ g(h_j) = W_gh_j } g(hj)=Wghj

    • 函数f的选择

      • 高斯函数

        f ( h i , h j ) = e h i T h j \bm{ f(h_i, h_j) = e^{h_i^Th_j} } f(hi,hj)=ehiThj
        其中, h i T h j h_i^Th_j hiThj是点积相似度,且有 C ( h ) = ∑ ∀ j f ( h i , h j ) C(h) = \sum\limits_{\forall j}f(h_i, h_j) C(h)=jf(hi,hj)

      • 嵌入高斯函数

        Self-Attention是嵌入高斯函数的一个特例

        f ( h i , h j ) = e θ ( h i ) T Φ ( h j ) \bm{ f(h_i, h_j) = e^{θ(h_i)^TΦ(h_j)} } f(hi,hj)=eθ(hi)TΦ(hj)
        其中, θ ( h i ) = W θ h i θ(h_i) = W_θh_i θ(hi)=Wθhi Φ ( h j ) = W Φ h j Φ(h_j) = W_Φh_j Φ(hj)=WΦhj,且 C ( h ) = ∑ ∀ j f ( h i , h j ) C(h) = \sum\limits_{\forall j}f(h_i, h_j) C(h)=jf(hi,hj)

      • 点积函数

        f ( h i , h j ) = θ ( h i ) T Φ ( h j ) \bm{ f(h_i, h_j) = θ(h_i)^TΦ(h_j) } f(hi,hj)=θ(hi)TΦ(hj)
        其中, C ( h ) = N C(h) = N C(h)=N N N N表示 h h h中的位置个数

      • 拼接函数

        f ( h i , h j ) = R e L U ( w f T [ θ ( h i ) ∣ ∣ Φ ( h j ) ] ) \bm{ f(h_i, h_j) = ReLU(w_f^T[θ(h_i) || Φ(h_j)]) } f(hi,hj)=ReLU(wfT[θ(hi)∣∣Φ(hj)])
        其中, w f w_f wf是将向量投影到标量的权重向量, 有 C ( h ) = N 有C(h) = N C(h)=N

      • 非局部块(Non-local Neural Networks)

        Paper : Non-local Neural Networks

        z i = W z h i ′ + h i \bm{ z_i = W_zh_i^{'} + h_i } zi=Wzhi+hi

GN

Paper : Relational inductive biases, deep learning, and graph network

GN,囊括并扩展了各种GNN,以及MPNN和NLNN

  • GN块包含3个更新函数Φ,以及3个聚合函数ρ:

e k ′ = ϕ e ( e k , v r k , v s k , u ) e ‾ i ′ = ρ e → v ( E i ′ ) v i ′ = ϕ v ( e ‾ i ′ , v i , u ) e ‾ ′ = ρ e → u ( E ′ ) u ′ = ϕ u ( e ‾ ′ , v ‾ ′ , u ) v ‾ ′ = ρ v → u ( V ′ ) \begin{array}{lr} \mathbf{e}_{k}^{\prime}=\phi^{e}\left(\mathbf{e}_{k}, \mathbf{v}_{r_{k}}, \mathbf{v}_{s_{k}}, \mathbf{u}\right) & \overline{\mathbf{e}}_{i}^{\prime}=\rho^{e \rightarrow v}\left(E_{i}^{\prime}\right) \\ \mathbf{v}_{i}^{\prime}=\phi^{v}\left(\overline{\mathbf{e}}_{i}^{\prime}, \mathbf{v}_{i}, \mathbf{u}\right) & \overline{\mathbf{e}}^{\prime}=\rho^{e \rightarrow u}\left(E^{\prime}\right) \\ \mathbf{u}^{\prime}=\phi^{u}\left(\overline{\mathbf{e}}^{\prime}, \overline{\mathbf{v}}^{\prime}, \mathbf{u}\right) & \overline{\mathbf{v}}^{\prime}=\rho^{v \rightarrow u}\left(V^{\prime}\right) \end{array} ek=ϕe(ek,vrk,vsk,u)vi=ϕv(ei,vi,u)u=ϕu(e,v,u)ei=ρev(Ei)e=ρeu(E)v=ρvu(V)

Logo

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

更多推荐