今天我们介绍Graph Embedding第二个算法——LINE(Large-scale Information Network Embedding)
一阶与二阶相似度
Deepwalk算法度量节点之间的相似性是根据是否有边相连决定的,LINE算法改变了这种度量方式,它引进了一阶相似度和二阶相似度。
一阶相似度(First-order Proximity)
对于无向图G(V,E)的每一条边edge(i,j),其相连的两个顶点vi和vj我们定义其一阶相似度:
同时定义其经验分布:
注意:wij不是上文中定义的一阶相似度pij
对于所有的V,引进KL散度衡量经验分布与一阶相似度的相似性:
注:KL散度=交叉熵-熵
我们希望这两个分布越接近越好,于是优化目标函数是:
这里说明一下为什么一阶相似度只适用于无向图,因为对于pij来说,具备对称性,即交换顶点vi和vj位置,结果不变;但对于有向图来说wij不一定等于wji
二阶相似度(Second-order Proximity)
二阶相似度适用于无向图和有向图两种情况,它的出发点是:每一个顶点扮演两个角色,一个是作为顶点的时候代表它自己,另一个是作为其他顶点的上下文(邻居),因此,把这两个角色用两个向量表示:
因此对于每一条边edge(i,j),定义在顶点vi下的 “context” vj 的条件概率:
|V|就是顶点的总数,上面公式是说对于顶点vi,各节点为其context的概率。进一步,如果p2(•|v1)和p2(•|v2)的概率分布是相似的(即v1和v2的context相似),那么这两个顶点就是相似的.
同样引进经验分布:
我们希望二阶相似度与经验分布越接近越好,同理使用KL散度衡量,最后要优化的目标函数是:
负采样优化目标
上一节,我们知道要优化的目标函数有两个:
为了使得图模型同时考虑一阶和二阶相似性,先分别训练两个相似度的向量表示,然后组合(直接拼接)在一起使用。
对于二阶相似度,直接优是比较困难的,采取负采样方法,每一条边edge(i,j)优化目标函数转为: