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

相关资源

论文:http://www.ifmlab.org/files/paper/graph_bert.pdf
代码:https://github.com/jwzhanggy/Graph-Bert
这篇文章2020年发表于arXiv,借鉴了Transformer,提出一种仅使用注意力机制的图神经网络。

Motivation

主流的GNNs过度依赖图上的连接,导致了几个严重的性能问题:

  • suspended animation problem:当模型深度到达一定上限时,网络将不会对训练数据相应;
  • over-smoothing problem:模型深度到达一定上限时,学习到的节点嵌入将没有差异。
  • 在图内无法实现并行计算。

Contributions

  • 提出了新的图神经网络;
  • 用无监督的任务对模型进行预训练,同时学习图的局部属性和图的总体属性;
  • 预训练的模型可以微调并迁移到其他的学习任务上。

Model

Subgraph Batching

这一步的终极目的其实是对于每个节点采样得到局部子图。Subgraph Batching使得Graph-Bert能够在大尺寸图上并行计算。

  • 矩阵 S S S:文中称该 S S S为图亲密度矩阵(graph intimacy matrix)。 S S S的计算基于Pagerank算法:
    S = α ( I − ( 1 − α ) ⋅ A ˉ ) − 1 S=\alpha(I-(1-\alpha)·\bar A)^{-1} S=α(I(1α)Aˉ)1
    不懂pagerank算法的可以参考知乎这篇文章 A ˉ = A D − 1 \bar A=AD^{-1} Aˉ=AD1 D D D是度矩阵。 A ˉ \bar A Aˉ可以看成是状态转移矩阵,前面一项 I I I表示每个节点都可以以相等的概率转移到所有其他节点,后面的 ( 1 − α ) ⋅ A ˉ (1-\alpha)·\bar A (1α)Aˉ表示节点以状态转移矩阵中相应的概率转移到相应节点。(其实可以理解成前面一项是随机转移,后面一项是按照图的连接来转移)。
  • Node Context:基于 S S S矩阵,作者又提出了一个新概念,对于节点 v i v_i vi,定义其局部的node context为: Γ ( v i ) = { v j ∣ v j ∈ V \ { v i } ∧ S ( v i , v j ) > θ i } \Gamma\left(v_{i}\right)=\left\{v_{j} \mid v_{j} \in V\backslash\left\{v_{i}\right\} \wedge S(v_i,v_j)>\theta_i\right.\} Γ(vi)={vjvjV\{vi}S(vi,vj)>θi}
    看起来有点乱……其实意思就是如果节点 v j v_j vj v i v_i vi之间的亲密度值超过某个阈值 θ i \theta_i θi,那么该 v j v_j vj就可以参与构成目标节点 v i v_i vi的node context,且节点 v j v_j vj不可以取 v i v_i vi θ i \theta_i θi的取值在文中选择为排序 S ( i , : ) S(i,:) S(i,:)后的第 k k k个值,这样 Γ ( v i ) \Gamma(v_i) Γ(vi)就可以包含top-k的亲密的节点。
  • subgraph:得到 Γ ( v i ) \Gamma (v_i) Γ(vi)后,可以继续得到节点 v i v_i vi的局部图,该局部图的节点集为 V i = Γ ( v i ) ∪ { v i } V_i=\Gamma(v_i)\mathop{\cup}\{v_i\} Vi=Γ(vi){vi},该局部图为 g i = ( V i , ∅ ) g_i=(V_i,\varnothing) gi=(Vi,),所有节点的局部图为 G = ( g 1 , g 2 , … , g ∣ V ∣ ) G=(g_1,g_2,\ldots,g_{|V|}) G=(g1,g2,,gV)表示所有节点的局部图集合。该局部图内是没有连接的。

编码

