【图神经网络导论】之第9章模型变体(刘知远)
第9章不同图类型的模型变体
第4章介绍的基础GNN模型"被用于处理无向图,这些图包含具有标签的节点,是最简单的图。然而,在现实世界中还有更多类型的图,建模这些图结构需要不同的GNN结构。本章研究针对不同类型的图设计的图模型结构。
9.1 有向图
无向图的第一个变体是有向图(directed graph)。一条无向边可以被视作两条有向边,它表明两个节点之间存在关系。然而,有向边蕴含更多信息。举例来说,知识图谱中的头实体指向尾实体的关系就是一条有向边,它说明应该区别对待两个方向上的传播。
 关于有向图,这里介绍稠密图传播模型(dense graph propagation, DGP)1。对于每个目标节点,它都从其所有后代节点和前驱节点那里接收信息,并分别使用两个权重矩阵W。和 W。来学习更精确的结构信息。该模型的传播过程如下:
  
      
       
        
        
          H 
         
        
          = 
         
        
          σ 
         
        
          ( 
         
         
         
           D 
          
         
           a 
          
          
          
            ? 
           
          
            1 
           
          
         
         
         
           A 
          
         
           a 
          
         
        
          σ 
         
        
          ( 
         
         
         
           D 
          
         
           d 
          
          
          
            ? 
           
          
            1 
           
          
         
         
         
           A 
          
         
           d 
          
         
        
          X 
         
         
         
           Θ 
          
         
           d 
          
         
        
          ) 
         
         
         
           Θ 
          
         
           d 
          
         
        
          ) 
         
         
         
         
        
          ( 
         
        
          9.1 
         
        
          ) 
         
        
       
         H =σ(D^{-1}_a A_aσ(D_d^{-1}A_dX\Theta_d )\Theta_d)\quad\quad\quad (9.1) 
        
       
     H=σ(Da?1?Aa?σ(Dd?1?Ad?XΘd?)Θd?)(9.1)
