Graph Embedding 和 Graph Neural Network

本文为转载,原文链接: https://leovan.me/cn/2020/04/graph-embedding-and-gnn/

目录

  • 图嵌入
    • Random Walk
    • Matrix Fractorization
    • Meta Paths
    • Deep Learning
    • Others
  • 图神经网络
    • Graph Neural Networks
    • Graph Convolutional Networks
    • Graph Recurrent Networks
    • Graph Attention Networks
    • 应用
  • 开放资源
    • 开源实现
    • 论文列表和评测

图(Graph / Network)数据类型可以自然地表达物体和物体之间的联系,在我们的日常生活与工作中无处不在。例如:微信和新浪微博等构成了人与人之间的社交网络;互联网上成千上万个页面构成了网页链接网络;国家城市间的运输交通构成了物流网络。


图片来源:The power of relationships in data

通常定义一个图,其中V为顶点(Vertices)集合,E为边(Edges)集合。对于一条边包含两个端点(Endpoints)和,同时可以成为的邻居(Neighbor)。
当所有的边为有向边时,图称之为有向图,当所有边为无向边时,图称之为无向图。对于一个顶点,令表示连接的边的数量,称之为度(degree)。对于一个图,其邻接矩阵(Adjacency Matrix) 定义为:

作为一个典型的非欧式数据,对于图数据的分析主要集中在节点分类,链接预测和聚类等。对于图数据而言,图嵌入(Graph / Network Embedding)和图神经网络(Graph Neural Networks, GNN)是两个类似的研究领域。图嵌入旨在将图的节点表示成一个低维向量空间,同时保留网络的拓扑结构和节点信息,以便在后续的图分析任务中可以直接使用现有的机器学习算法。一些基于深度学习的图嵌入同时也属于图神经网络,例如一些基于图自编码器和利用无监督学习的图卷积神经网络等。下图描述了图嵌入和图神经网络之间的差异:

图嵌入

本节内容主要参考自:
A Comprehensive Survey of Graph Embedding: Problems, Techniques and Applications 1
Graph Embedding Techniques, Applications, and Performance: A Survey 2
Representation Learning on Graphs: Methods and Applications 3

使用邻接矩阵的网络表示存在计算效率的问题,邻接矩阵 使用 的存储空间表示一个图,随着节点个数的增长,这种表示所需的空间成指数增长。同时,在邻接矩阵中绝大多数是 0,数据的稀疏性使得快速有效的学习方式很难被应用。

网路表示学习是指学习得到网络中节点的低维向量表示,形式化地,网络表示学习的目标是对每个节点学习一个实值向量,其中表示向量的维度。经典的Zachary’s karate club 网络的嵌入可视化如下图所示:

Random Walk

基于随机游走的图嵌入通过使得图上一个短距的随机游走中共现的节点具有更相似的表示的方式来优化节点的嵌入。

DeepWalk

DeepWalk 算法主要包含两个部分:一个随机游走序列生成器和一个更新过程。随机游走序列生成器首先在图 中均匀地随机抽样一个随机游走 的根节点 ,接着从节点的邻居中均匀地随机抽样一个节点直到达到设定的最大长度。对于一个生成的以 为中心左右窗口为 的随机游走序列,DeepWalk利用SkipGram算法通过最大化以为中心,左右为窗口的桶其他节点共现概率来优化模型:

DeepWalk和Word2Vec的类比入下表所示:

node2vec

node2vec通过改变随机游走序列生成的方式进一步扩展了DeepWalk算法。DeepWalk选取随机游走序列中下一个节点的方式是均匀随机分布的,而node2vec通过引入两个参数和,将宽度优先搜索深度优先搜索引入了随机游走序列的生成过程。宽度优先搜索注重邻近的节点并刻画了相对局部的一种网络表示, 宽度优先中的节点一般会出现很多次,从而降低刻画中心节点的邻居节点的方差, 深度优先搜索反映了更高层面上的节点之间的同质性

node2vec 中的两个参数 和 控制随机游走序列的跳转概率。假设上一步游走的边为,那么对于节点的不同邻居,node2vec根据和定义了不同的邻居的跳转概率,控制往回跳的概率,控制跳向往后跳的概率,具体的未诡异的跳转概率值如下图所示:

其中, 表示节点 和 之间的最短距离。为了获得最优的超参数 和 的取值,node2vec 通过半监督形式,利用网格搜索最合适的参数学习节点表示。

APP

之前的基于随机游走的图嵌入方法,例如:DeepWalk,node2vec 等,都无法保留图中的非对称信息。然而非对称性在很多问题,例如:社交网络中的链路预测、电商中的推荐等,中至关重要。在有向图和无向图中,非对称性如下图所示:

为了保留图的非对称性,对于每个节点设置两个不同的角色:源和目标。分别用和表示。对于每个从开始以结尾的采样序列,利用表示采样的节点对。则利用源节点预测目标节点的概率如下:

通过Skip-Gram和负采样对模型进行优化,损失函数如下:
\begin{aligned} \ell &= \log \sigma(\overrightarrow{s_{u}} \cdot \overrightarrow{t_{v}})+k \cdot E_{t_{n} \sim P_{D}}[\log \sigma(-\overrightarrow{s_{u}} \cdot \overrightarrow{t_{n}})] \\ &= \sum_{u} \sum_{v} \# \text {Sampled}_{u}(v) \cdot \left(\log \sigma(\overrightarrow{s_{u}} \cdot \overrightarrow{t_{v}}) + k \cdot E_{t_{n} \sim P_{D}}[\log \sigma(-\overrightarrow{s_{u}} \cdot \overrightarrow{t_{n}})]\right) \end{aligned}
其中,我们根据分布随机采样个节点对,为采样的对的个数,为sigmoid函数。通常情况下,,即和的观测数量是不同的。模型利用 Monte-Carlo End-Point 采样方法,随机地以为起点和为停止概率采样条路径。这种采样方式可以用于估计任意一个节点对之间的Rooted PageRank值,模型利用这个值估计由到达的概率。

Matrix Fractorization

GraRep

GraRep提出了一种基于矩阵分解的图嵌入方法。对于一个图,利用邻接矩阵定义图的度矩阵:

则一阶转移概率矩阵定义如下:

其中,表示通过一步由转移到的概率。所谓的全局特征包含两个部分:

  1. 捕获两个节点之间的长距离特征
  2. 分别考虑按照不同转移步数的连接
    下图展示了 情况下的强(上)弱(下)关系:

利用 Skip-Gram 和 NCE(noise contrastive estimation)方法,对于一个 阶转移,可以将模型归结到一个矩阵 的分解问题:

其中,和的每一行分别为节点和的表示,,为负采样的数量,为图中边的个数。

之后为了减少噪音,模型将中所有的负值替换为,通过SVD得到节点的维表示:
\begin{aligned} X_{i, j}^{k} &= \max \left(Y_{i, j}^{k}, 0\right) \\ X^{k} &= U^{k} \Sigma^{k}\left(V^{k}\right)^{T} \\ X^{k} \approx X_{d}^{k} &= U_{d}^{k} \Sigma_{d}^{k}\left(V_{d}^{k}\right)^{T} \\ X^{k} \approx X_{d}^{k} &= W^{k} C^{k} \\ W^{k} &= U_{d}^{k}\left(\Sigma_{d}^{k}\right)^{\frac{1}{2}} \\ C^{k} &= \left(\Sigma_{d}^{k}\right)^{\frac{1}{2}} V_{d}^{k T} \end{aligned}

最终,通过对不同的表示进行拼接得到节点最终的表示。

你可能感兴趣的:(Graph Embedding 和 Graph Neural Network)