最近项目需要用到 Graph Embedding 模型,所以简单把这个系列学习一下做个记录。
Graph Embedding 的中心思想是找到一种映射函数,将图中的每个节点转换为低维稠密的嵌入表示,要求在图中相似的节点在低维空间距离相近。
得到的表示向量可用于下游任务,如节点分类、链接预测、可视化等。
参考文献:
论文题目:DeepWalk: Online Learning of Social Representations
论文来源:KDD 2014
论文原文:https://arxiv.org/pdf/1403.6652.pdf
本文首次将无监督特征学习引入图网络分析中。 DeepWalk 算法通过截断式随机游走(truncated random walk)来学习图网络节点的社区表示(Social Representations)。
以节点分类问题为例。
给定图 G = ( V , E ) G=(V,E) G=(V,E),其中, V V V 是节点数, E E E 是边数, E ⊆ ( V × V ) E \subseteq (V \times V) E⊆(V×V)。
给定部分标记的图 G L = ( V , E , X , Y ) G_L=(V,E,X,Y) GL=(V,E,X,Y),其中, X X X 是节点的属性, Y Y Y 是节点的标签。
本文的目标是学习节点的表示 X E ∈ R ∣ V ∣ × d X_E \in \mathbb R^{|V| \times d} XE∈R∣V∣×d,其中, d d d 是较小的嵌入维数。
与传统的关系分类问题不同,本文提出的方法可捕获与标签分布无关的图网络结构的特征,因此学得的表示具有通用性,可应用于多种下游任务。
DeepWalk 算法学得的社区表示具有以下特征:
DeepWalk 算法的思路是使用 Random Walk 算法在图网络中进行节点采样,获得了足够的节点访问序列后,使用 Word2Vec 的 Skim-Gram 算法进行表示学习。
如上图所示,图 (a) 来自无标度图网络上的一系列截断性随机游走,图 (b) 来自英语维基百科的100万条语料。其分布规律满足类似的幂律分布,因此可以将 NLP 的词向量模型(如 Skim-Gram 算法)应用在图网络的截断性随机游走中。
该算法包含两个主要的步骤:第一步利用 Random Walk 算法采样节点序列,第二步使用 skip-gram 算法学习表达向量。
Random Walk 算法
Random Walk 算法思路:
在图网络上,从某个特定的节点开始,从与该节点相连的边中随机选择一条移动直下个节点,重复该过程直到达到窗口大小。是一种可重复访问已访问节点的深度优先遍历算法。
Random Walk 算法具有两个主要特征:可扩展、可并行。可扩展是指在后续添加新的信息时,可只学习新的节点信息,无需从头学习。可并行是指,可以同时从不同的节点处开始游走。
Skip-Gram 算法
内容比较多,单独记录在了另外一篇文章。
【Word2Vec】Skip-Gram 算法
本文中,通过 DeepWalk 算法获取图网络表示后,使用 K-Means 算法进行聚类,得到如下图所示的实验结果。
实验数据选取了成熟的空手道图网络,设置低维嵌入维度 d = 2 d=2 d=2,不同颜色代表节点的聚类。
可见,将嵌入表示维数压缩至 d = 2 d=2 d=2 的情况下,也取得了较好的聚类效果。