异构图:节点类别的数量加边的类别的数量大于等于2,也就是包含不同类型节点和连接的异构图。下面的图就是一个异构图,包含电影、演员、导演。
这里介绍异构图的一个图算法Heterogeneous Graph Attention Network
定义异构图:节点的类别 + 边的类别 数量大于2
Meta-path 元路径就是连接两个对象的复合关系,是一种广泛使用的捕获语义的结构
例如上面的异构图中包含三类节点,演员、电影、导演。
(c)
图定义了两个Meta-path:movie-actor-movie
和movie-director-movie
如果我们选择movie-actor-movie
这样一条Meta-path,那么m1-a1-m2
就满足这个Meta-path关系,那么久可以说m1
和m2
就是互为邻居节点。此外m1-a3-m3
也满足这个Meta-path,那么m1
和m3
也是互为邻居节点。同理m1-a1-m1
也满足。综上,m1
的邻居节点包括m1,m2,m3
HAN 最主要的两个步骤
1. 节点级别的attention
我们定义了一个meta-path:movie-director-movie
, 那么就可以形成下面的这个同构图:
那么就可以根据Terminator
的邻居节点Terminator2
和Titanic
,进行聚合,学习到Terminator
的特征表示。那么就学习到节点级别的attention。
如果Meta-path定义为movie-year-movie
那么形成下面的同构图:
同理可以根据邻居节点,可以求得这个Meta-path下Terminator
的节点的特征。
2. 语义级别的attention
语义级别的attention旨在了解每个元路径的重要性,并为其分配适当的权重。
根据上面两个不同的Meta-path,可以得到两个不同的Terminator
的特征,而我们的最终目标是要得到一个Terminator
的特征,那么将这两个特征进行加权求和,这样的方式就是语义级别的方式。
上图中利用Meta-path形成一个同构图。
节点级别attention流程
计算流程:
- 公式二:eijΦ=attnode(hi′,hj′;Φ)e_{ij}^\Phi=att_{node}(h_i^\prime,h_j^\prime;\Phi)eijΦ=attnode(hi′,hj′;Φ)表示连接节点与节点之间的特征值,其中Φ\PhiΦ表示在这个Meta-path下。在图中表示
1节点
与周围的邻居节点的特征,也就是求e11Φ0e_{11}^{\Phi _0}e11Φ0、e12Φ0e_{12}^{\Phi _0}e12Φ0、e13Φ0e_{13}^{\Phi _0}e13Φ0、e16Φ0e_{16}^{\Phi _0}e16Φ0 - 公式三:对上面求得的e11Φ0e_{11}^{\Phi _0}e11Φ0、e12Φ0e_{12}^{\Phi _0}e12Φ0、e13Φ0e_{13}^{\Phi _0}e13Φ0、e16Φ0e_{16}^{\Phi _0}e16Φ0进行归一化操作得到,这里的方法与GAT的方法如出一辙,学习到attention系数,得到α11Φ0\alpha_{11}^{\Phi _0}α11Φ0、α12Φ0\alpha_{12}^{\Phi _0}α12Φ0、α13Φ0\alpha_{13}^{\Phi _0}α13Φ0、α16Φ0\alpha_{16}^{\Phi _0}α16Φ0
- 公式四:将上面得到的attention系数与
1节点
周围邻居的特征进行加权求和,然后经过激活函数,得到1节点
的特征表示。 即z1Φ0=σ(α11Φ0⋅x10+α12Φ0⋅x20+α13Φ0⋅x30+α16Φ0⋅x60)z_1^{\Phi_0}=\sigma(\alpha_{11}^{\Phi_0} \cdot x_1^0 +\alpha_{12}^{\Phi_0} \cdot x_2^0 + \alpha_{13}^{\Phi_0} \cdot x_3^0+\alpha_{16}^{\Phi_0} \cdot x_6^0)z1Φ0=σ(α11Φ0⋅x10+α12Φ0⋅x20+α13Φ0⋅x30+α16Φ0⋅x60) - 然后求其他节点的特征表示,最终就可以得到在Meta-path Φ0\Phi_0Φ0下的节点特征:ZΦ={z1Φ0,z2Φ0,z3Φ0...}Z_\Phi=\{z_1^{\Phi_0},z_2^{\Phi_0},z_3^{\Phi_0}...\}ZΦ={z1Φ0,z2Φ0,z3Φ0...}
- 然后得到多个Meta-path下的特征{ZΦ0,ZΦ1,ZΦ2...}\{Z_{\Phi_0},Z_{\Phi_1},Z_{\Phi_2}...\}{ZΦ0,ZΦ1,ZΦ2...}
语义级别attention流程
- 公式七:选择一个Meta-path下的所有节点,这里选择Φ0\Phi_0Φ0,将每个节点经过全连接层W⋅ziΦ0+bW \cdot z_i^{\Phi_0} +bW⋅ziΦ0+b,然后经过激活函数tanhtanhtanh,然后乘以一个可学习的参数qTq^TqT,这样就得到每一个节点在Meta-pathΦ0\Phi_0Φ0下的一个标量,然后对所有节点进行加权求和,并除以节点数量。得到在Φ0\Phi_0Φ0这个Meta-path下的对应的一个系数wΦ0w_{\Phi_0}wΦ0
举例:在Φ0\Phi_0Φ0下,1节点
的特征z1Φ0=[0.1,0.2,0.1,0.5,0.8]T,z2Φ0=[0.3,0.1,0.2,0.4,0.9]Tz_1^{\Phi_0}=[0.1,0.2,0.1,0.5,0.8]^T,z_2^{\Phi_0}=[0.3,0.1, 0.2,0.4,0.9]^Tz1Φ0=[0.1,0.2,0.1,0.5,0.8]T,z2Φ0=[0.3,0.1,0.2,0.4,0.9]T ,将z1Φ0z_1^{\Phi_0}z1Φ0经过tanh(W⋅z+b)tanh(W \cdot z+b)tanh(W⋅z+b)得到[0.12,0.25,0.8]T[0.12, 0.25, 0.8]^T[0.12,0.25,0.8]T,然后乘以可学习的参数qT=[0.5,1.2,0.8]q^T=[0.5, 1.2, 0.8]qT=[0.5,1.2,0.8]得到这个1节点
的标量qT⋅z1Φ0=0.73q^T \cdot z_1^{\Phi_0}=0.73qT⋅z1Φ0=0.73, 同理得到2节点
的标量−0.5-0.5−0.5,然后求和取平均WΦ0=avg(0.73+(−0.5))W_{\Phi_0}=avg(0.73+(-0.5))WΦ0=avg(0.73+(−0.5)),这个得到的WΦ0W_{\Phi_0}WΦ0就是Meta-path Φ0\Phi_0Φ0所对应到的attention的值。
2. 公式八:将所有的Meta-path进行计算得到WΦ0,WΦ1,WΦ2...W_{\Phi_0},W_{\Phi_1},W_{\Phi_2}...WΦ0,WΦ1,WΦ2...,然后进行softmax操作进行归一化
3. 公式九:将节点与上述的softmax结果进行加权求和,得到节点最终对应的embedding。即:Z1=βΦ0Z1Φ0+βΦ1Z1Φ1Z^1=\beta_{\Phi_0}Z_1^{\Phi_0} + \beta_{\Phi_1}Z_1^{\Phi_1}Z1=βΦ0Z1Φ0+βΦ1Z1Φ1