其中, 
     
      
       
        
        
          D 
         
        
          a 
         
         
         
           ? 
          
         
           1 
          
         
        
        
        
          A 
         
        
          a 
         
        
       
      
        D_a^{-1}A_a 
       
      
    Da?1?Aa?和 
     
      
       
        
        
          D 
         
        
          d 
         
         
         
           ? 
          
         
           1 
          
         
        
        
        
          A 
         
        
          d 
         
        
       
      
        D_d^{-1}A_d 
       
      
    Dd?1?Ad?分别是前驱节点和后代节点对应的归一化邻接矩阵。由于稠密图中各相邻节点的影响因距离不同而不同,因此DGP采用一种针对相邻节点的权重分配方式,可以使不同距离的节点产生不同的影响力。在关于DGP的论文中,作者使用 
     
      
       
        
        
          w 
         
        
          a 
         
        
       
         = 
        
       
         { 
        
        
        
          w 
         
        
          i 
         
        
          a 
         
        
        
        
          } 
         
         
         
           i 
          
         
           = 
          
         
           0 
          
         
        
          K 
         
        
       
      
        w^a=\{w^a_i\}^K_{i=0} 
       
      
    wa={wia?}i=0K?和 
     
      
       
        
        
          w 
         
        
          d 
         
        
       
         = 
        
       
         { 
        
        
        
          w 
         
        
          i 
         
        
          d 
         
        
        
        
          } 
         
         
         
           i 
          
         
           = 
          
         
           0 
          
         
        
          K 
         
        
       
      
        w^d=\{w^d_i\}^K_{i=0} 
       
      
    wd={wid?}i=0K?分别表示来自前驱节点和后代节点的权重。因此,加权传播过程变为:
  
     
      
       
       
         H 
        
       
         = 
        
       
         σ 
        
       
         ( 
        
        
        
          ∑ 
         
         
         
           k 
          
         
           = 
          
         
           0 
          
         
        
          K 
         
        
       
      
        H=\sigma \Big(\sum^K_{k=0} 
       
      
    H=σ(∑k=0K? 
      
       
        
         
         
           α 
          
         
           k 
          
         
           a 
          
         
         
         
           D 
          
         
           k 
          
          
           
           
             a 
            
           
             ? 
            
           
          
            1 
           
          
         
         
         
           A 
          
         
           k 
          
         
           a 
          
         
        
       
         \alpha^a_k D^{a^-1}_k A^a_k 
        
       
     αka?Dka?1?Aka?  
       
        
         
         
           σ 
          
         
           ( 
          
          
          
            ∑ 
           
           
           
             k 
            
           
             = 
            
           
             0 
            
           
          
            K 
           
          
          
          
            α 
           
          
            k 
           
          
            d 
           
          
          
          
            D 
           
          
            k 
           
           
            
            
              d 
             
            
              ? 
             
            
           
             1 
            
           
          
          
          
            A 
           
          
            k 
           
          
            d 
           
          
         
        
          \sigma\big(\sum^K_{k=0}\alpha^d_kD^{d^-1}_kA^d_k 
         
        
      σ(∑k=0K?αkd?Dkd?1?Akd? 
       
        
         
         
           X 
          
          
          
            Θ 
           
          
            d 
           
          
         
        
          X\Theta_d 
         
        
      XΘd? 
       
        
         
         
           ) 
          
         
        
          \big) 
         
        
      ) 
      
       
        
         
         
           Θ 
          
         
           a 
          
         
        
       
         \Theta_a 
        
       
     Θa? 
     
      
       
       
         ) 
        
       
      
        \Big) 
       
      
    ) (9.2)
 其中, 
     
      
       
        
        
          A 
         
        
          k 
         
        
          a 
         
        
       
      
        A^a_k 
       
      
    Aka?是邻接矩阵中包含前驱节点k跳边的子矩阵, 
     
      
       
        
        
          A 
         
        
          k 
         
        
          d 
         
        
       
      
        A^d_k 
       
      
    Akd?则是邻接矩阵中包含子节点传播k跳的子矩阵。 
     
      
       
        
        
          D 
         
        
          k 
         
        
          a 
         
        
       
      
        D^a_k 
       
      
    Dka?和 
     
      
       
        
        
          D 
         
        
          k 
         
        
          d 
         
        
       
      
        D^d_k 
       
      
    Dkd?为对应的度矩阵。
9.2 异构图
第二个变体是异构图(heterogeneous graph)。
 异构图可以表示为有向图 
      
       
        
        
          G 
         
        
          = 
         
        
          { 
         
        
          V 
         
        
          , 
         
        
          E 
         
        
          } 
         
        
       
         G=\{\mathcal{V},\mathcal{E}\} 
        
       
     G={V,E},其节点类型映射为 
     
      
       
       
         ? 
        
       
         : 
        
       
         V 
        
       
         → 
        
       
         A 
        
       
      
        \phi:\mathcal{V}→A 
       
      
    ?:V→A,关系类型映射为 
     
      
       
       
         ψ 
        
       
         : 
        
       
         E 
        
       
         → 
        
       
         R 
        
       
      
        ψ:\mathcal{E}→R 
       
      
    ψ:E→R。其中, 
     
      
       
       
         V 
        
       
      
        \mathcal{V} 
       
      
    V是节点集合, 
     
      
       
       
         E 
        
       
      
        \mathcal{E} 
       
      
    E是边集合,A是节点类型集合,R是关系类型集合,且有|A|>1或者|R|>1成立。
 要处理异构图,最简单的方法是将节点类型转化为独热编码(one- hot)的特征向量,并将其拼接在节点的原有特征上。GraphInception模型2在异构图的传播过程中引入了元路径(meta-path)的概念,基于元路径的方法是处理异构图的一种常用方法。
