metapath2vec: Scalable Representation Learning for Heterogeneous Networks 阅读笔记

转载请注明出处:

每周一篇机器学习论文笔记zhuanlan.zhihu.com图标

论文来源:KDD 2017

论文链接:2017_KDD_metapath2vec...

论文原作者:Yuxiao Dong , Microsoft Research , Homepage

(侵删)

Abstract

这篇文章是关于异构网络的特征表示学习。异构网络的最大挑战来源于不同种类的节点与连接,因此限制了传统network embedding的可行性。论文提出了两种特征学习模型:metapath2vec以及metapath2vec++,它们的具体做法是基于元路径的随机游走来指定一个节点的邻居,之后利用异构skip-gram模型来实现embedding。


Introduction

传统的网络挖掘方法,一般都是先将网络转化成邻接矩阵,然后再用机器学习的模型从而完成网络挖掘任务,比如社区检测,连接预测,离群点检测等等。然而这样的话,邻接矩阵通常都很稀疏,且维数很大。network embedding是近来比较火的领域,近几年也是发展迅猛。它主要是从网络中学到隐式的表达矩阵,使得网络重要的信息能够被包含在一个新的相对低维的空间向量中,之后再对这个隐式表达矩阵采样机器学习的算法,从而能够更好地完成网络挖掘任务。

近年来各种顶会上也出现了很多network embedding的文章,公认不错的一些算法有deepwalk, node2vec, line等等,然而它们大多数都是针对同构网络的,也就是忽略了网络的异质性,只考虑一种节点对象中的一种关系。然而,现实生活中更多存在的网络是包含不多种类的节点以及连接。比如在DBLP网络,节点种类有会议,论文,作者等,而不同种类节点之间的连接也代表着不同语义,比如说论文和论文之间存在着引用和被引用关系,作者和作者存在合著关系,论文和会议存在发表/被发表关系。因此相比于同构网络,异构网络融合了更多信息,以及包含更丰富的语义信息。所以作者提出了两个在异构网络做network embedding的算法模型,metapath2vec以及metapath2vec++。


Algorithm

这篇论文的算法还是比较简单的。首先回顾deepwalk算法,它的原型是NLP领域中Mikolov提出的word2vec算法,本质上是基于神经网络建立统计语言模型的表示学习。

word2vec算法在网上已经有很多大牛进行过浅谈详解,感兴趣的可以查一查。

word2vec主要有两种模型,一种是CBOW,一种是Skip-Gram。 CBOW模型的训练输入是某一个特征词的上下文相关的词对应的词向量,而输出就是这特定的一个词的词向量。Skip-Gram模型和CBOW的思路是反着来的,即输入是特定的一个词的词向量,而输出是特定词对应的上下文词向量。经过学习,隐层到输出层的权重参数就是最后所需的该单词的词向量,也就是我们需要的embedding空间。

将word2vec的想法应用到网络分析中是14年KDD的Deepwalk提出来的。思路很简单,就是通过在网络上随机游走,从而保存“单词上下文”这样一个概念。将每一条随机游走路径看做一句话,节点看做单词,节点的邻居节点看做上下文,之后同样是利用Skip-Gram模型来完成network embedding。

随机游走从局部上一定程度保持了节点与它邻居之间的连接性,即网络结构信息,然而对于异构信息网络来说,由于节点与连接的异质性的存在,所以异构network embedding最大的难点在于如何有效地在多种类型节点之间保存“节点上下文”的概念。

论文提出的想法是:基于预先指定的元路径来进行随机游走来进行随机游走,构造路径,从而能够保持“节点上下文”的概念。

meta-path-based random walks:

这样一来就可以产生一条在不同类型的节点之间且能同时捕捉到网络结构信息以及语义的路径。

在得到随机游走路径后,就可以进行skip-gram的建模。论文提出了两种算法:metapath2vec以及metapath2vec++,它们唯一的不同是skip-gram不同。在metapath2vec中,softmax值是在所有节点无论什么类型上进行归一化;而在metapath2vec++中,softmax值是在相同类型节点上进行归一化。

softmax in metapath2vec: p(c_t|v;\theta)=\frac{e^{X_{c_t}}*e^{X_v}}{\sum_{u \in V}{e^{X_{u}}*e^{X_v}}}

softmax in metapath2vec++: p(c_t|v;\theta)=\frac{e^{X_{c_t}}*e^{X_v}}{\sum_{u_t\in V_t}{e^{X_{u_t}}*e^{X_v}}}

由于网络的节点一般很多,归一化会耗时严重,所以会采样负采样进行优化加速。直接用原始softmax函数里的分子定义了逻辑回归的函数,所以objective function为:

Experiment

(作者主页分享了代码以及数据)

对比实验主要有Deepwalk,node2vec,LINE,PTE,实验进行了三个任务,分别是:节点多分类,社区挖掘,相似度搜索。数据采用的是AMiner Academic Network,包含3m个论文节点,3800+会议节点,1.7m作者节点,人为地划分了8个领域,给会议以及作者节点标上类标。

节点多分类任务用的是逻辑回归分类,测量指标为Macro-F1和Micro-F1;社区挖掘用的是KMeans算法,测量指标是NMI;相似度搜索是一个case study,用的是cosine similarity进行相似度测量。实验结果显示,论文提出的算法效果更好。

除此之外,论文提出的算法也适用于并行化运行。


个人看法

这篇论文的思路比较简单:就是通过一个基于元路径的随机游走,从而将异构信息网络和network embedding这个领域结合在了一起。不过最后embedding得到的隐式表达矩阵是在同一个向量空间的,意思就是虽然异构信息网络的节点种类不同,但都是通过同一个embedding向量空间去表示它们,个人觉得这里会有点欠乏解释性。

network embedding在异构信息网络这一块的话还有很多地方可以探究,需要继续努力学习,希望能有自己的发现。

编辑于 2018-03-19

文章被以下专栏收录