异构图:节点类别的数量加边的类别的数量大于等于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流程
计算流程:
- 公式二:
e
i
j
Φ
=
a
t
t
n
o
d
e
(
h
i
′
,
h
j
′
;
Φ
)
e_{ij}^\Phi=att_{node}(h_i^\prime,h_j^\prime;\Phi)
eijΦ=attnode(hi′,hj′;Φ)表示连接节点与节点之间的特征值,其中
Φ
\Phi
Φ表示在这个Meta-path下。在图中表示
1节点
与周围的邻居节点的特征,也就是求 e 11 Φ 0 e_{11}^{\Phi _0} e11Φ0、 e 12 Φ 0 e_{12}^{\Phi _0} e12Φ0、 e 13 Φ 0 e_{13}^{\Phi _0} e13Φ0、 e 16 Φ 0 e_{16}^{\Phi _0} e16Φ0 - 公式三:对上面求得的 e 11 Φ 0 e_{11}^{\Phi _0} e11Φ0、 e 12 Φ 0 e_{12}^{\Phi _0} e12Φ0、 e 13 Φ 0 e_{13}^{\Phi _0} e13Φ0、 e 16 Φ 0 e_{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节点
的特征表示。 即 z 1 Φ 0 = σ ( α 11 Φ 0 ⋅ x 1 0 + α 12 Φ 0 ⋅ x 2 0 + α 13 Φ 0 ⋅ x 3 0 + α 16 Φ 0 ⋅ x 6 0 ) 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 Φ = { z 1 Φ 0 , z 2 Φ 0 , z 3 Φ 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 ⋅ z i Φ 0 + b W \cdot z_i^{\Phi_0} +b W⋅ziΦ0+b,然后经过激活函数 t a n h tanh tanh,然后乘以一个可学习的参数 q T q^T qT,这样就得到每一个节点在Meta-path Φ 0 \Phi_0 Φ0下的一个标量,然后对所有节点进行加权求和,并除以节点数量。得到在 Φ 0 \Phi_0 Φ0这个Meta-path下的对应的一个系数 w Φ 0 w_{\Phi_0} wΦ0
举例:在
Φ
0
\Phi_0
Φ0下,1节点
的特征
z
1
Φ
0
=
[
0.1
,
0.2
,
0.1
,
0.5
,
0.8
]
T
,
z
2
Φ
0
=
[
0.3
,
0.1
,
0.2
,
0.4
,
0.9
]
T
z_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]^T
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]T ,将
z
1
Φ
0
z_1^{\Phi_0}
z1Φ0经过
t
a
n
h
(
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,然后乘以可学习的参数
q
T
=
[
0.5
,
1.2
,
0.8
]
q^T=[0.5, 1.2, 0.8]
qT=[0.5,1.2,0.8]得到这个1节点
的标量
q
T
⋅
z
1
Φ
0
=
0.73
q^T \cdot z_1^{\Phi_0}=0.73
qT⋅z1Φ0=0.73, 同理得到2节点
的标量
−
0.5
-0.5
−0.5,然后求和取平均
W
Φ
0
=
a
v
g
(
0.73
+
(
−
0.5
)
)
W_{\Phi_0}=avg(0.73+(-0.5))
WΦ0=avg(0.73+(−0.5)),这个得到的
W
Φ
0
W_{\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。即:
Z
1
=
β
Φ
0
Z
1
Φ
0
+
β
Φ
1
Z
1
Φ
1
Z^1=\beta_{\Phi_0}Z_1^{\Phi_0} + \beta_{\Phi_1}Z_1^{\Phi_1}
Z1=βΦ0Z1Φ0+βΦ1Z1Φ1