图学习——01.Graph Embedding

Graph Embedding

1.Deepwalk

采用随机游走的方式,将网络结构节点之间的关系转化成句子,那么不同节点就代表不同的词,然后用自然语言处理中Word2Vec的方法得到节点的低维度向量表示。那么这种方法其实就是分两步:随机游走,和词向量表示学习
在这里插入图片描述
随机游走就是在网络结构中,以某个节点做起点,然后以一定的概率随机移动到其邻居位置,再从邻居位置随机移动,直到走t步(t是预先设定好的参数),于是得到一个由t个“词”(节点)组成的“句子”(序列)。图中每个节点都要作为起点做随机游走,设有N个节点;且每个节点都要做r次随机游走,那么最后就可以得到N*r个“句子”,每个“句子”都是由t个“词”组成。
在这里插入图片描述
原工作中使用Skip-gram的方法学习词向量表示,具体思想类似于极大似然概率:比如现在有一个随机游走得到的句子(序列) A B C D E,每个字母代表一个词(节点),这个句子共5个词。这个句子之所以出现,是因为这种词的顺序是常见的形式(比如我们只能从一群学生中抽1个学生,问他考试前是否复习,如果这个同学说复习,那么我们就会更倾向于相信在这个群体中,考试动作之前会发生复习动作的概率更大),所以我们可以认为C词很大概率就是与B词和D词相邻的,我们以C词的词向量作为输入,那么其邻居词中,B词和D词出现的概率就应该更高,也就是P(邻居是B词和D词 | 输入为C词的词向量)的值应该更高,那么我们就应该更新C词的词向量,使得上述的条件概率最大。其更新公式如下所示:
在这里插入图片描述

2.LINE

首先我们需要使用卷积神经网络模型对节点提特征,得到节点的低维向量表示,那么究竟怎样的低维向量表示是更好的呢?作者提出了两种相似度的衡量方式:一阶相似度和二阶相似度

一阶:当两个结点边的权重很大时,说明可能是相似的
二阶:如果两个结点的邻居结点相同,说明可能是相似的
在这里插入图片描述
DeepWalk在无向图上,LINK在有向图和无向图皆可

一阶相似性

求节点i和节点j的联合概率分布:节点i和节点j的embedding经过一个sigmoid函数得到。
求节点i和节点j的经验概率分布:节点i和节点j相连的边的权重除以所有边的权重的和
然后求两个分布的距离,距离越小说明学出来的embedding效果越好,用KL-divergence来求距离
将得到的距离作为loss函数,训练出最小的距离,得到每个向量的embedding表示
在这里插入图片描述

二阶相似性

定义每个节点有两个表示
有向图的经验概率分母不再是所有边的权重,当求给定顶点vi条件下,产生邻居顶点vj的概率,分母为顶点vi的出边的权重和
同样,得到两个概率分布,使用KL-divergence求出最小距离,当做loss函数,利用反向传播,得到了每一个节点本身的embedding和该节点作为其他节点邻居时的表示向量的embedding,最后选择顶点本身的embedding作为该节点的二阶相似性
在这里插入图片描述
一阶和二阶训练完之后,将两个向量组合成一个embedding,使用拼接的方法

3.Node2vec

同质性表示节点跟周围节点的embedding应该是很相似的,如图中右侧第一个图,每种颜色代表节点的相似性
结构等价性表示节点在图中的位置很相似,如图中右侧第二个图,所有蓝色节点都是连接两个簇的,所以它们的embedding是很相似的
在这里插入图片描述
该算法也是采用随机游走的方式,但与DeepWalk不同的是,该游走是一种有策略的游走方式
假设已经从t节点游走到了v节点,可以从v节点游走到x1、x2、x3或者t节点,计算v节点游走到其他节点的概率,表示为πvxπvx=αpq(t,x)\*wvx,其中wvx表示节点v到节点x的权重,αpq(t,x)的公式如下图所示,其中,dtx=0表示从v节点游走到距离t节点距离为0的节点的概率(也就是从t走到v再走到t的概率),dtx=1表示从v节点游走到距离t节点距离为1的节点的概率。dtx=2表示从v节点游走到距离t节点距离为2的节点的概率

举例:

t->v->z:0 因为v到z无边,权值为0
t->v->t:wvt*1/p 因为v到t的权值为wvt,又dtx=dtt=0,故αpq=1/p
t->v->x1:wvx1*1 因为v到x1的权值为wvx1,有dtx=dtx1=1,故αpq=1

在这里插入图片描述
算法如下:
在这里插入图片描述
不同的参数值对最后的结果是不同的,当q较小时,1/q较大,说明节点的游走会沿着距离当前节点较远的方向游走。同理相反
在这里插入图片描述
这种方法的好处是结合了BFS(p控制)与DFS(q控制)来做随机游走(DeepWalk方法是基于DFS的)以两个参数p,q来控制,得到的序列可以更全面地表示网络结构中节点的邻居关系。

4.Struc2vec

node embedding的方式,都基于近邻关系,有些节点没有近邻,但也有相似的结构性

下图定义了距离信息fk(u,v)和它的计算
在这里插入图片描述
如何求g(D1,D2)?
在这里插入图片描述
求出来的两个节点的距离就可以表示两个节点在图中的结构相似性,而不考虑他们的邻接点

算法流程:
在这里插入图片描述
在这里插入图片描述

Struct2vec适用于节点分类中,其结构标识比邻居标识更重要的是,采用Struct2vec效果好。

5.SDNE

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

引入深度学习方法
使用Encoder-decoder来表示向量,通过输入和输出向量的均方误差计算L2nd,其中引入一个bi,这个bi表示,如果si跟sj是不连接的,bij=1,否则为一个大于1的数,也就是说,如果两个点是连接的,更关注decoder之后能否表现出两个点连接的性质,即考虑点的二阶相似度。
还引入了一阶相似度,一阶相似度考虑的是连接的节点,xi和xj都经过一个Encoder得到一个embedding,计算两个embedding的误差,在误差最小的情况下,就表示两个节点的一阶相似度
在这里插入图片描述
最后,将得到的一阶误差,二阶误差和一个正则项加在一起得到了整体误差,通过反向传播,就学习到了模型上的一些参数,然后可以计算出节点的embedding
在这里插入图片描述

总结

在这里插入图片描述
在日常使用中,要根据图结构和下游任务,深入了解每一种算法的本质去选择对应的算法,这样才能得到更好的效果。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值