network embedding 学习心得

network embedding学习心得

如今,网络这种形式被广泛应用在各个领域,例如社交网络,生物网络和信息网络。随着如今大数据的火热,信息变得越来越繁多,网络也变得越来越庞大复杂,因此对于网络的分析和处理也变得越来越有挑战性。其中一项挑战就是怎么样找到一种有效的网络表示,通过这种表示使得网络相关的任务在时间和空间上更有效率。

Network embedding 是一种网络表示的方法,它通过学习来将网络中的节点映射到低纬度的向量空间中,节点之间的关系(如边)可以通过计算它们在向量空间中的距离来捕获,即网络中节点的拓扑信息和结构信息也要嵌入到向量空间中去。

 

这种网络表示方法相较传统的方法优点是十分明显的,传统的方法通常直接使用网络的邻接矩阵去表示网络,这样就很有可能包含噪声或冗余信息,并且当网络较大时,这种表示方法占用的空间也是巨大的。而基于嵌入的方法是通过学习来获得网络中节点的表示,所以可以减少噪声或冗余信息,并且可以保留内部的结构信息。同时,由于映射的方法是由研究者来定义,即研究者可以根据实际的问题来嵌入他感兴趣的信息到向量空间中,所以这种方法具有更高的灵活性和可扩展性。由于学习后的节点之间不再耦合,所以可以将主流并行计算的解决方案应用到大规模的网络分析中去。此外,network embedding与如今比较火热的机器学习方向关系紧密,许多现成的机器学习方法(如深度学习模型)可以直接应用与解决网络问题。

Network embedding通常有两个目标:首先,可以从学习的向量空间中重建原始网络,即如果两个节点之间存在边的关系,则在向量空间中这两个节点之间的距离应该相对较小,通过这种方式可以很好地保持网络关系。其次,学习的向量表示还可以有效地支持网络推理,例如边的预测、识别重要的节点和推断节点标签等。

总的来说,network embedidng有三个步骤:

1. 定义一个编码器(即网络中的节点到低纬度向量空间的映射)。

2. 定义一个节点相似度函数(即如何计算原始网络中节点之间的相似度)。

3. 通过学习来对编码器进行更新,使得原始图中节点之间的相似度可以通过向量空间中两个向量的点积来计算,

 

 

可以看出,network embedding的一个关键点在于如何定义节点之间的相似度,即可以认为相连接的两个节点是相似的,也可以认为有共同邻居的两个节点是相似的,或者可以认为具有相似的结构环境的节点是相似的……以此可以设计不同的embedding方法。

这里举几个例子简单了解一下network embedding 的方法和改进思路:

1. 基于邻接矩阵的相似度

这种方法通过边的权值来定义节点之间的相似度,即两个节点之间存在边且边的权值越大,两个节点的相似度也就越大,通过此定义我们可以得到相应的损失函数:

 

然后可以用梯度下降(SGD)等方法去最小化损失函数,并通过此过程来不断更新Z来学习节点的向量表示。

这种方法的缺点很明显:

一是时间复杂度较高(Ο(|V|2)),因为要考虑每一对节点之间的相似度。

二是参数较多(Ο(|V|)),即每个节点的向量表示中的每一个元素都需要当作参数进行更新。

三是只考虑了局部直接相连的关系,对于网络的整体信息没有得到保留。

 

2. Random Walk Embedding

Random walk embedding 是目前比较成功且被广泛利用的一种embedding方法,目前许多最新的方法是在它的基础之上进行改进得到的,它的思想是认为在一次随机游走的过程中所遍历的节点是具有相似性的,若两个节点同时出现在一次随机游走的次数越多,则它们之间的相似度也就越高。在此方法中,节点的向量表示的点积对应的是两个节点同时出现在一次随机游走的概率。

 

这种方法有效地解决了上一方法中存在的问题,一是它通过随机游走整合了局部和高阶邻居的信息,二是在训练过程中不需要考虑所有的节点对(只需要考虑在随机游走过程中同时出现的节点)。

Random walk embedding的步骤如下:

a. 定义随机游走策略R和游走长度,对网络中的每个节点进行一定次数的随机游走。

b. 对每次游走的开始节点u,收集它所对应的在随机游走过程中出现的节点集合NR(u)。

c. 根据如下的损失函数对节点的向量表示进行更新。

 

其中,P(v|zu可以通过softmax来表示:

 

 

 

猜你喜欢

转载自www.cnblogs.com/venom-e/p/10036456.html