【GNN笔记】Graph Embedding(二)

视频链接:【图神经网络】GNN从入门到精通

代码连接:《图嵌入》


零、引言

  • 图嵌入包括:DeepWalk,LINE,SDNE,Node2vec,Struc2vec
  • one-hot的缺点:
  1. 向量长度===节点的数量,不适合节点数量大的
  2. 丢失节点在图中的部分信息(我理解的是拓扑信息)
    在这里插入图片描述
  • graph embedding的作用
  1. 简化了向量的长度
  2. 保留了节点中的信息(猜测是拓扑信息)

一、Deep Walk

1 .1 随机游走与深度游走

参考资料:

RandomWalk是一种可重复访问已访问节点的深度优先遍历算法。给定当前访问起始节点,从其邻居中随机采样节点作为下一个访问节点,重复此过程,直到访问序列长度满足预设条件。假设图为 G = ( V , E ) G = ( V , E ) G=(V,E),其中, V V V表示图中点的集合, E E E表示图中边的集合,在RandomWalk中关键的问题是如何计算从节点 v i v_i vi跳转到 v j v_j vj 的概率 P ( v j ∣ v i ) P ( v _j ∣ v_ i ) P(vjvi)
P ( v j ∣ v i ) = { M i , j ∑ j ∈ N v i + M i j   i f v i ∈ N v i + 0 i f e i j ∉ E P ( v _j ∣ v_ i )= \begin{cases} \frac{M_{i,j}}{\sum_{j\in N^+_{v_i} }M_{ij}} \ & if v_i \in N^+_{v_i}\\ 0 & if e_{ij}\notin E \end{cases} P(vjvi)= jNvi+MijMi,j 0ifviNvi+ifeij/E
其中, E E E是图中所有边的集合, N ( v i ) + N^+_{ ( v i )} N(vi)+ 是节点 v i v_i vi的 所有的出边的集合, M i j M_ {ij} Mij 是节点 v i v_ i vi 到节点 v j v_j vj 的边的权重,对于无向无权图 M i j = 1 M_{ i j}=1 Mij=1

1.2 伪算法

  • deepwalk理论演示
    在这里插入图片描述
Fig.1-1 Deepwalk的工作流程
  1. 图a展示了原始的用户行为序列
  2. 图b基于这些用户行为序列构建了物品相关图,可以看出,物品A,B之间的边产生的原因就是因为用户U1先后购买了物品A和物品B,所以产生了一条由A到B的有向边。如果后续产生了多条相同的有向边,则有向边的权重被加强。在将所有用户行为序列都转换成物品相关图中的边之后,全局的物品相关图就建立起来了。
  3. 图c采用随机游走的方式随机选择起始点,重新产生物品序列。
  4. 图d最终将这些物品序列输入word2vec模型,生成最终的物品Embedding向量。
  • 如下图所示,在给定节点 v 4 v4 v4时,计算节点 v 2 , v 3 , v 5 , v 6 v_2,v_3,v_5,v_6 v2,v3,v5,v6同时出现的概率.

Q:那么如何给出节点 v 4 v_4 v4的embedding represent?

  • window size w w w :以某个 节点为中心在随机游走链向前或向后的扩展的范围。正因为限制了范围,我们可以忽略窗口之外的链子上的节点,减少工作量(自己的猜测)。进而,限制了游走链的长度。。 如果对于一全连通图来说,如果不限制游走链的长度,那么概率恒为1,则没有意义了。

  • embedding size d d d:

  • walks per vertex γ \gamma γ: 以顶点为root进行walk的次数

  • walk length t t t:每次随机游走的长度

  • SkipGram:见博文 《skip-gram(含详细代码)》

  • 《skip-gram的上下文预测算法》
    在这里我理解是:在前面距离中我们要计算 v 2 , v 3 , v 5 , v 6 v_2,v_3,v_5,v_6 v2,v3,v5,v6 v 4 v_4 v4的窗口内出现的概率,与NLP中的skipgram类似,借鉴了该算法用于计算概率。

在这里插入图片描述

Fig.1-2 DeepWalk的伪算法

算法代码:deepwalk

二、LINE

Large-scale Information Network Embedding
提醒:该思想与度大的图没有关系,只是该方法在度大的图上效果比较好。
一阶和二阶相似性的案例

Fig.2-1 一阶相似和二阶相似的案例

提醒:DeepWalk在无向图上 作embedding,LINE既可以在无向图又可以在有向图中使用。

2.1 一阶相似性(First-order Proximity)

定义

两个顶点之间的⾃⾝相似(不考虑其他顶点)。 对于由边 ( u , v ) (u,v) uv连接的每⼀对顶点,边上的权重 w ( u v ) w_{(uv)} w(uv)表⽰u和v之间的相似度,如果在u和v之间没有观察到边,则它们的⼀阶相似度为0。⼀阶邻近通常意味着现实世界⽹络中两个节点的相似性。如上图中的节点6合节点7之间的权重很大(线条粗),则说明两者之间具有一阶相似度。

embedding

在这里插入图片描述

Fig.2-2 一阶相似性的推演

公式(1)定义的两个无向节点之间的联合概率。 p 1 ^ ( i , j ) = w i j W \hat{p_1}(i,j)=\frac{w_{ij}}{W} p1^(i,j)=Wwij是经验概率。公式(2)是求两个概率分布的度量距离。在KL散度和忽略某些常数下得到公式(3),即两个概率的分布。推到公式见公式(3)的右侧。举例说明见右上角。

联合概率分布
定义了无向边 ( i , j ) (i,j) (i,j)的联合概率(见Eq.1),其中 u i ⃗ \vec{u_i} ui 是节点 v i v_i vi低维空间向量表示(即嵌入表示)。也就是说,节点的嵌入表示经过一个sigmoid函数获得联合概率分布。
经验概率分布
p ^ 1 ( i , j ) = w i , j W \hat{p}_1(i,j)=\frac{w_{i,j}}{W} p^1(i,j)=Wwi,j,其中 w i , j w_{i,j} wi,j表示节点 v i v_i vi和节点 v j v_j vj的权重, W W W表示所有的权重之和。
距离–>KL散度
如果联合概率分布和经验概率分布的距离越小,则说明我们的嵌入表示越好。采用KL散度(见Fig2-2 右侧公式)表示两个函数的距离。
目标函数
我们要最小化距离公式(见公式Eq.2)。将联合概率分布和经验概率分布带入KL散度公式后(展开见Fig.2-2右下角)。在最后一行公式中第一部分是一个常数,第二部分中的 W W W是一个常数,因此简化后的距离公式见公式Eq.3。

2.2 二阶相似性(Second-order Proximity)

定义

⽹络中⼀对顶点 ( u , v ) (u,v) uv之间的⼆阶相似度是它们邻近⽹络结构之间的相似性。 在数学上,设 P u = ( w ( u 1 ) , … , w ( u ∣ V ∣ ) ) Pu=(w_{(u1)},…,w_{(u| V |)}) Pu=w(u1)w(uV)表⽰u与所有其他顶点的⼀阶相似度,则u和v之间的⼆阶相似度 由 P u Pu Pu P v Pv Pv决定。 如果没有顶点与u和v都连接,则u和v之间的⼆阶相似度为0。因为有些边观察不到等原因,⼀阶相似度不⾜以保存
⽹络结构。因此提出共享相似邻居的顶点倾向于彼此相似,即⼆阶相似度。 Fig.2-1,节点5和节点6虽然不共边但是具有共有的邻居节点1,节点2,节点3和节点4,说明两者具有二阶相似度.

embedding

如下图,对每个节点定义两个表示向量 u ⃗ , u ′ ⃗ \vec{u},\vec{u'} u ,u
在这里插入图片描述

Fig.2-3 二阶相似性的推演

公式(4)是条件概率公式。 p 2 ^ ( v j ∣ v i ) = w i j d i \hat{p_2}(v_j|v_i)=\frac{w_{ij}}{d_i} p2^(vjvi)=diwij是经验条件概率。公式(5)是两个概率分布的度量距离。使用KL散度和忽略某些常数后,得到公式(6).其推导过程见右侧。举例说明见右上角。

条件概率公式
给定节点 v i v_i vi时求节点 v j v_j vj的概率=节点 v i v_i vi的向量表示乘以节点 v j v_j vj作为其他节点邻居的向量表示,再进行归一化操作(见公式Eq.4)。
举个栗子。如Fig.2-3右边所示,给定节点 v 5 v_5 v5求节点 v 1 v_1 v1的概率的时候,
p 2 ( v 1 ∣ v 5 ) = e x p ( u 1 ′ ⃗ T ⋅ u 5 ) ∑ k = 1 ∣ V ∣ e x p ( u k ′ ⃗ T ⋅ u i ⃗ ) p_2(v_1|v_5)=\frac{exp(\vec{u'_1}^T\cdot u_5)}{\sum_{k=1}{|V|}exp(\vec{u'_k}^T\cdot \vec{u_i})} p2(v1v5)=k=1Vexp(uk Tui )exp(u1 Tu5)
u 1 ′ ⃗ = , u 5 = \vec{u'_1}=,u_5= u1 =,u5=
分母选择的时由节点 v 5 v_5 v5指向的节点们 v 1 , v 2 , v 3 v_1,v_2,v_3 v1,v2,v3,而不包含 v 4 v_4 v4.从这也可以看出该算法可以用于有向图
经验概率公式
p 2 ^ ( v j ∣ v i ) = w i j d i \hat{p_2}(v_j|v_i)=\frac{w_{ij}}{d_i} p2^(vjvi)=diwij,其中 w i j w_{ij} wij表示节点 v i v_i vi和节点 v j v_j vj之间的权重 d i d_i di表示节点 v i v_i vi出度。栗子如上图所示。
距离-优化目标
Eq.5表示两个概率分布地距离公式,公式中 λ i \lambda_i λi表示用来控制节点重要性地因子。当采用KL散度来求解距离两个概率公式的距离(KL散度公式如图上所示)会得到右下角最后一行公式。从中看到有一个与节点 v i v_i vi 相关地变量 d i d_i di,其他变量都是同时与节点 v i v_i vi和节点 v j v_j vj相关,且不存在常数项尽量使优化目标都同时与两个节点相关。去掉度的影响。
假设 λ i = d i \lambda_i =d_i λi=di,可以使目标函数(见公式Eq.6)只与向量表示有关。

最小化后,选择 u i ⃗ \vec{u_i} ui 作为图嵌入表示。

2.3 拼接一阶和二阶embedding

在这里插入图片描述

Fig.2-4 拼接

三、node2vec

相关佳文:

Fig.3-1 同质性和结构等价性案例

3.1 同质性(homophily )

在网络中,节点与其周围邻居节点的embedding应该是尽量相似的。在Fig.3-1中,在右上图中颜色相近的节点表示邻居关系,则他们的embedding是相似的。换个栗子,在Figure1中,节点 u u u与其相连的节点 s 1 、 s 2 、 s 3 、 s 4 s_1、s_2、s_3、s_4 s1s2s3s4的embedding表达应该是接近的,这就是“同质性“的体现。

3.2 结构等价性(structural equivalence)

在网络中,节点的结构(所处的功能)相似的节点的embedding应该是尽量接近的。在Fig.3-1中,在右下图中蓝色的节点都是具有中心纽带作用的,其embedding应该是尽量相似的。再来个栗子,在Figure1中,节点 u u u和节点 s 6 s_6 s6都是各自局域网络的中心节点,结构上相似,其embedding的表达也应该近似.

3.3 有策略地游走

这个名字也不知道正确否。
在这里插入图片描述

Fig.3-2 randwalk in node2vec或DFS和BFS之间的关系

在图中利用 α \alpha α来控制偏向DFS或BFS. π \pi π是转移概率。提醒,Fig.3-2中的Figure2中的 α = 1 \alpha=1 α=1不是指节点 v v v跳跃到节点 v 1 v_1 v1的转移概率,而是指节点 t t t经过节点 v v v后跳转到节点 x 1 x_1 x1的偏好,在求节点 v v v跳跃到节点 x 1 x_1 x1的转移概率的时候,在偏好 α = 1 \alpha=1 α=1的基础上乘以权重 w v , x 1 w_{v,x1} wv,x1,即 π v , x 1 = w v , x 1 × 1 \pi_{v,x1}=w_{v,x1}\times 1 πv,x1=wv,x1×1

3.4 算法伪代码

  • Dimensions d d d:图嵌入地维度
  • walks per node r r r: 每个节点随机游走的次数
  • walk length l l l:游走地长度
  • context size k k k:skipgram的窗口大小
  • Return p p p:
  • In-out q q q:
  • π = ( G , p , q ) \pi=(G,p,q) π=(G,p,q): 图G在 p , q p,q p,q下随机游走的概率?
    在这里插入图片描述
Fig.3-3算法伪代码

优化目标
Fig.3-3中公式(1)中,红线表示在给定节点 u u u的情况下,其邻居节点 N s ( u ) Ns(u) Ns(u)出现的概率
提高效率
在上图右侧,提出了在一个比较长的游走链中,可以分别获得节点 u , s 4 , s 5 u,s_4,s_5 u,s4,s5的邻居节点。

StochasticGradientDescent随机梯度下降

相关博文

3.5 DFS和BFS的关系

BFS应该反映了结构性,DFS反应了同质性.
在这里插入图片描述

Fig.3-4 DFS和BFS的关系

3.6 边的embedding

在这里插入图片描述

Fig.3-5 边的嵌入方式

四、Struc2vec

如下图中节点 u u u和节点 v v v没有直接连边,其邻居也不相连,但是具有结构相似性。考虑通过这种结构相似性,进行embedding表示。
在这里插入图片描述

Fig.4-1 网络中节点的结构性

4.1 节点k-hop距离

节点的k-hop距离是一个迭代公式。k-1的hop距离+两个节点k-hop邻居的度距离。这里的度距离是采用DTW的方式求解的。
在这里插入图片描述

Fig.4-2节点k-hop距离

4.2 DTW距离

在这里插入图片描述

Fig.4-3 DTW距离演示图

DTW的思想和代码:见《时间序列的相似性》

4.3 构建多层加权图

猜测建立多层图的原因:
在这里插入图片描述

Fig.4-4 建立多层图的原因

对于Fig.4-2中的以节点 u u u为中心的图,会得到

0-hop的节点集: R 0 ( u ) = { u } R_0(u)=\{u\} R0(u)={u}
1-hop的节点集: R 1 ( u ) = { A , C , F , D } R_1(u)=\{A,C,F,D\} R1(u)={A,C,F,D}
2-hop的节点集: R 2 ( u ) = { B , E , G } R_2(u)=\{B,E,G\} R2(u)={B,E,G}
为了更清晰的表达,将其如Fig.4-4中所变化表示。这样就建立一个节点的0-hop层,1-hop层,2-hop层。显然,对于每个的节点建立自己的一个多层hop图是不科学的。将每个节点的多层hop图融合。因此,每个hop层都要包含所有的节点至于节点之间的权重(包括层内边的权重和层间边的权重)如何计算呢???
构建方法

  1. 建立k层多重图
  2. 确定层内连边和层间连边的权重(公式间Fig.4-5)
  3. 可以构建有向的图。
    在这里插入图片描述
Fig.4-5 多层加权hop图的构建方法

4.4 顶点采样序列

在这里插入图片描述

Fig.4-6 random walk的方法

4.4 使用skip-gram生成embedding

在这里插入图片描述
Struc2vec适用于节点分类中,其结构标识比邻居标识更重要是。采用Struc2vec效果好.

五、 SDNE:Structural Deep Network Embedding

之前的Deepwalk,LINE,node2vec,struc2vec都使用了浅层的结构,
浅层模型往往不能捕获高度非线性的网络结构。即产生了SDNE方法,
使用多个非线性层来捕获node的embedding.

5.1 encoder-decoder结构

Encoder-Decoder是一个模型构架,是一类算法统称,并不是特指某一个具体的算法,在这个框架下可以使用不同的算法来解决不同的任务。首先,编码(encode)由一个编码器将输入序列转化成一个固定维度的稠密向量解码(decode)阶段将这个激活状态生成目标译文。

相关佳文:

5.2 算法思想

结构
在这里插入图片描述

Fig.5-1 SDNE框架

如图Fig.5-1所示,模型的

  • 输入: 是节点的向量表示(见黄色高亮部分), x i x_i xi在这里表示节点 v i v_i vi与其他节点的邻居关系
  • encoder: 是编码部分(见绿色高亮部分), x i → y i ( 1 ) → ⋯ → y i ( K ) x_i \to y_i^{(1)} \to \cdots \to y_i^{(K)} xiyi(1)yi(K),对于所有的节点编码部分的参数共享
  • 嵌入表示: y i ( K ) y_i^{(K)} yi(K)(见墨绿部分)
  • decoder: 是解码部分(见橙色高亮), y i ( K ) → ⋯ → y ^ i ( 1 ) → x ^ i y_i^{(K)} \to \cdots \to \hat{y}_i^{(1)} \to \hat{x}_i yi(K)y^i(1)x^i对于所有的节点解码部分的参数共享
  • 输出:是预测值(见粉色高亮部分), x ^ i \hat{x}_i x^i ,且与输入值的维度完全相同
  • Laplacian Eigenmaps=拉普拉斯特征映射

优化目标

连通性保持
连通性保持
越接近越好
节点固有的邻居关系
encoder
压缩表示
decoder
节点预测的邻居关系

二阶相似度
显然,如上流程图红色所示,【节点固有的邻居关系】与【节点预测的邻居关系】越接近则说明我们的【压缩表示】越好,则我们就有助于完成图嵌入这项工作。因此,我们求输入向量和输出向量的距离。
在这里插入图片描述
在输入向量和输出向量求均方误差的时候加入了向量 b i = ( b i , 1 , ⋯   , b i , n ) b_i=(b_{i,1},\cdots,b_{i,n}) bi=(bi,1,,bi,n),其中
b i , j = { 1 , i f s i , j = 0 , 即 v i , v j 不相连 β > 1 , o t h e r w i s e , 即 v i , v j 相连的 b_{i,j}=\begin{cases} 1, & if s_{i,j} =0 ,&即 v_i,v_j不相连\\ \beta >1, & otherwise, &即 v_i,v_j相连的\end{cases} bi,j={1,β>1,ifsi,j=0otherwise,vi,vj不相连vi,vj相连的
这里的 β > 1 \beta>1 β>1,说明更关注节点的连接性,通过encoder-decoder结构后,能否还原这种连接性。 ⊙ \odot 表示点积,或着说逐元素乘法。
物理含义:二阶相似可以看出一对节点邻域有多相似
一阶相似度
显然,如上流程图绿色所示,在encode-decoder过程中我们要尽量保持节点之间的连通性。在输入的时候节点具有连通关系,则在嵌入表示后的节点也应该保持连通性。因此我们求嵌入表示后节点之间联通性要接近。
在这里插入图片描述
如上图公式Eq.4所示,如果两个顶点 v i , v j v_i,v_j vi,vj连通的,两个节点的嵌入表示 y i ( K ) , y j ( K ) y_i^{(K)},y_j^{(K)} yi(K),yj(K)应该是接近的。
损失函数
在这里插入图片描述

六、总结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值