熟悉Transformer的同学知道,其为了捕捉位置属性,定义了位置编码组件来用一个向量表示单词的位置,融合位置向量和单词原始属性作为输入。Graph-Bert同样也提出了编码。其实图本来应该是无序的,但由于作者做了采样,在一个子图内部,可以根据亲密度的大小做一个排序,或者根据其他算法给节点以label,使得子图内部的节点是有序的。编码工作不仅包含拓扑位置的编码,还包含节点自身的特征等等。

  • Raw Feature Vector Embedding
    e j ( x ) = E m b e d ( x j ) ∈ R d h × 1 e^{(x)}_j=Embed(x_j)\in R^{d_h\times 1} ej(x)=Embed(xj)Rdh×1
    E m b e d Embed Embed可以是CNN,可以是LSTM、BERT或者简单线性变化。
  • Weisfeiler-Lehman Absolute Role Embedding
    WL算法可以标记节点在图中的角色,在图中担任相同角色的不同节点将会有相同的WL编码。定义该编码为 W L ( v i ) ∈ R WL(v_i)\in R WL(vi)R,借鉴Transformer的位置编码,得到:
    在这里插入图片描述
  • Intimacy based Relative Positional Embedding:对于 v j ∈ V i v_j\in V_i vjVi,基于亲密度矩阵,用 P ( v j ) P(v_j) P(vj)表示节点 v j v_j vj相对于 v i v_i vi的亲密度位置。
    e j ( p ) = Position-Embed ( P ( v j ) ) ∈ R d n × 1 e^{(p)}_j=\text{Position-Embed}(P(v_j))\in R^{d_n\times 1} ej(p)=Position-Embed(P(vj))Rdn×1
  • Hop based Relative Distance Embedding:对于 v j ∈ V i v_j\in V_i vjVi,用 H ( v j , v i ) H(v_j,v_i) H(vj,vi)表示在原始图中, v j v_j vj到达 v i v_i vi需要的hops数。
    e j ( d ) = Position-Embed ( H ( v j ; v i ) ∈ R d h × 1 e^{(d)}_j=\text{Position-Embed}(H(v_j;v_i)\in R^{d_h\times 1} ej(d)=Position-Embed(H(vj;vi)Rdh×1

最后节点的编码可以表示成这四个编码的和,作为 v j v_j vj在子图 g i g_i gi的中输入(是的没错,讲到现在也只是输入而已……)
h j ( 0 ) = Aggregate ( e j ( x ) , e j ( r ) , e j ( p ) , e j ( d ) ) h_j^{(0)}=\text{Aggregate}(e^{(x)}_j,e^{(r)}_j,e^{(p)}_j,e^{(d)}_j) hj(0)=Aggregate(ej(x),ej(r),ej(p),ej(d))
H ( 0 ) H^{(0)} H(0)表示 g i g_i gi中所有节点的输入编码,也就是 H ( 0 ) = [ h i ( 0 ) , h i , j ( 0 ) , … , h i , k ( 0 ) ] T ∈ R ( k + 1 ) × d h H^{(0)}=[h_i^{(0)},h_{i,j}^{(0)},\ldots,h_{i,k}^{(0)}]^T\in R^{(k+1)\times d_h} H(0)=[hi(0),hi,j(0),,hi,k(0)]TR(k+1)×dh
l l l层的输出可以计算为:

H ( l ) = G-Transformer ( H ( l − 1 ) ) = s o f t m a x ( Q K T d h ) V + G − R e s ( H ( l − 1 ) , X i ) H^{(l)}=\text{G-Transformer}(H^{(l-1)})\\ =softmax(\frac{QK^T}{\sqrt{d_h}})V+G-Res(H^{(l-1)},X_i) H(l)=G-Transformer(H(l1))=softmax(dh QKT)V+GRes(H(l1),Xi)
这里用到了自注意力机制,即 Q = H ( l − 1 ) W Q l Q=H^{(l-1)}W^l_Q Q=H(l1)WQl K = H ( l − 1 ) W K l K=H^{(l-1)}W^l_K K=H(l1)WKl V = H ( l − 1 ) W V l V=H^{(l-1)}W^l_V V=H(l1)WVl
假设一共有 D D D层, g i g_i gi的最后一层的输出为 H ( D ) H^{(D)} H(D),最终节点 v i v_i vi的节点嵌入表示为 z i = Fusion ( H ( D ) ) z_i=\text{Fusion}(H^{(D)}) zi=Fusion(H(D))

总体看来,模型框架图如下:
在这里插入图片描述
后面作者介绍了两个预训练任务,分别是节点原始属性重建和图的结构重建:

  1. 节点原始属性重建:节点原始属性为 x i x_i xi x ^ i = F C ( z i ) \hat x_i=FC(z_i) x^i=FC(zi)
    l 1 = 1 ∣ V ∣ ∑ v i ∈ V ∣ ∣ x i − x ^ i ∣ ∣ 2 \mathcal{l}_1=\frac{1}{|V|}\sum_{v_i\in V}||x_i-\hat x_i||_2 l1=V1viVxix^i2
  2. 图的结构重建:原始图的亲密度矩阵为 S S S s ^ i , j = z i T z j ∣ ∣ z i ∣ ∣ ∣ ∣ z j ∣ ∣ \hat s_{i,j}=\frac{z_i^Tz_j}{||z_i||||z_j||} s^i,j=zizjziTzj
    l 2 = 1 ∣ V ∣ 2 ∣ ∣ S − S ^ ∣ ∣ F \mathcal{l}_2=\frac{1}{|V|^2}||S-\hat S||_F l2=V21SS^F
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值