《BiNE: Bipartite Network Embedding》——论文阅读笔记

《BiNE: Bipartite Network Embedding》——论文阅读笔记

俗话说,不动笔墨不读书,阅读论文也是一样,经常会有初读一遍觉得自己似乎已经看懂了,但其实还有很多地方没有吃透的情况出现。这种情况其实并不容易被发现,而尝试自己去总结,归纳论文,写一篇阅读笔记则是一个检验自己是否真正学懂的好方法,这也是我创建这个专栏的目的:

  1. 考察自己是否真的读懂了这篇论文
  2. 留下自己学习的足迹,温故知新

由于本人目前只是一名未经过任何科研训练的普通本科生,因此文章里的所有内容都只是我个人的理解,我无法对这篇文章内容的准确性和严谨性做任何保证。因此,请不要把它当做一篇可靠的论文解读,这篇文章仅仅写下了我个人阅读论文期间的心得体会,其中必然有理解错误与不当之处,希望如果有大佬发现,能在评论区指出。


这篇文章是专栏的第一篇文章,后续我会继续更新我读过的论文,所选论文的主题主要涉及机器学习,深度学习,图挖掘,网络表示学习等相关的内容,当然也不排除有其它领域的论文出现。

这篇论文发表在SIGIR 2018

论文链接:论文地址

项目代码:源代码

我会按照论文的章节顺序整理文章内容,里面会加入一些我个人的理解。


摘要

论文提出了一种可以应用在二部图(bipartite network/graph)上的表示学习方法(representation learning method )。由于目前大部分的工作都是应用在同质网络上,所以这些baseline的模型在二部图这种特殊的异质网络上并不是最优的。

论文提出的BiNE模型首先进行有目的性的随机游走(random walk),生成节点序列。然后设计一种既考虑了显式关系(explicit relations),又考虑到了隐式关系(implicit relations)的新型优化框架,来学习节点的表示。

[1]所谓显式关系,就是指能从数据集中直接获得的关系信息,如图中可观测到的边的信息。

[2]所谓隐式关系,就是指数据中隐含的关系信息,例如两个节点间虽然并没有边相连,但它们连接了同一个节点,我们就有理由认为这两个节点之间存在着某种隐式关系。

得到的节点表示可用于各种实际应用任务当中,论文最后实验部分进行了链接预测(link prediction)和推荐(recommendation)的应用试验。定量和定性的分析都证明了BiNE的有效性。

1.INTRODUCTION

本章节首先介绍一些关于二部图(bipartite network/graph),图结构数据与嵌入(embedding) 的基础知识,指出分析网络数据的重点在于有效地学习节点的表示,即将图中的节点表示为一个低维的向量。得到的节点表示就能被用于各种实际的应用任务中。

接着介绍一种经典的应用于同质图上的算法:DeepWalk,如果对于这个算法不太了解,请自行翻阅相关论文和教程。然而,当尝试把这一方法应用于二部图上时,会出现两个问题:

  1. DeepWalk算法适用于同质网络,而二部图则是一个天生的异质网络,二部图的边连接了左右两种不同类型的节点。同时,目前的网络嵌入方法基本没有考虑去建模图中的隐式关系。
  2. DeepWalk的随机游走策略限制了对数据的采样,一是以每个节点为起点的游走序列的数量都相同,二是得到的这些序列的长度也都是相同的,这样会导致采集来的数据的分布与真实的数据分布会存在差异,如下图所示

虽然目前也有应用于异质网络上的模型,且我们可以认为二部图是一种特殊的异质网络,但这些模型也都有缺陷,比如metapath2vec++,它视显式关系与隐式关系在节点表示学习中同等重要,这点与我们的常识相悖,一般来讲,显式关系的重要性是要大于隐式关系的。

