论文解读(Graph-Bert)《Graph-Bert: Only Attention is Needed for Learning Graph Representations》

论文信息

论文标题:Graph-Bert: Only Attention is Needed for Learning Graph Representations
论文作者:Jiawei Zhang, Haopeng Zhang, Congying Xia, Li Sun
论文来源:2020, arXiv
论文地址:download 
论文代码:download 

1 Introduction

  GNNs 存在的问题:

    • suspended animation problem
    • over-smoothing problem

  本文提出的 $\text{Graph-Bert}$ 仅基于注意机制,没有任何图的卷积或聚合运算。

2 Method

  整体框架:

   

  Graph-Bert 涉及到几个部分:

    • linkless subgraph batching  
    • node input embedding  
    • graph-transformer based encoder  
    • representation fusion  
    • the functional component  

2.1 Linkless Subgraph Batching

  Graph-Bert 将使用从输入图中采样的 linkless subgraph batches 进行训练。它将有效地使 Graph-Bert 在现有的图神经网络无法处理的超大尺寸的图上实现并行化。

  然而,为了控制抽样过程中涉及的随机性,在本文中,我们引入了 $\text{top-k intimacy}$ 的抽样方法。该采样算法基于图亲密度矩阵 $\mathbf{S} \in \mathbb{R}^{|\mathcal{V}| \times|\mathcal{V}|}$,其中条目 $S(i,j)$ 度量节点 $v_{i}$ 和$v_{j}$ 之间的亲密度得分。本文的 $S$ 是基于 pagerank 算法:

    $\mathbf{S}=\alpha \cdot(\mathbf{I}-(1-\alpha) \cdot \overline{\mathbf{A}})^{-1}  \quad\quad\quad(1)$

  其中 $\alpha \in[0,1]$(通常设置为 $0.15$),$\overline{\mathbf{A}}=\mathbf{A} \mathbf{D}^{-1}$ 代表着列标准化邻接矩阵。

  形式上,对于输入图中的任何目标节点 $v_{i} \in \mathcal{V}$,基于亲密性矩阵 $\mathbf{S}$,我们可以定义其学习上下文如下:

  Definition 1. (Node Context): Given an input graph  G  and its intimacy matrix  $\mathbf{S}$ , for node  $v_{i}$  in the graph, we define its learning context as set  $\Gamma\left(v_{i}\right)=\left\{v_{j} \mid v_{j} \in \mathcal{V} \backslash\left\{v_{i}\right\} \wedge\right.   \left.\mathbf{S}(i, j) \geq \theta_{i}\right\}$ . Here, the term  $\theta_{i}$  defines the minimum intimacy score threshold for nodes to involve in  $v_{i} $'s context.

  对于 $v_{i}$ 学习上下文 $\Gamma\left(v_{i}\right)$ 中的所有节点,它们既可以覆盖 $v_{i}$ 的本地邻居,也可以覆盖遥远的节点。在本文中,我们将阈值 $\theta_{i}$ 定义为排序($\mathbf{S}(i,:)$)($v_{i}$被排除),即 $\Gamma\left(v_{i}\right)$ 覆盖图 $g$ 中 $v_{i}$ 的 $\text{top-k}$ 亲密节点。基于节点上下文的概念,我们还可以表示所有节点的采样图 batch 集 $\mathcal{G}=\left\{g_{1}, g_{2}, \cdots, g_{|\mathcal{V}|}\right\}$,$g_{i}$ 表示 $v_{i}$ 采样的子图(作为目标节点)。在形式上,$g_{i}$ 可以表示为 $g_{i}=\mathcal{V}_{i}$,其中节点集 $\mathcal{V}_{i}=\left\{v_{i}\right\} \cup \Gamma\left(v_{i}\right) $ 同时覆盖了 $v_{i}$ 及其上下文节点,边集为空。对于大规模的输入图,集合 $\mathcal{G}$ 可以进一步分解为几个小批,即 $\mathcal{B} \subseteq \mathcal{G}$,它将被用来训练Graph-Bert 模型。

2.2 Node Input Vector Embeddings

  输入到 graph transformer 模型的输入向量嵌入实际上包括四个部分:(1)raw feature vector embedding、(2) Weisfeiler-Lehman absolute role embedding、(3) Weisfeiler-Lehman absolute role embedding(4)hop based relative distance embedding。

