【图表示学习】图预训练模型 GraphBERT

Graph-BERT:Only Attention is Needed for Learning Graph Representations

一、简介

依赖于图结构的图神经网络(GNN)面临的一些问题,例如:suspended animation problemover-smoothing problem。而且由于图本质上是相互连接的,阻碍了图上的并行运算。论文提出了图预训练模型Graph-BERT,该模型只基于注意力机制,且不依赖图的连接。

二、符号

  1. 小写字母表示标量 ( 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)
  2. 给定矩阵 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列的元素。
  3. X T \textbf{X}^T XT x T \textbf{x}^T xT表示矩阵和向量的转置。
  4. ∥ x ∥ p = ( ∑ i ∣ x ( i ) ∣ p ) 1 p \Vert \textbf{x}\Vert_p=(\sum_{i}|\textbf{x}(i)|^p)^{\frac{1}{p}} xp=(ix(i)p)p1表示向量 x \textbf{x} x L p L_p Lp范数。
  5. ∥ 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}} XF=(i,jX(i,j)2)21表示矩阵的 Frobenius \text{Frobenius} Frobenius范数。
  6. x ⊗ y \textbf{x}\otimes \textbf{y} xy表示向量对应元素相乘后的向量,即 element-wise product \text{element-wise product} element-wise product
  7. x ⊔ y \textbf{x}\sqcup\textbf{y} xy表示向量拼接。

三、无连接子图采样

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:ER表示边到权重的映射; x : V → X x:\mathcal{V}\rightarrow\mathcal{X} x:VX表示节点到对应特征的映射; y : V → Y y:\mathcal{V}\rightarrow\mathcal{Y} y:VY表示节点到标签的映射。

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×VE,则 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}|} SRV×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)={vjvjV{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,,gV}。这样,图 G G G就转换为子图集合 G \mathcal{G} G。如果 G \mathcal{G} G尺度太大,还可以对 G \mathcal{G} G进行采样,例如 B ⊆ G \mathcal{B}\subseteq\mathcal{G} BG

四、输入节点的Embedding

虽然图中的节之间并没有顺序,但是为了方便模型的输入,仍然会将子图中的节点转换为有序的列表。具体来说,将无连接子图 g i ∈ B g_i\in\mathcal{B} giB中的所有节点 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,mVi,若 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 vjVi,将原始特征 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 vjVi 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=02dh
其中, 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} giB中所有节点转换为序列 [ 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 vjVi,其与节点 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)]TR(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(l1))=softmax(dh QKTV+G-Res(H(l1),Xi)),
Q、K、V \textbf{Q、K、V} QKV是基于 H ( l − 1 ) \textbf{H}^{(l-1)} H(l1)的:
{ 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(l1)WQ(l)K=H(l1)WK(l)V=H(l1)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(l1),Xi)是图残差项,其中 X i ∈ R ( k + 1 ) × d x \textbf{X}_i\in\mathbb{R}^{(k+1)\times d_x} XiR(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(l1)),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} ziRdh×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=V1viVxix^i2

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=zizjziTzj。用这个相似度来表示两个节点的连接程度。

计算图 G G G中所有节点间的余弦相似度,并组成相似度矩阵 S ^ ∈ R ∣ V ∣ × ∣ V ∣ \hat{\textbf{S}}\in\mathbb{R}^{|\mathcal{V}|\times|\mathcal{V}|} S^RV×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=V21SS^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=viTm=1dyyi(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} CjC,以计算簇中心变量 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=viCiziRdh。图聚类的目的就是将相似节点聚在相同的簇中,将不同的节点划分到不同簇中。图聚类的目标函数可以表示为:
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=1lviCziuj2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BQW_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值