Graph embedding

图嵌入(Graphembedding)旨在通过无监督学习捕捉图的结构信息,解决one-hot编码稀疏性和丢失连接信息的问题。DeepWalk通过随机游走模拟语料,利用Word2vec获取节点的embedding。LINE则在大规模图上表现出色,通过一阶和二阶相似性学习节点表示。一阶相似性关注局部结构,二阶相似性考虑共享邻居的节点。最终,通过最小化Kullback-Leibler散度来优化损失函数,得到节点的embedding。node2vec和Struc2vec等进一步发展了这一领域。

为什么要有Graph embedding

在图上要表示一个节点,可以使用one-hot来表示,而使用这种方法有两个缺点:

  1. 如果节点数量比较多,那么n维的one-hot会非常稀疏;
  2. 使用one-hot丢失了节点在图上的连接信息。

DeepWalk

在这里插入图片描述
为了使用无监督的方式训练每一个节点的embedding,我们会联想到word-embedding的方式,而word-embedding需要语料来训练每一个词的embedding,但是在图上没有一个有序的语料,所以在图上就产生了随机游走的方式来获得序列,利用Word2vec得到每个节点的embedding。

在这里插入图片描述
上图中,使用skipGram,在给定v4v_4v4的情况下v2,v3,v5,v6v_2,v_3,v_5,v_6v2,v3,v5,v6同时出现的概率是多少,window size表示向前或者向后看多少个节点。
在这里插入图片描述
因为Graph embedding是通过无监督的方式训练的,那么如何评价表示出来的节点的好坏?答案就是需要一个分类器,将学习到的embedding投入分类器中进行分类,判断是否在正确的类别。

使用deep walk进行实战:
在这里插入图片描述

效果还是比较可观的。

LINE:Lage-scale Information Network Embedding

如果在大规模的图上做embedding,LINE会达到比较好的效果。

LINE中有两个中心思想:

  1. 一阶相似性:局部的结构信息。
  2. 二阶相似性:节点的邻居。共享邻居的节点可能是相似的。

作者提出LINE如果在节点度比较低的情况下,效果不是很好,因为节点度比较低时,所连接的邻居信息就会比较少,所以二阶相似性不会很好。

同时DeepWalk在无向图上,LINE可以在有向图中使用。

在这里插入图片描述
上图表示一阶相似性步骤:

  1. 随机初始化每一个节点的embedding
  2. 利用embedding求出vi,vjv_i,v_jvi,vj的联合概率分布p1(vi,vj)=11+exp(−uiT⋅uj)p_1(v_i,v_j)=\frac{1}{1+exp(-u_i^T · u_j)}p1(vi,vj)=1+exp(uiTuj)1,v代表节点,u代表节点的embedding,式子的意思是两节点越相似,內积越大,sigmoid映射后的值越大,也就是这两节点相连的权重越大,也就是这两个节点间出现的概率越大
  3. 利用权重,求出vi,vjv_i,v_jvi,vj的经验概率分布p^1=wij其余边的权重\hat p_1=\frac{w_{ij}}{其余边的权重}p^1=wij
  4. 计算联合概率分布和经验概率分布的距离,距离越小说明学习出的embedding越好,求两个分布的距离一般使用KL Divergence 来计算,
    DKL(p∣∣q)=∑i=1np(xi)log⁡(p(xi)q(xi))=∑wijWlog⁡((wijW)/p1(vi,vj))=∑wijW[log⁡(wijW)−log⁡(p1(vi,vj))]=∑wijWlog⁡(wijW)−∑wijWlog⁡(p1(vi,vj)) D_{KL}(p||q)=\sum_{i=1}^n{p(x_i)\log(\frac{p(x_i)}{q(x_i)})}\\ =\sum{\frac{w_{ij}}{W}\log((\frac{w_{ij}}{W})/p_1(v_i,v_j))} \\ =\sum{\frac{w_{ij}}{W}\left[\log(\frac{w_{ij}}{W})-\log(p_1(v_i,v_j))\right]} \\ =\sum{\frac{w_{ij}}{W}}\log(\frac{w_{ij}}{W})-\sum{\frac{w_{ij}}{W}}\log(p_1(v_i,v_j)) DKL(pq)=i=1np(xi)log(q(xi)p(xi))=Wwijlog((Wwij)/p1(vi,vj))=Wwij[log(Wwij)log(p1(vi,vj))]=Wwijlog(Wwij)Wwijlog(p1(vi,vj))
    ∑wijWlog⁡(wijW)\sum{\frac{w_{ij}}{W}}\log(\frac{w_{ij}}{W})Wwijlog(Wwij)是常数项,WWW表示图的权重之和,也是常数项,所以最终化简:
    DKL(p∣∣q)=−∑(i,j)∈Ewijlog⁡p1(vi,vj) D_{KL}(p||q)=-\sum_{(i,j) \in E}w_{ij}\log p_1(v_i,v_j) DKL(pq)=(i,j)Ewijlogp1(vi,vj)
  5. 经过化简得到损失函数O1=−∑(i,j)∈EWijlog⁡pi(vi,vj)O_1=- \sum_{(i,j) \in E}W_{ij} \log p_i(v_i,v_j)O1=(i,j)EWijlogpi(vi,vj),将损失函数进行梯度下降,就学到了每一个节点的embedding表示。

二阶相似性步骤,通过使用条件概率和经验概率来获得。

  1. 二阶相似性中每个节点有两个向量表示,分别是uˉ\bar{u}uˉuˉ′\bar{u}^\primeuˉ,v代表节点,u代表节点的embedding,其中uˉ\bar{u}uˉ表示节点本身的向量,uˉ′\bar{u}^\primeuˉ表示该节点作为其他邻居时的表示向量。
  2. 条件概率
    p2(vj∣vi)=exp(uj′ˉT⋅uiˉ)∑k=1∣V∣exp(uk′ˉT⋅uiˉ)p_2(v_j|v_i)=\frac{exp(\bar{u_j^\prime}^T \cdot \bar{u_i})}{\sum_{k=1}^{\left|V \right|}exp(\bar{u_k^\prime}^T \cdot \bar{u_i})}p2(vjvi)=k=1Vexp(ukˉTuiˉ)exp(ujˉTuiˉ)
    节点表示学习前如果两个节点比较相似,那么embedding后的这两个节点表示向量也要很相似。
  3. 经验概率p^2=wij其余边的权重\hat p_2=\frac{w_{ij}}{其余边的权重}p^2=wij
  4. 计算KL Divergence
    DKL(p∣∣q)=−∑(i,j)∈Ewijlog⁡p2(vi,vj) D_{KL}(p||q)=-\sum_{(i,j) \in E}w_{ij}\log p_2(v_i,v_j) DKL(pq)=(i,j)Ewijlogp2(vi,vj)
  5. 这样就得到每个节点的uˉ\bar{u}uˉuˉ′\bar{u}^\primeuˉ,我们应该选择哪一个embedding作为二阶相似性呢?论文中将uˉ\bar{u}uˉ作为节点的二阶相似性。
  6. 训练完一阶和二阶相似性之后,将这两个结果concat拼接到一起就是最终的节点embedding。

得到一阶和二阶的embedding训练完成之后,将他们的embedding直接 contat一个最终的embedding。

node2vec

Struc2vec

SDNE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值