2.2.1 Raw Feature Vector Embedding

  形式上,对于子图 $g_{i}$ 中的每个节点 $v_{j} \in \mathcal{V}_{i}$,我们可以将其原始特征向量嵌入到共享特征空间中,可以记为

    $\mathbf{e}_{j}^{(x)}=\operatorname{Embed}\left(\mathbf{x}_{j}\right) \in \mathbb{R}^{d_{h} \times 1} \quad\quad\quad(2)$

  根据输入的原始特性属性,可以使用不同的模型来定义嵌入 $Embed(.)$ 函数。例如,如果 $\mathbf{x}_{j}$ 表示图像,则可以使用CNN;如果 $\mathbf{x}_{j}$ 表示文本,则可以应用LSTM/BERT;而简单的全连接层也可以用于简单的属性输入。

2.2.2  Weisfeiler-Lehman Absolute Role Embedding

  Weisfeiler-Lehman (WL) 算法 可以根据节点在图数据中的结构角色来标记节点,其中具有相同角色的节点将被标记为相同的编码。

  形式上,对于采样子图中的节点 $v_{j} \in \mathcal{V}_{i}$,我们可以将其 WL编码 表示为 $\operatorname{WL}\left(v_{j}\right) \in \mathbb{N}$,它可以基于完整的图预先计算,并且对于不同的采样子图是不变的。在本文中,我们采用了[Vaswani等人,2017]和本文中提出的嵌入方法定义节点WL绝对角色嵌入向量为:

    $\begin{aligned}\mathbf{e}_{j}^{(r)} &=\text { Position-Embed }\left(\mathrm{WL}\left(v_{j}\right)\right) \\&=\left[\sin \left(\frac{\mathrm{WL}\left(v_{j}\right)}{10000^{\frac{2 l}{d_{h}}}}\right), \cos \left(\frac{\mathrm{WL}\left(v_{j}\right)}{10000^{\frac{2 l+1}{d_{h}}}}\right)\right ]_{l=0}^{\left\lfloor\frac{d_{h}}{2}\right\rfloor}\end{aligned} \quad\quad\quad(3)$

  其中,$\mathbf{e}_{j}^{(r)} \in \mathbb{R}^{d_{h} \times 1}$。索引 $l$ 迭代上述向量中的所有条目,根据节点的 WL代码使用 $sin(⋅)$ 和 $cos(⋅)$ 函数计算条目值。

2.2.3 Intimacy based Relative Positional Embedding

  基于 WL based role embeddings 可以捕获表示法中的全局节点角色信息。在这里,我们将引入一个相对的位置嵌入,根据本小节开头介绍的序列化节点列表的放置顺序来提取子图中的局部信息。在形式上,基于该序列化的节点列表,我们可以将 $v_{j} \in \mathcal{V}_{i}$ 的位置表示为 $P\left(v_{j}\right)$。我们知道 $P\left(v_{i}\right)=0$ 在默认情况下,并且更接近 $v_{i}$ 的节点将有一个较小的位置索引。此外,$P(\cdot)$ 是一个不同的位置指数度量。对于相同的节点$v_{j}$,它的位置索引 $P\left(v_{j}\right)$ 对于不同的采样子图将会有所不同。

  形式上,对于节点 $v_{j}$,我们也可以用上面定义的 $Position-Embed(\cdot)$ 函数提取其基于亲密关系的相对位置嵌入如下:

    $\mathbf{e}_{j}^{(p)}=\text { Position-Embed }\left(\mathrm{P}\left(v_{j}\right)\right) \in \mathbb{R}^{d_{h} \times 1}  \quad\quad\quad(4)$

2.2.4 Hop based Relative Distance Embedding

  基于跳跃的相对距离嵌入可以被视为 absolute role embedding (用于全局信息)和intimacy based relative positional embedding(用于局部信息)之间的平衡。形式上,对于子图 $g_{i}$ 中的节点 $v_{j} \in \mathcal{V}_{i}$,我们可以将其在原始输入图中跳跃到 $v_{i}$ 的相对距离表示为 $H\left(v_{j} ; v_{i}\right)$,可以用来定义其嵌入向量为

    $\mathbf{e}_{j}^{(d)}=\text { Position-Embed }\left(\mathrm{H}\left(v_{j} ; v_{i}\right)\right) \in \mathbb{R}^{d_{h} \times 1}   \quad\quad\quad(5)$

  很容易观察到,对于不同子图中的相同节点 $v_{j}$,向量 $\mathbf{e}_{j}^{(d)}$ 也将是变化的。

