引言
在图嵌入专题的前三篇文章中,我们分别从图嵌入算法的整体概况、基于深度学习的图嵌入算法以及基于skip-gram的图嵌入算法三个方面进行了介绍。本文从图嵌入算法与矩阵分解算法的关系出发,对图嵌入算法进行进一步的介绍。
1图嵌入与矩阵的关系
图嵌入算法的基本思想,是通过一种学习方式,将复杂网络中的节点表达成一个低维的向量,使其能够反映出该节点在网络中复杂的交互信息。早期的图嵌入算法通过构造一个设计好的节点连接矩阵,通过矩阵分解的方式学习到节点的嵌入向量;近年来,许多的图嵌入算法虽然没有显式地构建连接矩阵(例如deep-walk算法),但本质上依然可以近似为对一种隐性的连接矩阵进行分解。这一节我们先介绍图嵌入算法与矩阵分解的联系,在第二节我们将以deepwalk为例详述这一过程。
图嵌入算法的基本思想是,对于一个节点,首先寻找它的邻近节点(这里简称邻域),通过该节点邻域的嵌入信息,学习到该节点的嵌入表示。一般来讲,与目标节点直接相连的节点,可以被看作它的一阶邻域,例如对于下述网络:
如果图嵌入算法只考虑了与目标节点直接连接的节点(即一阶邻域),例如我们在图嵌入算法(三)中介绍的,deepwalk算法通过截断式随机游走寻找邻域,如果设置随机游走的长度为1,则得到的实际是邻接矩阵:
如果图嵌入算法考虑二阶邻域(即邻域的邻域),也就是deepwalk算法的游走长度为2,则得到的节点的连接矩阵为:
当然,如果根据节点的邻近关系设置不同节点之间的权重,则上述矩阵将不再是0,1矩阵,而是一个带权矩阵。可以看出,在我们的例子中仅6个节点,二阶邻域构成的节点连接矩阵已经非常稠密了。那么在大型的网络中,如果设置邻域的窗口长度L趋近于无穷,则连接矩阵将被节点之间的近似关系填满。
图嵌入算法,编码的虽然是节点,编码需要保留的信息却是图中的拓扑结构,即节点之间的连接关系。因此,有了节点之间的连接矩阵后,图嵌入算法的假设是,这个连接矩阵是低秩的。因此可以通过某种低秩矩阵近似方法来学习节点的嵌入表达,并且这些图中重要的连接信息,能够通过这个低维的嵌入向量得到很好的编码。
小结一下,虽然图嵌入算法有很多,但他们通用框架本质上都是相似的。即先通过一种方式得到节点的连接矩阵,再通过一种方式对该连接矩阵进行分解。根据对节点邻域的定义不同,不同的图嵌入算法将得到不同的连接矩阵。例如有的算法直接用邻接矩阵进行嵌入,skip-gram算法通过设置随机游走的窗口长度寻找邻域。得到连接矩阵也就是得到了节点的邻域信息,不同的嵌入算法按照不同的方式利用邻域信息进行嵌入。
论文[2]从数学上对基于skip-gram的网络嵌入方法进行了理论证明:
DeepWalk,Line,PTE从理论上讲都是一种隐式的矩阵分解。(这篇文章从数学书推导出了三种模型近似的矩阵分解形式);
当节点的上下文规模被设为1时,Line实际上是DeepWalk的一个特殊形式;作为Line的一种扩展,PTE可以被看作多个网络的拉普拉斯矩阵的联合分解;
这篇文章发现了DeepWalk的隐式矩阵和图拉普拉斯算子之间的理论联系。
文中推导出的关于DeepWalk,Line,PTE和node2vec的近似隐性矩阵分解形式为:
2DeepWalk的矩阵分解
矩阵分解的一般形式为 W=UV,而基于skip-gram的嵌入算法在学习过程中却从而产生过类似的矩阵分解形式。本节将以DeepWalk为例,分析其学习方