异构图 G = { V , E } G=\{\mathcal{V},\mathcal{E}\} G={V,E}中的元路径 P \mathcal{P} P 是这样一条路径: A → R 1 A 2 → R 2 A 3.. → R L A L + 1 A \stackrel{R1}→A2\stackrel{R_2}→A3.. \stackrel{R_L} \rightarrow A_{L+1} A→R1A2→R2?A3..→RL?AL+1?,其中, L + 1 L+1 L+1是路径的长度。
节点A1经过路径R1到达节点A2,节点A2通过路径R2到达节点A3,…
有了元路径,就可以根据类型和距离将相邻节点分类,进而将异构图分解为一组同构图,因此异构图也被称为多通道网络。GraphInception只考虑单一节点类的分类问题,我们将目标节点类表示为 
     
      
       
        
        
          V 
         
        
          1 
         
        
       
      
        \mathcal{V}_1 
       
      
    V1?。有了元路径集合 
     
      
       
       
         S 
        
       
         = 
        
       
         { 
        
        
         
         
           P 
          
         
           1 
          
         
        
          , 
         
        
          . 
         
        
          . 
         
        
          . 
         
        
          , 
         
         
         
           P 
          
          
          
            ∣ 
           
          
            S 
           
          
            ∣ 
           
          
         
        
       
         } 
        
       
      
        \mathcal{S}=\{\mathcal{P_1,...,P_{|S|}}\} 
       
      
    S={P1?,...,P∣S∣?},就可以将异构图转化为如下的多通道网络G’:
  
     
      
       
        
        
          G 
         
        
          ′ 
         
        
       
         = 
        
       
         { 
        
        
        
          G 
         
        
          l 
         
        
          ′ 
         
        
       
         ∣ 
        
        
        
          G 
         
        
          l 
         
        
          ′ 
         
        
       
         , 
        
       
         = 
        
       
         ( 
        
        
         
         
           V 
          
         
           1 
          
         
        
          , 
         
         
         
           E 
          
          
          
            1 
           
          
            , 
           
          
            l 
           
          
         
        
       
         , 
        
       
         ) 
        
       
         , 
        
       
         l 
        
       
         = 
        
       
         1 
        
       
         , 
        
       
         . 
        
       
         . 
        
       
         , 
        
       
         s 
        
       
         ∣ 
        
       
         } 
        
       
      
        G' =\{G'_{\mathcal{l}}|G'_l,=(\mathcal{V_1,E_{1,l}},),l=1,..,s|\} 
       
      
    G′={Gl′?∣Gl′?,=(V1?,E1,l?,),l=1,..,s∣}(9.3)
其中, V 1 , ? ? , V m \mathcal{V_1,\cdots,V_m} V1?,?,Vm?代表由m种类型的节点组成的集合, V 1 \mathcal{V_1} V1?代表目标节点类型的节点集合, E 1 l ? V 1 × V 1 \mathcal{E_{1l}} \subseteq \mathcal{V_1\times V_1} E1l??V1?×V1?表示遵循元路径 P \mathcal{P} P,模式的边实例,且两端节点都属于 V 1 \mathcal{V_1} V1?集合。对每一组相邻节点,GraphInception模型都将其视为一个同构图中的子图进行传播,最终将不同的同构图得到的表示进行拼接,从而得到共同的节点表示。和一般的模型使用拉普拉斯矩阵不同, GraphInception 模型使用转移概率矩阵 P P P作为傅里叶变换的基。
2019年,Xiao Wang等人3提出了??异构图注意力网络HAN,该模型使用节点层面和语义层面的注意力机制。首先,对于每条元路径, HAN模型都在节点层面进行注意力聚合,以学习特定节点嵌入。接着,基于这种针对元路径的表示,该模型再做语义层面的注意力学习,以提供更全面的节点表示。这样一来,该模型就可以同时考虑节点重要性和元路径重要性。
针对社交网络中的事件分类任务,Hao Peng等人4 在2019年提出了??PP-GCN模型,用于为社交网络中的事件分类。对于事件图中的两个事件,该模型首先通过不同的元路径连接为其计算出加权参数,然后构造一个带权重的邻接矩阵来标注社交事件实例,并在其上使用GCN模型来学习事件的表示。
 为了降低训练成本,Xia Chen 等人5在2019 年提出了?? ActiveHNE,并在异构图学习中引入了主动学习(activelearning)。基于不确定性和代表性,ActiveHNE在训练集中选择最重要的节点获取标签。这一步骤显著地降低了查询成本,同时在真实数据集上获得了非常好的效果。