接下来论文引出BiNE(Bipartite Network Embedding)模型,有如下特点:

  1. 对于网络中的隐式关系和显示关系,BiNE分别设计了对应的目标函数,使得平时被忽略的隐式关系也能被显式的建模出来。事实证明这样做是有助于提高模型的表现成绩的。
  2. BiNE同样采用了随机游走的策略,但与DeepWalk稍有不同。一是根据节点的重要性,来决定有多少序列以该节点为起点。二是得到的random walk的长度并不是完全相同的,而是有一个概率来控制游走到哪一步停止。

2.RELATED WORK

这一章节简要提及了各种与网络表示学习相关的算法,对我个人来说,这一章节更像是一次知识点的回顾,一次对经典方法的查漏补缺。BiNE仅仅借鉴了其中很少一部分方法的思想,并且都有详细的解释,因此在这里我仅仅列举出文章中提到的各种方法,不再一个一个说明。

matrix factorization (MF)-based:

singular value decomposition (SVD)、multiple dimensional scaling (MDS)、kernel PCA、spectral embedding、marginal fsher analysis (MFA)、LLE 、ISOMAP

Neural network-based :

DeepWalk、Node2vec、Skip-gram、LINE、SDNE、GraRep、metapath2vec++、HNE、EOE、HITS、Co-HITS、LFM

3 PROBLEM FORMULATION

在介绍完其他人的工作之后,文章正式开始定义所用的标记和要解决的问题。

首先定义一个二部图G = (U ,V , E),其中,U V分别表示两种类型的节点的集合,E ⊆ U ×V 定义为二部图内连接两类节点的边的集合。每一个边有一个非负的权重wij,用于表示两节点ui与vj关系的强弱。

二部图嵌入任务的目的是,给定一个二部图G及其边的权重,将网络中所有的节点映射到一个低维的向量空间,形式化的描述如下:

4 BINE: BIPARTITE NETWORK EMBEDDING

对于一个优秀的embedding算法而言,需要能够在嵌入后的低维空间内很好地重建出原网络。BiNE通过已存在的边学习表示显式关系,通过有传递关系的边学习表示隐式关系,并将两种方式结合起来来学习最终的节点表示。

4.1建模显式关系

对显式关系的建模,考虑两个已连接边的节点,它们的joint probability定义为:


显然,两节点边的权重值越大,概率值越大。而至于如何度量两个节点的嵌入在空间内的相近度,则参考了word2vec取向量内积的思想,定义如下:

ui与vj分别为得到的节点向量

接着就能开始定义显式关系的目标函数了,使用KL散度来衡量俩分布的差异,minimize即可

直观理解的话,对于两个相连很紧密的节点,如此学习到的两节点的表示在低维的向量空间中也是彼此靠近的,即保持了所谓的局部临近性。

4.2 建模隐式关系

这一章节是论文中比较难理解的部分。我们说,对于两个相同类型的节点,尽管它们之间不存在直接相连的边,但如果存在一条从ui到uj的路径,我们就认为这两个节点之间存在着某种隐式关系。也就是说,论文所指的节点之间的隐式关系,是相对于两个同类型的节点来说的。但是问题在于,计算出任意两个节点存在的所有路径是非常费时费力的一件事,尤其是面对大规模的二部图数据。为此,就需要用到DeepWalk里的random walk,生成两个包含不同类型节点的语料库(corpus)。

4.2.1 构建顶点序列的语料库

由于二部图periodicity issue的存在,无法直接在原图上运行random walk,我们需要把一个二部图拆分为两个同质网络,这个则是借鉴了Co-HITS的工作,定义两相同类型的节点的二阶相似度如下:

如此,我们可以得到两个同质网络的权重矩阵,其维度大小分别为|U | × |U | ,|V | × |V |。

这样我们就能在这两张“同质网络”上运行截断随机游走了。但是需要注意的是,我们之前提到过DeepWalk的随机游走策略并不是最优的,因此我们需要重新设计一种偏置的和自适应的随机游走发生器(biased and self-adaptive random walk generator)。具体方式如下:

  1. 对每一个节点,它的中心性(centrality)越强,从它开始的random walk序列越多。
  2. 定义一个概率值,使得random walk会在某一步随机地停止,得到长度不同的节点序列。

