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

通常定义一个图G=(V,E),其中V为顶点(Vertices)集合,E为边(Edges)集合。对于一条边e=u,v包含两个端点(Endpoints)uv,同时u可以成为v的邻居(Neighbor)。
当所有的边为有向边时,图称之为有向图,当所有边为无向边时,图称之为无向图。对于一个顶点v,令d(v)表示连接的边的数量,称之为度(degree)。对于一个图G=(V,E),其邻接矩阵(Adjacency Matrix) A \in \mathbb{A}^{|V| \times |V|}定义为:
A_{i j}=\left\{ \begin{array}{ll} 1 & \text { if }\left\{ v_{i}, v_{j}\right\} \in E \text { and } i \neq j \\ 0 & \text { otherwise } \end{array}\right.

作为一个典型的非欧式数据,对于图数据的分析主要集中在节点分类,链接预测和聚类等。对于图数据而言,图嵌入(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

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

网路表示学习是指学习得到网络中节点的低维向量表示,形式化地,网络表示学习的目标是对每个节点v\in V学习一个实值向量R_v \in \mathbb{R}^k,其中k \ll |V|表示向量的维度。经典的Zachary’s karate club 网络的嵌入可视化如下图所示:

Random Walk

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

DeepWalk

DeepWalk 算法主要包含两个部分:一个随机游走序列生成器和一个更新过程。随机游走序列生成器首先在图 G 中均匀地随机抽样一个随机游走W_{vi} 的根节点 v_i,接着从节点的邻居中均匀地随机抽样一个节点直到达到设定的最大长度t。对于一个生成的以 v_i为中心左右窗口为 w 的随机游走序列v_{i-w}, \dotsc, v_{i-1}, v_i, v_{i+1}, \dotsc, v_{i+m},DeepWalk利用SkipGram算法通过最大化以v_i为中心,左右w为窗口的桶其他节点共现概率来优化模型:
\text{Pr} \left(\left\{v_{i-w}, \dotsc, v_{i+w}\right\} \setminus v_i \mid \Phi \left(v_i\right)\right) = \prod_{j=i-w, j \neq i}^{i+w} \text{Pr} \left(v_j \mid \Phi \left(v_i\right)\right)
DeepWalk和Word2Vec的类比入下表所示:

node2vec

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

node2vec 中的两个参数 pq 控制随机游走序列的跳转概率。假设上一步游走的边为(t,v),那么对于节点v的不同邻居,node2vec根据pq定义了不同的邻居的跳转概率,p控制往回跳的概率,q控制跳向往后跳的概率,具体的未诡异的跳转概率值\pi_{vx}=\alpha_{pq}(t,x)如下图所示:
\alpha_{p q}(t, x)=\left\{\begin{array}{cl} \dfrac{1}{p}, & \text { if } d_{t x}=0 \\ 1, & \text { if } d_{t x}=1 \\ \dfrac{1}{q}, & \text { if } d_{t x}=2 \end{array}\right.
其中, d_{tx}表示节点 tx 之间的最短距离。为了获得最优的超参数 pq 的取值,node2vec 通过半监督形式,利用网格搜索最合适的参数学习节点表示。

APP

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

为了保留图的非对称性,对于每个节点v设置两个不同的角色:源和目标。分别用\overrightarrow{s_{v}}\overrightarrow{t_{v}}表示。对于每个从u开始以v结尾的采样序列,利用(u,v)表示采样的节点对。则利用源节点u预测目标节点v的概率如下:
p(v | u)=\frac{\exp (\overrightarrow{s_{u}} \cdot \overrightarrow{t_{v}})}{\sum_{n \in V} \exp (\overrightarrow{s_{u}} \cdot \overrightarrow{t_{n}})}
通过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}
其中,我们根据分布P_D \left(n\right) \sim \dfrac{1}{|V|}随机采样k个节点对,\# \text{Sampled}_{u}(v)为采样的(u,v)对的个数,\sigma为sigmoid函数。通常情况下,\# \text{Sampled}_{u}(v) \neq \# \text{Sampled}_{v}(u),即(u,v)(v,u)的观测数量是不同的。模型利用 Monte-Carlo End-Point 采样方法,随机地以v为起点和\alpha为停止概率采样p条路径。这种采样方式可以用于估计任意一个节点对之间的Rooted PageRank值,模型利用这个值估计由v到达u的概率。

Matrix Fractorization

GraRep

GraRep提出了一种基于矩阵分解的图嵌入方法。对于一个图G,利用邻接矩阵S定义图的度矩阵:
D_{i j}=\left\{\begin{array}{ll} \sum_{p} S_{i p}, & \text { if } i=j \\ 0, & \text { if } i \neq j \end{array}\right.
则一阶转移概率矩阵定义如下:
A = D^{-1}S
其中,A_{i,j}表示通过一步由v_i转移到v_j的概率。所谓的全局特征包含两个部分:

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

利用 Skip-Gram 和 NCE(noise contrastive estimation)方法,对于一个 k阶转移,可以将模型归结到一个矩阵 Y^k_{i,j}的分解问题:
Y_{i, j}^{k}=W_{i}^{k} \cdot C_{j}^{k}=\log \left(\frac{A_{i, j}^{k}}{\sum_{t} A_{t, j}^{k}}\right)-\log (\beta)
其中,WC的每一行分别为节点wc的表示,\beta = \lambda / N\lambda为负采样的数量,N为图中边的个数。

之后为了减少噪音,模型将Y^k中所有的负值替换为0,通过SVD得到节点的d维表示:
\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}

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容