一、简介
依赖于图结构的图神经网络(GNN)面临的一些问题,例如:suspended animation problem和over-smoothing problem。而且由于图本质上是相互连接的,阻碍了图上的并行运算。论文提出了图预训练模型Graph-BERT,该模型只基于注意力机制,且不依赖图的连接。
二、符号
- 小写字母表示标量 ( e.g., x ) (\text{e.g.,}x) (e.g.,x),小写黑体表示列向量 ( e.g., x ) (\text{e.g.,}\textbf{x}) (e.g.,x),大写黑体表示矩阵 ( e.g., X ) (\text{e.g.,}\textbf{X}) (e.g.,X),大写手写字体表示集合或者高阶张量 ( e.g., X ) (\text{e.g.,}\mathcal{X}) (e.g.,X)。
- 给定矩阵 X \textbf{X} X,其中 X ( i , : ) \textbf{X}(i,:) X(i,:)和 X ( : , j ) \textbf{X}(:,j) X(:,j)表示 i i i行和 j j j列, X ( i , j ) \textbf{X}(i,j) X(i,j)表示第 i i i行第 j j j列的元素。
- X T \textbf{X}^T XT和 x T \textbf{x}^T xT表示矩阵和向量的转置。
- ∥ x ∥ p = ( ∑ i ∣ x ( i ) ∣ p ) 1 p \Vert \textbf{x}\Vert_p=(\sum_{i}|\textbf{x}(i)|^p)^{\frac{1}{p}} ∥x∥p=(∑i∣x(i)∣p)p1表示向量 x \textbf{x} x的 L p L_p Lp范数。
- ∥ X ∥ F = ( ∑ i , j ∣ X ( i , j ) 2 ∣ ) 1 2 \Vert\textbf{X}\Vert_F=(\sum_{i,j}|\textbf{X}(i,j)^2|)^{\frac{1}{2}} ∥X∥F=(∑i,j∣X(i,j)2∣)21表示矩阵的 Frobenius \text{Frobenius} Frobenius范数。
- x ⊗ y \textbf{x}\otimes \textbf{y} x⊗y表示向量对应元素相乘后的向量,即 element-wise product \text{element-wise product} element-wise product。
- x ⊔ y \textbf{x}\sqcup\textbf{y} x⊔y表示向量拼接。
三、无连接子图采样
1.图的定义
图(graph)可以表示为5元组
G
=
(
V
,
E
,
w
,
x
,
y
)
G=(\mathcal{V},\mathcal{E},w,x,y)
G=(V,E,w,x,y)
其中,
V
\mathcal{V}
V和
E
\mathcal{E}
E表示节点集合和边集合;
w
:
E
→
R
w:\mathcal{E}\rightarrow\mathbb{R}
w:E→R表示边到权重的映射;
x
:
V
→
X
x:\mathcal{V}\rightarrow\mathcal{X}
x:V→X表示节点到对应特征的映射;
y
:
V
→
Y
y:\mathcal{V}\rightarrow\mathcal{Y}
y:V→Y表示节点到标签的映射。
2.基本符合和假定
a. 给定无权图 G G G,对于所有的边 ∀ ( v i , v j ) ∈ E \forall(v_i,v_j)\in\mathcal{E} ∀(vi,vj)∈E,则 w ( v i , v j ) = 1 w(v_i,v_j)=1 w(vi,vj)=1;否则, ∀ ( v i , v j ) ∈ V × V ∖ E \forall(v_i,v_j)\in\mathcal{V}\times\mathcal{V}\setminus\mathcal{E} ∀(vi,vj)∈V×V∖E,则 w ( v i , v j ) = 0 w(v_i,v_j)=0 w(vi,vj)=0。(即两节点间存在边,则权重为1;否则,权重为0)
b. X \mathcal{X} X和 Y \mathcal{Y} Y表示特征空间和标签空间,论文中为了简化表示则令 X = R d x \mathcal{X}=\mathbb{R}^{d_x} X=Rdx和 Y = R d y \mathcal{Y}=\mathbb{R}^{d_y} Y=Rdy。
c. 给定一个节点 v i v_i vi,其特征和标签可以表示为 x i = x ( v i ) ∈ R d x \textbf{x}_i=x(v_i)\in\mathbb{R}^{d_x} xi=x(vi)∈Rdx和 y i = y ( v i ) ∈ R d y \textbf{y}_i=y(v_i)\in\mathbb{R}^{d_y} yi=y(vi)∈Rdy。
3.无连接子图采样
Graph-BERT \text{Graph-BERT} Graph-BERT的输入不是完整的图,而是通过采样的无连接子图,这样就可以实现对图的并行化处理。
3.1 亲密度矩阵
论文提出了采样方式主要是基于亲密度矩阵 S ∈ R ∣ V ∣ × ∣ V ∣ \textbf{S}\in\mathbb{R}^{|\mathcal{V}|\times|\mathcal{V}|} S∈R∣V∣×∣V∣,其每个元素 S ( i , j ) \textbf{S}(i,j) S(i,j)表示节点 v i v_i vi和 v j v_j vj的亲密度分数。具体来说,论文使用 PageRank \text{PageRank} PageRank来计算节点间的亲密度。
3.2 节点上下文
给定一个图 G G G和亲密度矩阵 S \textbf{S} S,则节点 v i v_i vi的上下文为集合 Γ ( v i ) = { v j ∣ v j ∈ V ∖ { v i } ∧ S ( i , j ) ≥ θ i } \Gamma(v_i)=\{v_j|v_j\in\mathcal{V}\setminus\{v_i\}\land\textbf{S}(i,j)\geq\theta_i\} Γ(vi)={vj∣vj∈V∖{vi}∧S(i,j)≥θi},其中 θ i \theta_i θi表示节点 v i v_i vi的最小亲密度阈值。(直观来讲, v i v_i vi的上下文就是与其亲密度高于 θ i \theta_i θi的所有节点)
论文中则令 θ i \theta_i θi表示 sorted ( S ( i , : ) ) \text{sorted}(\textbf{S}(i,:)) sorted(S(i,:))的第 k k k个分量。
3.3 针对节点 v i v_i vi的无连接子图采样
令 g i g_i gi表示节点 v i v_i vi对于的采样无连接子图,其可以表示为 g i = ( V i , ∅ ) g_i=(\mathcal{V}_i,\empty) gi=(Vi,∅),其中节点集合为 V i = { v i } ∪ Γ ( v i ) \mathcal{V}_i=\{v_i\}\cup\Gamma(v_i) Vi={vi}∪Γ(vi)。(直观来说, g i g_i gi中的节点由 v i v_i vi和其上下文组成,而且 g i g_i gi中并没有边)
3.4 在图 G G G上采样
给定图 G G G,针对图中的每个节点进行无连接子图采样得到一个子图集合 G = { g 1 , g 2 , … , g ∣ V ∣ } \mathcal{G}=\{g_1,g_2,\dots,g_{|\mathcal{V}|}\} G={g1,g2,…,g∣V∣}。这样,图 G G G就转换为子图集合 G \mathcal{G} G。如果 G \mathcal{G} G尺度太大,还可以对 G \mathcal{G} G进行采样,例如 B ⊆ G \mathcal{B}\subseteq\mathcal{G} B⊆G。
四、输入节点的Embedding
虽然图中的节之间并没有顺序,但是为了方便模型的输入,仍然会将子图中的节点转换为有序的列表。具体来说,将无连接子图 g i ∈ B g_i\in\mathcal{B} gi∈B中的所有节点 V i \mathcal{V}_i Vi转换为节点链表 [ v i , v i , 1 , … , v i , k ] [v_i,v_{i,1},\dots,v_{i,k}] [vi,vi,1,…,vi,k],对于任意两个节点 ∀ v i , j , v i , m ∈ V i \forall v_{i,j},v_{i,m}\in\mathcal{V}_i ∀vi,j,vi,m∈Vi,若 S ( i , j ) > S ( i , m ) \textbf{S}(i,j)>\textbf{S}(i,m) S(i,j)>S(i,m),则节点 v i , j v_{i,j} vi,j会排在 v i , m v_{i,m} vi,m之前。
1. 节点原始特征Embedding
对于子图
g
i
g_i
gi中的每个节点
v
j
∈
V
i
v_j\in\mathcal{V}_i
vj∈Vi,将原始特征
x
j
\textbf{x}_j
xj转换为新嵌入特征
e
j
(
x
)
=
E
m
b
e
d
(
x
j
)
∈
R
d
h
×
1
\textbf{e}_j^{(x)}=Embed(\textbf{x}_j)\in\mathbb{R}^{d_h\times 1}
ej(x)=Embed(xj)∈Rdh×1
2. Weisfeiler-Lehman绝对角色Embedding
Weisfeiler-Lehman算法可以根据节点在图中的角色来标记节点。更正式来说,对于节点
v
j
∈
V
i
v_j\in\mathcal{V}_i
vj∈Vi的
WL
\text{WL}
WL编码可以表示为
WL
(
v
i
)
∈
N
\text{WL}(v_i)\in\mathbb{N}
WL(vi)∈N,即为每个节点分配一个代表角色的非负整数。使用
Transformer
\text{Transformer}
Transformer中的Position Embedding方法对节点的角色
WL
(
v
i
)
\text{WL}(v_i)
WL(vi)进行嵌入,即
e
j
(
r
)
=
Position-Embed
(
W
L
(
v
j
)
)
=
[
s
i
n
(
W
L
(
v
j
)
1000
0
2
l
d
h
)
,
c
o
s
(
W
L
(
v
j
)
1000
0
2
l
+
1
d
h
)
]
l
=
0
⌊
d
h
2
⌋
\textbf{e}_j^{(r)}=\text{Position-Embed}(WL(v_j))\\=\Big[sin\Big(\frac{WL(v_j)}{10000^{\frac{2l}{d_h}}}\Big),cos\Big(\frac{WL(v_j)}{10000^{\frac{2l+1}{d_h}}}\Big)\Big]_{l=0}^{\lfloor\frac{d_h}{2}\rfloor}
ej(r)=Position-Embed(WL(vj))=[sin(10000dh2lWL(vj)),cos(10000dh2l+1WL(vj))]l=0⌊2dh⌋
其中,
e
j
(
r
)
∈
R
d
h
×
1
\textbf{e}_j^{(r)}\in\mathbb{R}^{d_h\times 1}
ej(r)∈Rdh×1。
3. 基于亲密度的相对位置Embedding
基于Weisfeiler-Lehman算法得到的节点角色是全局性质的,本文使用前面的序列化方式来捕获局部信息。具体来说,将图 g i ∈ B g_i\in\mathcal{B} gi∈B中所有节点转换为序列 [ v i , v i , 1 , … , v i , k ] [v_i,v_{i,1},\dots,v_{i,k}] [vi,vi,1,…,vi,k],基于这个序列为每个节点分配一个位置。其中节点 v i v_i vi的位置为 P ( v i ) = 0 P(v_i)=0 P(vi)=0,节点 v i , 1 v_{i,1} vi,1的位置为 P ( v i , 1 ) = 1 P(v_{i,1})=1 P(vi,1)=1,以此类推。(注:相同的节点在不同子图中的相对位置不同)
基于上面的相对位置,仍然使用
Transformer
\text{Transformer}
Transformer中的
Position-Embed
\text{Position-Embed}
Position-Embed进行相对位置的嵌入
e
j
(
p
)
=
Position-Embed
(
P
(
v
j
)
)
∈
R
d
h
×
1
\textbf{e}_j^{(p)}=\text{Position-Embed}(P(v_j))\in\mathbb{R}^{d_h\times 1}
ej(p)=Position-Embed(P(vj))∈Rdh×1
4. 基于跳数的相对位置Embedding
前面两种位置的嵌入分别是全局和局部的,这个基于跳数的相对位置嵌入可以看做是前面两种位置嵌入的平衡。正式来说,对于子图
g
i
g_i
gi中的任意节点
v
j
∈
V
i
v_j\in\mathcal{V}_i
vj∈Vi,其与节点
v
i
v_i
vi的相对距离为两节点在原始图中的跳数,表示为
H
(
v
j
;
v
i
)
H(v_j;v_i)
H(vj;vi)。将这个相对位置进行嵌入
e
j
(
d
)
=
Position-Embed
(
H
(
v
j
;
v
i
)
)
∈
R
d
h
×
1
\textbf{e}_j^{(d)}=\text{Position-Embed}(H(v_j;v_i))\in\mathbb{R}^{d_h\times 1}
ej(d)=Position-Embed(H(vj;vi))∈Rdh×1
五、Graph-Transformer和Graph-BERT
1. Graph-Transformer \texttt{Graph-Transformer} Graph-Transformer
对于子图
g
i
g_i
gi中的节点
v
j
v_j
vj,其向量表示由上面4中嵌入向量聚合而成,即
h
j
(
0
)
=
Aggregate
(
e
j
(
x
)
,
e
j
(
r
)
,
e
j
(
p
)
,
e
j
(
d
)
)
\textbf{h}_j^{(0)}=\text{Aggregate}(\textbf{e}_j^{(x)},\textbf{e}_j^{(r)},\textbf{e}_j^{(p)},\textbf{e}_j^{(d)})
hj(0)=Aggregate(ej(x),ej(r),ej(p),ej(d))
本文中聚合函数
Aggregate
\text{Aggregate}
Aggregate为向量求和。整个子图
g
i
g_i
gi中的节点会被组织为矩阵
H
(
0
)
=
[
h
i
(
0
)
,
h
i
,
1
(
0
)
,
…
,
h
i
,
k
(
0
)
]
T
∈
R
(
k
+
1
)
×
d
h
\textbf{H}^{(0)}=[\textbf{h}_i^{(0)},\textbf{h}_{i,1}^{(0)},\dots,\textbf{h}_{i,k}^{(0)}]^T\in\mathbb{R}^{(k+1)\times d_{h}}
H(0)=[hi(0),hi,1(0),…,hi,k(0)]T∈R(k+1)×dh
定义一种用于图的
Transformer
\text{Transformer}
Transformer,称为
G-Transformer
\texttt{G-Transformer}
G-Transformer。其原理如下:
{
H
(
l
)
=
G-Transformer
(
H
(
l
−
1
)
)
=
softmax
(
QK
T
d
h
V
+
G-Res
(
H
(
l
−
1
)
,
X
i
)
)
,
\begin{cases} \textbf{H}^{(l)}&=\text{G-Transformer}(\textbf{H}^{(l-1)})\\ & =\text{softmax}\Big(\frac{\textbf{QK}^T}{\sqrt{d_h}}\textbf{V}+\text{G-Res}(\textbf{H}^{(l-1)},\textbf{X}_i)\Big), \end{cases}
{H(l)=G-Transformer(H(l−1))=softmax(dhQKTV+G-Res(H(l−1),Xi)),
Q、K、V
\textbf{Q、K、V}
Q、K、V是基于
H
(
l
−
1
)
\textbf{H}^{(l-1)}
H(l−1)的:
{
Q
=
H
(
l
−
1
)
W
Q
(
l
)
K
=
H
(
l
−
1
)
W
K
(
l
)
V
=
H
(
l
−
1
)
W
V
(
l
)
\begin{cases} \textbf{Q}=\textbf{H}^{(l-1)}\textbf{W}_{Q}^{(l)}\\ \textbf{K}=\textbf{H}^{(l-1)}\textbf{W}_{K}^{(l)}\\ \textbf{V}=\textbf{H}^{(l-1)}\textbf{W}_{V}^{(l)} \end{cases}
⎩⎪⎨⎪⎧Q=H(l−1)WQ(l)K=H(l−1)WK(l)V=H(l−1)WV(l)
上式中,
W
Q
(
l
)
,
W
K
(
l
)
,
W
V
(
l
)
∈
R
d
h
×
d
h
\textbf{W}_{Q}^{(l)},\textbf{W}_{K}^{(l)},\textbf{W}_{V}^{(l)}\in\mathbb{R}^{d_h\times d_h}
WQ(l),WK(l),WV(l)∈Rdh×dh。
其中, G-Res ( H ( l − 1 ) , X i ) \text{G-Res}(\textbf{H}^{(l-1)},\textbf{X}_i) G-Res(H(l−1),Xi)是图残差项,其中 X i ∈ R ( k + 1 ) × d x \textbf{X}_i\in\mathbb{R}^{(k+1)\times d_x} Xi∈R(k+1)×dx是子图 g i g_i gi所有节点的原始特征。
2. Graph-BERT \texttt{Graph-BERT} Graph-BERT
Graph-BERT
\texttt{Graph-BERT}
Graph-BERT是多个
G-Transformer
\texttt{G-Transformer}
G-Transformer堆叠而成,具体来说:
{
H
(
0
)
=
[
h
i
(
0
)
,
h
i
,
1
(
0
)
,
…
,
h
i
,
k
(
0
)
]
T
H
(
l
)
=
G-Transformer
(
H
(
l
−
1
)
)
,
∀
l
∈
{
1
,
2
,
…
,
D
}
z
i
=
Fusion
(
H
(
D
)
)
\begin{cases} \textbf{H}^{(0)}=[\textbf{h}_i^{(0)},\textbf{h}_{i,1}^{(0)},\dots,\textbf{h}_{i,k}^{(0)}]^T \\ \textbf{H}^{(l)}=\text{G-Transformer}(\textbf{H}^{(l-1)}),\forall l\in\{1,2,\dots,D\} \\ \textbf{z}_i=\text{Fusion}(\textbf{H}^{(D)}) \end{cases}
⎩⎪⎨⎪⎧H(0)=[hi(0),hi,1(0),…,hi,k(0)]TH(l)=G-Transformer(H(l−1)),∀l∈{1,2,…,D}zi=Fusion(H(D))
在NLP任务中,Transformer模型的目标是学习所有输入token的表示。本文的
Graph-BERT
\texttt{Graph-BERT}
Graph-BERT目标是获得子图
g
i
g_i
gi中节点
v
i
v_i
vi的表示。函数
Fusion
(
⋅
)
\text{Fusion}(\cdot)
Fusion(⋅)的作用是将子图
g
i
g_i
gi中所有节点的表示进行平均,
z
i
∈
R
d
h
×
1
\textbf{z}_i\in\mathbb{R}^{d_h\times 1}
zi∈Rdh×1是目标节点
v
i
v_i
vi的最终状态。
六、Graph-BERT上的预训练任务
基于模型Graph-BERT,提出了两个预训练任务。
1.节点属性重构(Node Raw Attribute Reconstruction)
针对子图
g
i
g_i
gi中的节点
v
i
v_i
vi,
GRAPH-BERT
\texttt{GRAPH-BERT}
GRAPH-BERT会产生相应的向量表示
z
i
\textbf{z}_i
zi。节点属性重构任务就是,使用
z
i
\textbf{z}_i
zi来恢复节点
v
i
v_i
vi的原始特征,即生成原始特征
x
^
i
=
FC
(
z
i
)
\hat{x}_i=\text{FC}(\textbf{z}_i)
x^i=FC(zi)。定义损失函数来缩小生成原始特征
x
^
i
\hat{x}_i
x^i与真正原始特征
x
i
x_i
xi的差距
l
1
=
1
∣
V
∣
∑
v
i
∈
V
∥
x
i
−
x
^
i
∥
2
\mathcal{l}_1=\frac{1}{|\mathcal{V}|}\sum_{v_i\in\mathcal{V}}\Vert x_i-\hat{x}_i\Vert_2
l1=∣V∣1vi∈V∑∥xi−x^i∥2
2.图结构恢复(Graph Structure Recovery)
为了使模型能够捕获到图的结构信息,本文还设计了图结构恢复任务。对于任意两个节点 v i v_i vi和 v j v_j vj,计算其向量表示的余弦相似度,即 s ^ i , j = z i T z j ∥ z i ∥ ∥ z j ∥ \hat{s}_{i,j}=\frac{z_i^Tz_j}{\Vert z_i\Vert\Vert z_j\Vert} s^i,j=∥zi∥∥zj∥ziTzj。用这个相似度来表示两个节点的连接程度。
计算图 G G G中所有节点间的余弦相似度,并组成相似度矩阵 S ^ ∈ R ∣ V ∣ × ∣ V ∣ \hat{\textbf{S}}\in\mathbb{R}^{|\mathcal{V}|\times|\mathcal{V}|} S^∈R∣V∣×∣V∣,其中 S ^ ( i , j ) = s ^ i , j \hat{\textbf{S}}(i,j)=\hat{s}_{i,j} S^(i,j)=s^i,j。
定义损失函数缩小
S
^
\hat{\textbf{S}}
S^和亲密度矩阵
S
\textbf{S}
S之间的查询
l
2
=
1
∣
V
∣
2
∥
S
−
S
^
∥
F
2
\mathcal{l}_2=\frac{1}{|\mathcal{V}|^2}\Vert \textbf{S}-\hat{\textbf{S}}\Vert^2_F
l2=∣V∣21∥S−S^∥F2
七、模型迁移与微调Graph-BERT
将 Graph-BERT \texttt{Graph-BERT} Graph-BERT应用在节点分类和图聚类任务中。
1. 节点分类
基于节点
v
i
v_i
vi的向量表示
z
i
\textbf{z}_i
zi,计算其分类标签
y
^
i
=
softmax
(
FC
(
z
i
)
)
\hat{y}_i=\text{softmax}(\text{FC}(z_i))
y^i=softmax(FC(zi))。设输入的batch为
T
\mathcal{T}
T,计算交叉熵损失函数
l
n
c
=
∑
v
i
∈
T
∑
m
=
1
d
y
−
y
i
(
m
)
log
y
^
i
(
m
)
\mathcal{l}_{nc}=\sum_{v_i\in\mathcal{T}}\sum_{m=1}^{d_y}-y_i(m)\log \hat{y}_i(m)
lnc=vi∈T∑m=1∑dy−yi(m)logy^i(m)
其中,
d
y
d_y
dy是节点的类别数量。
2.图聚类
假设存在
l
\mathcal{l}
l个簇
C
=
{
C
1
,
C
2
,
…
,
C
l
}
\mathcal{C}=\{\mathcal{C}_1,\mathcal{C}_2,\dots,\mathcal{C_l}\}
C={C1,C2,…,Cl}。对于簇
C
j
∈
C
\mathcal{C}_j\in\mathcal{C}
Cj∈C,以计算簇中心变量
u
j
=
∑
v
i
∈
C
i
z
i
∈
R
d
h
\mathcal{u}_j=\sum_{v_i\in\mathcal{C}_i}z_i\in\mathbb{R}^{d_h}
uj=∑vi∈Cizi∈Rdh。图聚类的目的就是将相似节点聚在相同的簇中,将不同的节点划分到不同簇中。图聚类的目标函数可以表示为:
min
u
1
,
…
,
u
l
min
C
∑
j
=
1
l
∑
v
i
∈
C
∥
z
i
−
u
j
∥
2
\min_{u_1,\dots,u_l}\min_{\mathcal{C}}\sum_{j=1}^l\sum_{v_i\in\mathcal{C}}\Vert z_i-u_j\Vert_2
u1,…,ulminCminj=1∑lvi∈C∑∥zi−uj∥2