图的表示学习的目的就是获得独立于不同任务的高效特征,通俗点讲就是能够针对不同任务学习得到适合任务的嵌入表示。
Node Embedding的目的就是能够将节点映射到不同的embedding空间:
下面是一个Zachary's Karate Club Network的2维节点Embedding展示:
这一节我们主要掌握下如何学习节点的嵌入向量
首先,假设我们有一个图
:
代表节点的集合
代表链接矩阵 为了方便起见,我们默认认为节点没有其他的额外特征,如下图所示:
我们的目标是能够学习到节点的嵌入表示,这种节点嵌入的相似性能够近似节点在图中的相似性。
图中
代表对节点
进行编码表示得到
,同样
代表对节点
进行编码表示得到
Encoder
能够将节点映射成向量DEC
能够将节点向量映射成相似性分数节点嵌入的相似性 :
其中有两个非常关键因素:编码和相似性函数。编码器能够学习到节点的向量,相似性函数能够提供我们优化的目标,如果两个节点在图中存在边或者距离越近,那么它们对应的节点向量在向量空间中相似性也会越大。
如何选择定义节点相似性的方法是关键的地方,我们考虑下什么情况下,两个节点的相似性比较高?
为了方面接下来的公式推导,我们统一下符号标记:
: u节点的嵌入向量
: 从节点
出发通过随机游走访问节点
的概率
将一个数映射到(0,1)的区间