Graph Embedding指把graph转化为低维vector,使得Graph上的问题可以用vector上的方法处理。
这样做的意义在于:
我从一篇综述A Comprehensive Survey of Graph Embedding: Problems, Techniques and Applications入手,了解Graph Embedding的问题定义、技术方法。
综述从Problem Settings,也就是算法的输入输出,的角度对Graph Embedding问题做了分类;之后介绍了不同种类的Techniques。
我由于在相关方面的知识积累比较少,在看综述中的分析、方法时会感到对Graph Embedding问题仍然缺少一个清晰具体的概念,常常不知道所说的graph, node, edge含义到底是什么。所以我想先从一些更为具体的例子入手,先建立对Graph Embedding的一部分认识,再系统地把握Graph Embedding问题。
DeepWalk的目标是得到node的latent representation,希望这个representation是低维的、连续的;与i.i.d.的sample不同,graph中的node之间有关联,比如在社交网络中,以每个用户为节点,用户之间的关联蕴含有价值的信息,因此,与graph embedding的通常要求相同,DeepWalk希望得到的representation可以体现node之间的关联。
按照graph embedding综述中的notation,node之间的关联有两种:
DeepWalk选的关联是第二种,具体来说,目标函数定义为:给定一个节点,预测其若干邻居节点的条件概率分布函数。
真实的预测邻居的条件概率函数可以从数据集样本中估计,我们希望得到一个好的representation, 使得从这个representation出发经过回归、分类等模型可以很好地拟合出真实的预测邻居的条件概率函数。
从这个思路出发,我们首先碰到的问题是,如何度量真实的概率函数和representation+统计学习概率模型得到的概率函数之间的拟合程度。如果两个概率函数的是高度参数化的模型,或者数据规模比较小,KL-Divergence这类直接的比较可以派上用场;而DeepWalk面对的问题的数据规模往往很大(以语言任务为例,则问题规模至少是Vocabulary级别的),且不够参数化,所以采用采样方法,使用Random Walk来模拟有关联的节点之间形成串的概率。在representation+概率模型端,概率模型也需要考虑到计算复杂度,采取的方法包括SkipGram的只考虑两个node之间而不考虑整个window/sequence中多个node形成的语境、使用hierarchical softmax。
DeepWalk与language model有很深的联系。language model中考虑的sentence就可以当作DeepWalk中考虑的图的random walk,词为节点,两词相邻对应两节点相连。
看完文章之后,我对算法的细节仍有一些迷惑,比如用于representation space的后续模型,按hierarchical softmax的说法,是binary classifier,但这个组合成binary tree的binary classifiers到底是什么形式呢?
通过对DeepWalk的了解,我对graph embedding有了更好的认识。
在分类一块,graph在input阶段有不同类,包括
按照Output的不同分为
按输出分类比较好理解,就是embedding得到的vector表示的是node, edge, substructure还是whole-graph。
Matrix Factorization首先认为一个矩阵可以很好地表示图的信息,比如graph Laplacian, node proximity matrix。然后按矩阵的方法,实现降维,以矩阵信息保存程度为最重要的降维指标。
综述中介绍的deep learning方法有两种:
综述中分三类:
Edge Reconstruction based意味着看重edge信息,也就是Node之间的关联,这个关联按照之前介绍分为first-order proximity和second-order proximity两种。edge reconstruction比照的ground truth直接来自图。
graph kernel的insight比较容易理解,以子结构的组成来分析全图。
综述分了两类:
其中第一类更为寻常,以latent space做embedding space,以此生成我们见到的graph,例如从topics生成document。