异构图-GTN(Graph Transformer Networks)

上一节的HAN表示异构图的Attention Network,通过手动设置Meta-path,然后聚合不同Meta-path下的节点attention,学到节点最终的表示。但是这个方法是手动选择Meta-path的,因此可能无法捕获每个问题的所有有意义的关系。同样,元路径的选择也会显著影响性能

而Graph Transformer Networks是自动聚合Meta-path,同时以端到端的学习方式转换图上的节点表示形式。

几个概念

  • τ v \tau ^v τv:节点的类型
  • τ e \tau^e τe:边的类型
  • ACM数据集包含:Paper(3025),Author(5835),Subject(56)个类型, τ v = 3 , τ e = { P A , A P , P S , S P } \tau^v=3,\tau^e = \{PA, AP, PS, SP\} τv=3τe={ PA,AP,PS,SP},需要注意的是Author和Subject之间没有边的连接, 所以没有AS和SA的关系。
  • { A k } k K = 1 , K = ∣ τ e ∣ \{A_k\}^K_k=1, K = |\tau^e| { Ak}kK=1,K=τe:邻接矩阵,例如Paper与Author的邻接矩阵的大小是 3025 × 5835 3025 \times 5835 3025×5835,而Paper与Subject的邻接矩阵的大小是 3025 × 56 3025 \times 56 3025×56,因此这两个邻接矩阵的shape大小不同。为了把shape统一到一起,需要将节点组合在一起,形成统一的一个邻接矩阵。如下图所示蓝色的部分就是PA的邻接矩阵,其余的地方数据为0,表示没有边的连接

在这里插入图片描述

  • 特征矩阵: 每个Paper都有自己的特征,例如Paper1 = [1,0,0,0,1,1,0,....,0,0],Paper2=[1,1,0,1,0,1,0,.....,0,0],而Author的特征是将对应的Paper特征拼在一起,例如Author1 = [Paper1, Paper2]=[1,1,0,1,0,1,0,....,0,0],同理Subject也是将对应的Paper拼在一起,例如Subject1 = [Paper1, Paper3] = [1,1,0,1,1,1,0...,0,0]。需要注意的是,这里并不一定是要拼接在一起,可以做均值Pooling、或者max pooling、或者求和,可以根据自己的任务来选择。

GTN如何组合多元的Meta-path的

已知 τ e = { P A , A P , P S , S P } \tau^e=\{PA,AP,PS,SP\} τe={ PA,AP,PS,SP},想得到PAP这个Meta-path下,所形成的Paper和Paper之间的邻接矩阵,那么就可以做 A d j P A ∗ A d j A P Adj_{PA} * Adj_{AP} AdjPAAdjAP,也就是meta-path= { P A P } = { P A , A P } = A d j P A ∗ A d j A P \{PAP\}=\{PA, AP\}=Adj_{PA} * Adj_{AP} { PAP}={ PA,AP}=AdjPAAdjAP,矩阵的相乘相当于节点的转移,通过A节点得到P节点之间的连接关系。

反之,如果meta-path= { P A P } = { P A , P A } = A d j P A ∗ A d j P A \{PAP\}=\{PA, PA\}=Adj_{PA} * Adj_{PA} { PAP}={ PA,PA}=AdjPAAdjPA,这样是没有一个具体的物理意义,同理 { P A , P S } , { A P , S P } = N a n \{PA,PS\},\{AP,SP\}=Nan { PA,PS},{ AP,SP}=Nan,(在邻接矩阵上相乘得到0矩阵)。

meta-path= { A P A } = { A P , A P } = A d j A P ∗ A d j A P = A A \{APA\}=\{AP, AP\}=Adj_{AP} * Adj_{AP}={AA} { APA}={ AP,AP}=AdjAPAdjAP=AA得到的和Paper无关,因为我们的任务是做Paper的分类,对结果没有影响。

算法流程

在这里插入图片描述
矩阵A表示多种Meta-path下的邻接矩阵,利用可学习的参数 w ϕ 1 w_\phi^1 wϕ1做softmax,得到的向量,与矩阵A相乘

例如: τ e = { t 1 , t 2 , t 3 , t 4 } \tau^e=\{t_1,t_2, t_3,t_4\} τe={ t1,t2,t3,t4},有四个邻接矩阵 A = { A 1 , A 2 , A 3 , A 4 } A = \{A_1, A_2,A_3,A_4\} A={ A1,A2,A3,A4},创建四个可学习的参数 W ϕ 1 = { α 1 1 , α 2 1 , α 3 1 , α 4 1 } , W ϕ 2 = { α 1 2 , α 2 2 , α 3 2 , α 4 2 } W_\phi^1=\{\alpha_1^1, \alpha_2^1,\alpha_3^1,\alpha_4^1\},W_\phi^2=\{\alpha_1^2, \alpha_2^2,\alpha_3^2,\alpha_4^2\} Wϕ1={ α11,α21,α31,α41},Wϕ2={ α12,α22,α32,α42},然后将 W ϕ 1 W_\phi^1 Wϕ1 W ϕ 2 W_\phi^2 Wϕ2做一次softmax,然后与邻接矩阵相乘,得到 Q 1 = α 1 1 ∗ A 1 + α 2 1 ∗ A 2 + α 3 1 ∗ A 3 + α 4 1 ∗ A 4 Q_1=\alpha_1^1 * A_1 + \alpha_2^1 * A_2 + \alpha_3^1 * A_3+\alpha_4^1 * A_4 Q1=α11A1+α21A2+α31A3+α41A4相当于对A矩阵进行了一次加权求和,同理得到 Q 2 Q_2 Q2矩阵,然后将 Q 1 Q_1 Q1 Q 2 Q_2 Q2相乘的到 A 1 = Q 1 ∗ Q 2 A^1 = Q_1 * Q_2 A1=Q1Q2 A 1 A_1 A1相当于聚合了一次Meta-path之后的到的邻接矩阵,也就是上面讲的meta-path= { P A P } = { P A , P A } = A d j P A ∗ A d j P A \{PAP\}=\{PA, PA\}=Adj_{PA} * Adj_{PA} { PAP}={ PA,PA}=AdjPAAdjPA

如果要学习任意长度的Meta-path,那么可以学习多个channel,这样就学习出多个Meta-path下的聚合方式,
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/vincent_duan/article/details/120508654