9.3 带有边信息的图
在无向图的第三个变体中,每条边都带有额外信息,例如权重、边的类型等。本节介绍两种方法来处理这一类图。
第一种方法是将图转换为二部图(bipartite graph)。在这个过程中,原始图的边变为节点,一条边被拆分为两条新边,这意味着在边节点与起始节点和结束节点之间分别有一条新边。这种图变换被称为Levi 图变换6, 7。
 给定图 
     
      
       
        
        
          G 
         
        
          = 
         
        
          { 
         
        
          V 
         
        
          , 
         
        
          E 
         
        
          , 
         
        
        
        
          L 
         
        
          V 
         
        
       
         , 
        
        
        
          L 
         
        
          E 
         
        
       
         } 
        
       
      
        \mathcal{G=\{V,E,}L_{\mathcal{V}},L_{\mathcal{E}}\} 
       
      
    G={V,E,LV?,LE?},其中 
     
      
       
        
        
          L 
         
        
          V 
         
        
       
      
        L_{\mathcal{V}} 
       
      
    LV?和L_{\mathcal{E}}:分别为节点集合和边集合的标签,它对应的 Levi 图为 
     
      
       
        
         
         
           G 
          
         
           ′ 
          
         
        
          = 
         
        
          { 
         
         
         
           V 
          
         
           ′ 
          
         
        
          , 
         
         
         
           E 
          
         
           ′ 
          
         
        
          , 
         
        
        
        
          L 
         
         
         
           V 
          
         
           ′ 
          
         
        
       
         , 
        
        
        
          L 
         
         
         
           E 
          
         
           ′ 
          
         
        
       
         } 
        
       
      
        \mathcal{G'=\{V',E',}L_{\mathcal{V'}},L_{\mathcal{E'}}\} 
       
      
    G′={V′,E′,LV′?,LE′?},其中 
     
      
       
        
        
          V 
         
        
          ′ 
         
        
       
         = 
        
       
         V 
        
       
         ∪ 
        
       
         E 
        
       
      
        \mathcal{V'=V\cup E} 
       
      
    V′=V∪E,  
     
      
       
        
        
          L 
         
         
         
           V 
          
         
           ′ 
          
         
        
       
         = 
        
        
        
          L 
         
        
          v 
         
        
       
         ∪ 
        
        
        
          L 
         
        
          E 
         
        
       
      
        L_{\mathcal{V'}}=L_{\mathcal{v} }\cup L_{\mathcal{E}} 
       
      
    LV′?=Lv?∪LE? ,且 
     
      
       
        
        
          L 
         
        
          E 
         
        
       
         = 
        
       
         ? 
        
       
      
        L_{\mathcal{E}}=? 
       
      
    LE?=?。新的边集合E’包含了原有节点和新加入节点之间的边,且Levi图的边是没有标签的。
在??G2S网络中,Daniel Beck等人8 将AMR图转换为 Levi图(如图9-1所示),并在图上应用门控图神经网络。G2S的编码器使用以下邻域聚合函数:
 
     
      
       
        
        
          h 
         
        
          v 
         
        
          l 
         
        
       
         = 
        
       
         σ 
        
       
         ( 
        
        
        
          1 
         
         
         
           ∣ 
          
          
          
            N 
           
          
            V 
           
          
         
           ∣ 
          
         
        
        
        
          ∑ 
         
         
         
           u 
          
         
           ∈ 
          
          
          
            N 
           
          
            V 
           
          
         
        
       
      
        h_v^l=\sigma \Big(\frac{1}{|N_{V}|}\sum_{u\in N_V} 
       
      
    hvl?=σ(∣NV?∣1?∑u∈NV?? 
      
       
        
         
         
           W 
          
         
           r 
          
         
        
       
         W_r 
        
       
     Wr? 
       
        
         
         
           ( 
          
          
          
            r 
           
          
            v 
           
          
            ′ 
           
          
         
           ⊙ 
          
          
          
            h 
           
          
            u 
           
           
           
             t 
            
           
             ? 
            
           
             1 
            
           
          
         
           ) 
          
         
        
          (r'_v \odot h_u^{t-1}) 
         
        
      (rv′?⊙hut?1?) 
      
       
        
        
          + 
         
         
         
           b 
          
         
           r 
          
         
        
       
         +b_r 
        
       
     +br?  
     
      
       
       
         ) 
        
       
      
        \Big) 
       
      
    ) (9.4)
 其中, 
     
      
       
        
        
          r 
         
        
          v 
         
        
          t 
         
        
       
      
        r^t_v 
       
      
    rvt?是GRU 中对节点v在第 
     
      
       
       
         t 
        
       
      
        t 
       
      
    t层的重置门, 
     
      
       
        
        
          W 
         
        
          r 
         
        
       
      
        W_r 
       
      
    Wr?和  
     
      
       
        
        
          b 
         
        
          r 
         
        
       
      
        b_r 
       
      
    br?,为不同类型的边(关系)的传播参数,σ是非线性激活函数,⊙是阿达马积。
 
 第二种方法是在传播过程中,对不同类型的边使用不同的权重矩阵。针对关系种类较多的情况,R-GCN9引入了两种正则化方法来减少建模关系所需的参数量。这两种正则化方法分别是基分解(basis- decomposition)和块对角分解(block-diagonal-decomposition )。
使用基分解,每一个关系的权重  
     
      
       
        
        
          W 
         
        
          r 
         
        
       
      
        W_r 
       
      
    Wr?为:
  
     
      
       
        
        
          W 
         
        
          r 
         
        
       
         = 
        
        
        
          ∑ 
         
         
         
           b 
          
         
           = 
          
         
           1 
          
         
        
          B 
         
        
        
        
          a 
         
         
         
           r 
          
         
           b 
          
         
        
        
        
          V 
         
        
          b 
         
        
       
      
        W_r=\sum_{b=1}^B a_{rb}V_b 
       
      
    Wr?=∑b=1B?arb?Vb? (9.5)
 其中, 
     
      
       
        
        
          W 
         
        
          r 
         
        
       
      
        W_r 
       
      
    Wr?被表示为共享的基矩阵 
     
      
       
        
        
          V 
         
        
          b 
         
        
       
         ∈ 
        
        
        
          R 
         
         
          
          
            d 
           
           
           
             i 
            
           
             n 
            
           
          
         
           × 
          
          
          
            d 
           
           
           
             o 
            
           
             u 
            
           
             t 
            
           
          
         
        
       
      
        V_b ∈ R^{d_{in}\times d_{out}} 
       
      
    Vb?∈Rdin?×dout? 的加权和(权重为 
     
      
       
        
        
          a 
         
         
         
           r 
          
         
           b 
          
         
        
       
      
        a_{rb} 
       
      
    arb?)。
在块对角分解中,R-GCN通过针对一个低维矩阵集合直接求和来定义每一个 
     
      
       
        
        
          W 
         
        
          r 
         
        
       
      
        W_r 
       
      
    Wr?,这比第一种分解需要更多参数:
  
     
      
       
        
        
          W 
         
        
          r 
         
        
       
         = 
        
        
        
          ⊕ 
         
         
         
           b 
          
         
           = 
          
         
           1 
          
         
        
          B 
         
        
        
        
          Q 
         
         
         
           b 
          
         
           r 
          
         
        
       
      
        W_r=\oplus_{b=1}^B Q_{br} 
       
      
    Wr?=⊕b=1B?Qbr? (9.6)
于是, w r = d i a g ( Q 1 r , ? ? , Q B r ) w_r=diag(Q_{1r},\cdots,Q_{Br}) wr?=diag(Q1r?,?,QBr?)由 Q b r ∈ R ( d ( l + 1 ) / B ) × ( d ( l ) / B ) Q_{br} \in R^{(d^{(l+1)}/ B)\times (d^{(l)}/B)} Qbr?∈R(d(l+1)/B)×(d(l)/B)组成。块对角分解限制了权重矩阵的稀疏度,并隐含这样一个假设:隐向量可以被分为更小的部分。通过这两种方式,R-GCN使用不同的参数矩阵表示不同的关系,并在知识图谱链接预测任务上取得了性能提升。
9.4 动态图
时空预测(spatial-temporal forecasting)是一种很重要的任务,可以对应现实世界中的交通预测、人体动作识别和气候预测。某些预测问题可以建模为针对动态图的预测,动态图包含静态的图结构和动态的输入信号。图9-2展示了基于现有图状态预测未来图状态的任务。
为了捕获时间和空间两方面的信息,DCRNN10 和 STGCN11使用独立的模块分别学习空间信息和时间信息。
??DCRNN将图中的流建模为扩散过程,扩散层将空间信息进行传播并更新节点的隐状态。在时序依赖上,DCRNN使用RNN结构,不同之处在于将其中的矩阵相乘过程替换为扩散卷积过程。整个模型是基于“序列对序列”架构构建的,并能实现多步预测。
??STGCN包含多个时空卷积块,每一个时空卷积块都使用两个时序门控卷积层,其间是一个空间图卷积层。时空卷积块内部还使用了残差连接和瓶颈策略。
与以上两个模型不同的是,Structural-RNN12 和 ST-GCN13同时采集空间信息和时间信息。这两个模型使用时序连接拓展静态图,并在拓展后的图上使用GNN。
??Structural-RNN在同一个节点的前后时间点之间建立连接,然后对节点和边分别构建RNN(nodeRNN和edgeRNN),两部分 RNN构成二部图并针对每个节点进行传播。
 ??ST-GCN将所有时间节点的图堆叠起来,以构建一个时空图。模型将图分割,为每一个节点都指定一个权重向量,然后直接在带权重的时空图上进行图卷积。
 ??Graph WaveNet14考虑了一个更困难的场景:静态图的邻接矩阵不能如实反映真正的空间依赖信息,即缺失信息或信息有误。这种情况是普遍存在的,因为节点之间的距离不一定能反映逻辑上的联系。因此, Zonghan Wu 等人[85]提出了一种自适应的邻接矩阵,这种矩阵在学习过程中获得,并使用一个由时间卷积网络(temporal convolution network, TCN)和GCN结合而成的框架来解决这一问题。
9.5 多维图
到目前为止,我们已经考虑了带有二元边的图。然而在现实世界的图中,节点很可能通过多种关系相连,从而构成多维图(multi- dimensional graph,也叫作multi-view graph 或multi-graph),如图9-3所示。举例来说,YouTube视频网站用户的交互过程包含订阅、分享、评论等15。考虑到这些关系并非天然独立,直接应用处理单维图(single- dimensional graph)的模型可能不是最好的做法。
对多维图的早期研究主要集中于解决社团发现和聚类问题。2011年,Michele Berlingerio 等人16给出了多维图上“社团”的定义并提供了两种指标来描述多维图上社团的密度。2013年,Evangelos E. Papalexakis 等人17 提出了两种具体的算法MultiCLUS和GraphFuse,用于寻找全部维度上的社团。
 2018年,Yiwei Sun等人18提出了一种多维图表示学习算法,该算法主要关注多维图中的节点嵌入学习。他们首先基于一种图上的软聚类算法–图分解聚类(graph factorization clustering,GFC)提出了一种单维图表示学习算法,接着进一步将该方法扩展到多维图上。这两种方法在两种设定下均取得了较好的结果。
 最近,有人提出了一些特殊的GCN变体,以解决多维图问题。 Yao Ma 等人19提出了??mGCN模型。该模型为同一个节点在不同维度上的表示使用不同的嵌入向量,每个节点的这些不同的嵌入向量由该节点对应的一个通用向量通过在不同维度的映射转换而来。他们设计了一种 GNN聚合方式,可以同时考虑相同维度上的不同节点的交互和不同维度上的同一个节点的交互。2019年,Muhammad Raza Khan和Joshua E.Blumenstock20提出了??Multi-GCN算法。该算法通过将多维图合并成单维图来进行后续的学习。降维过程分为两步:首先通过子空间分析(subspace analysis)将多维图合并,然后通过流形学习(manifold learning)对图进行剪切。降维过程<结束后,在单维图上应用 GCN便可以进行学习。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!