2.3 Graph Transformer based Encoder

  基于上述定义的计算嵌入向量,我们将能够将它们聚合在一起,以定义子图 $g_i$ 中节点的初始输入向量,例如 $v_j$,如下:

    $\mathbf{h}_{j}^{(0)}=\text { Aggregate }\left(\mathbf{e}_{j}^{(x)}, \mathbf{e}_{j}^{(r)}, \mathbf{e}_{j}^{(p)}, \mathbf{e}_{j}^{(d)}\right)    \quad\quad\quad(6)$

  在本文中,我们简单地将聚合函数定义为向量的总和。此外,$g_{i}$ 中所有节点的初始输入向量都可以组织成一个矩阵 $\mathbf{H}^{(0)}=   \left[\mathbf{h}_{i}^{(0)}, \mathbf{h}_{i, 1}^{(0)}, \cdots, \mathbf{h}_{i, k}^{(0)}\right]^{\top} \in \mathbb{R}^{(k+1) \times d_{h}}$。下面介绍的基于图转换器的编码器将用多层(D层)迭代更新节点的表示,第 $l$ 层的输出可以表示为

    $\begin{aligned}\mathbf{H}^{(l)} &=\mathrm{G}-\text {Transformer}\left(\mathbf{H}^{(l-1)}\right) \\&=\operatorname{softmax}\left(\frac{\mathbf{Q} \mathbf{K}^{\top}}{\sqrt{d_{h}}}\right) \mathbf{V}+\mathrm{G}-\operatorname{Res}\left(\mathbf{H}^{(l-1)}, \mathbf{X}_{i}\right)\end{aligned}  \quad\quad\quad(7)$

  where

    $\left\{\begin{array}{l}\mathbf{Q}=\mathbf{H}^{(l-1)} \mathbf{W}_{Q}^{(l)} \\\mathbf{K}=\mathbf{H}^{(l-1)} \mathbf{W}_{K}^{(l)} \\\mathbf{V}=\mathbf{H}^{(l-1)} \mathbf{W}_{V}^{(l)}\end{array}\right.   \quad\quad\quad(8)$

  在上述方程中,$\mathbf{W}_{Q}^{(l)}, \mathbf{W}_{K}^{(l)}, \mathbf{W}_{K}^{(l)} \in \mathbb{R}^{d_{h} \times d_{h}}$ 表示相关变量。为了简化本文的表示,我们假设不同层中节点的隐向量具有相同的长度。项 $G-Res \left(\mathbf{H}^{(l-1)}, \mathbf{X}_{i}\right)$ 表示引入的图残差项,$\mathbf{X}_{i} \in \mathbb{R}^{(k+1) \times d_{x}}$ 是子图 $g_{i}$ 中所有节点的原始特征。与传统的残差学习不同的是,我们将为目标节点 $v_{i}$ 计算的残差项添加到每层子图中所有节点的隐藏状态向量中。基于上面定义的 graph-transformer 函数,我们可以表示 Graph-Bert 的表示学习过程如下:
    $\left\{\begin{array}{l}\mathbf{H}^{(0)}=\left[\mathbf{h}_{i}^{(0)}, \mathbf{h}_{i, 1}^{(0)}, \cdots, \mathbf{h}_{i, k}^{(0)}\right]^{\top} \\\mathbf{H}^{(l)}=\text { G-Transformer }\left(\mathbf{H}^{(l-1)}\right), \forall l \in\{1,2, \cdots, D\} \\\mathbf{z}_{i} \quad=\text { Fusion }\left(\mathbf{H}^{(D)}\right)\end{array}\right.   \quad\quad\quad(9)$

  不同于传统的 transformer 模型在NLP问题上的应用,其目的是学习所有输入 tokens 的表示。在本文中,我们的目标是应用 graph-transformer 来只得到目标节点的表示。在上式中,函数 $Fusion (\cdot)$ 将对输入列表中所有节点的表示进行平均,这定义了目标 $v_{i}$ 的最终状态,即 $\mathbf{z}_{i} \in \mathbb{R}^{d_{h} \times 1}$。向量 $\mathbf{z}_{i}$ 和矩阵 $\mathbf{H}^{(D)}$ 都将输出到以下附加到 GRAPH-BERT 的函数分量。根据应用程序任务的不同,功能组件和学习目标(即损失函数)将会有所不同。我们将在下一节中展示更多的关于图形-预算的预训练和微调的详细信息。

3 Graph-Bert Learning

  任务:

    • node attribute reconstruction
    • structure recovery tasks
    • node classification
    • graph clustering tasks

3.1 Pre-training

  node raw attribute reconstruction task 侧重于捕获学习表示中的节点属性信息,而 graph structure recovery task 更多地侧重于图连接信息。

Task #1: Node Raw Attribute Reconstruction

  形式上,对于采样子图 $g_{i}$ 中的目标节点 $v_{i}$,我们用 GRAPH-BERT 学习表示为 $\mathbf{z}_{i}$。通过全连接层(必要时结合激活函数层),我们可以将基于 $\mathbf{z}_{i}$ 的节点 $v_{i}$ 重构的原始属性表示为 $\hat{\mathbf{x}}_{i}=\mathrm{FC}\left(\mathbf{z}_{i}\right)$。为了确保学习到的表示能够捕获节点原始属性信息,与节点原始特征相比,例如 $v_{i}$ 的 $\mathbf{x}_{i}$,我们可以定义基于节点原始属性重构的损失项如下:

    $\ell_{1}=\frac{1}{|\mathcal{V}|} \sum_{v_{i} \in \mathcal{V}}\left\|\mathbf{x}_{i}-\hat{\mathbf{x}}_{i}\right\|_{2}$

Task #2: Graph Structure Recovery

  此外,为了保证这些表示向量也能捕获图结构信息,还将图结构恢复任务作为训练前任务。形式上,对于任意两个节点 $v_{i}$ 和 $v_{j}$,基于它们学习的表示,我们可以通过计算它们的余弦相似度来表示它们之间的连接分数,即 $\hat{s}_{i, j}=\frac{\mathbf{z}_{i}^{\top} \mathbf{z}_{j}}{\left\|\mathbf{z}_{i}\right\|\left\|\mathbf{z}_{j}\right\|}$。可以如下表示引入的损失项:

    $\ell_{2}=\frac{1}{|\mathcal{V}|^{2}}\|\mathbf{S}-\hat{\mathbf{S}}\|_{F}^{2}$

  其中,$\hat{\mathbf{S}} \in \mathbb{R}^{|\mathcal{V}| \times|\mathcal{V}|}$ 中的元素为 $\hat{\mathbf{S}}(i, j)=\hat{s}_{i, j}$。

3.2 Model Transfer and Fine-tuning

Task # 1: Node Classifification

  基于学习到的节点表示,例如,$\mathbf{z}_{i}$ 表示 $v_{i}$,我们可以通过功能组件将节点的推断标签表示为 $\hat{\mathbf{y}}_{i}=\operatorname{softmax}\left(\mathrm{FC}\left(\mathbf{z}_{i}\right)\right)$ 。与节点的真实标签相比,我们将能够在训练批 $\mathcal{T}$ 上引入的节点分类损失项定义为:

    $\ell_{n c}=\sum \limits_{v_{i} \in \mathcal{T}} \sum \limits_{m=1}^{d_{y}}-\mathbf{y}_{i}(m) \log \hat{\mathbf{y}}_{i}(m)$

  通过将这些堆叠的完全连接的层与Graph-Bert(从训练前加载)一起重新训练,我们将能够推断出节点类标签。

Task # 2: Graph Clustering

  同时,对于图聚类任务,主要目标是将图中的节点划分为几个不同的聚类,例如 $\mathcal{C}=\left\{\mathcal{C}_{1}, \mathcal{C}_{2}, \cdots, \mathcal{C}_{l}\right\}$ ( $l$ 是预先预先指定的超参数)。对于每个目标聚类,例如 $\mathcal{C}_{j} \in \mathcal{C}$,我们可以将其中心表示为一个可变向量 $\boldsymbol{\mu}_{j}=\sum_{v_{i} \in \mathcal{C}_{j}} \mathbf{z}_{i} \in   \mathbb{R}^{d_{h}}$。对于图的聚类任务,其主要目标是将相似的节点分组到同一个集群中,而不同的节点将被划分为不同的集群。因此,图聚类的目标函数可以定义如下:

    $\underset{\boldsymbol{\mu}_{1}, \cdots, \boldsymbol{\mu}_{l}}{\text{min}}  \underset{\mathcal{C}}{\text{min}} \sum \limits_{j=1}^{l} \sum \limits_{v_{i} \in \mathcal{C}_{j}}\left\|\mathbf{z}_{i}-\boldsymbol{\mu}_{j}\right\|_{2}$

  上述目标函数涉及到多个需要同时学习的变量,可以用EM算法更有效地进行训练,而不是使用错误的反向传播。因此,我们不再将学习到的节点表示作为节点特征输入,而将学习的 Graph-Bert 重新训练上述图聚类模型。

4 Experiment

  node attribute reconstruction 和 graph recovery

  

 

 

Refrence

Gresnet: Graph residual network for reviving deep gnns from suspended animation——假死问题

posted @ 2022-05-25 17:34  图神经网络  阅读(869)  评论(0编辑  收藏  举报
Live2D