算法如下:

4.2.2 开始建模隐式关系

在前面生成的两个语料库上分别使用Skip-Gram模型来学习节点的表示。目标函数如下:

这里只列出节点类型U的公式,对于V类型的节点,只需要把u换成v,i换成j即可

其中:

S为语料库中的节点序列,Cs(ui)为在该序列中,节点ui的上下文节点的集合。

我们可以看到计算P的时候采用了softmax,但这一步也是个烧时间大户,所以我们选择使用负采样的方法来逼近这个目标函数,而不是直接运算softmax。

4.2.3 负采样

这一部分使用了局部敏感哈希(Locality-Sensitive Hashing, LSH)方法,说实话,这块我是真没太看懂,为了不误导别人,我决定只贴上最终得到的公式,对公式的理解和推导请看原论文,希望有大佬能给出解释:

其中,P(z|uj )为:

将(8)的p(uc, NSns (ui )|ui )替换掉p(uc |ui ),就能得到最终的优化公式。上面公式都是只针对类型u的节点,类型v的节点也是同理,不再重复介绍。

4.3 联合优化

以上,在4.1和4.2,我们分别能通过显式关系和隐式关系得到节点的表示,接下来需要将它们结合起来形成最终的节点表示。最终的目标函数公式为:

alpha,beta,gamma为超参

使用Stochastic Gradient Ascent algorithm (SGA)来优化这一函数。但是优化这个函数的不同部分需要不同的训练实例,因此我们必须分步进行优化操作。

首先优化显式关系,即L中的gamma部分,更新节点表示的公式如下所示:

λ为学习率

接着优化隐式关系,公式如下:

其中I(z,ui)决定节点z是否为ui的上下文节点。而上下文向量的更新公式如下:

这样优化过程就完成了。如果觉得上面这一个接一个的公式实在是让人看得脑仁疼的话,可以看下面这个训练BiNE模型的算法总结:

5.EXPERIMENTS

以上就是对BiNE模型的介绍,接下来就是实验部分了。论文进行了两类应用实验:链接预测和推荐,并尝试探究如下四个问题:

  1. 和baseline方法与其他新型embedding方法相比,BiNE的实际表现到底如何?
  2. 明确地建模隐式关系是否真的有助于学习节点的表示?
  3. 论文费劲心思设计的随机游走生成器是否真的有效?
  4. 超参数的设置如何影响BiNE模型的性能?

实验部分的内容其实乏善可陈,在这里简单概括一下。

RQ1:

对于链接预测任务,论文使用了来自Wikepedia和Tencent二部图数据集,分别表示了网页-作者和QQlive上用户-电影的关系信息。对比结果如下:

对于推荐任务,使用了DBLP,Movielens,VisualizeUs这三个常见的数据集,实验结果如下:

RQ2:

可以看到,建模隐式关系确实能帮助提高节点表示的能力。

RQ3

可以看到,使用特殊的random walk方法就能很接近地拟合真实情况的分布

RQ4

枯燥的调参工作和炫酷的可视化工作

6 CONCLUSIONS

论文提出BiNE,一种新型的针对二部图的embedding模型,通过结合网络中节点间的显式关系和隐式关系来学习节点的表示,并用实验证明了该模型的有效性。

这个工作中只考虑了通过观测已存在的边来揭示显式关系,但是如果网络的边的信息存在缺失,可能就会导致模型无法正常工作,而在现实情况下,丢失边的信息是很常见的情况。为解决这一问题,可以通过添加其他的信息,比如节点的数字特征,文字描述等其他属性进行补充。另外,许多二部图都是动态更新的,如何根据网络的更新动态地更新节点的表示,也是BiNE可以改进的地方。

参考

  1. ^显式关系
  2. ^隐式关系
发布于 2019-09-21

文章被以下专栏收录