【推荐系统】Graph Embedding系列之node2vec: Scalable Feature Learning for Networks

摘要

什么是embedding?

Embedding在数学上表示的是一个映射关系,F: X -> Y,也就是一个函数。该函数具有两个性质:injective和structure-preserving。Injective,即我们所说的单射函数,对于每个 Y 只有唯一的 X 对应,反之亦然;structure-preserving,结构保存,比如在X所属的空间上X1<X2,那么映射后在Y所属空间上Y1<Y2。

深度学习中,Embedding特指用一个低维度向量表示一个实体,可以是一个词(Word2Vec),可以是一个物品(Item2Vec),亦或者网络关系中的节点(Graph Embedding)。

Embedding的初始化状态可以理解为是一组随机数,随着算法的优化与不断迭代更新,当网络达到收敛状态的时候,网络中各个层的参数就相对固化,这样就得到了隐层权重表,此时就相当于得到了我们想要的embedding。在实际应用中,通常将神经网络倒数第二层的权重参数当作对应样本的embedding。

什么是Graph Embedding?

Graph Embedding用低维、稠密、实值的向量表示网络中的节点。目前,Graph Embedding已经是推荐系统、计算广告领域非常流行的做法,并且在实践后取得了非常不错的线上效果。

Graph Embedding技术将图中的节点以低维稠密向量的形式进行表达,要求在原始图中相似(不同的方法对相似的定义不同)的节点其在低维表达空间也接近。得到的表达向量可以用来进行下游任务,如节点分类,链接预测,可视化或重构原始图等。

Graph Embedding是把图结构转化成一个向量或者一组向量的变换,在这里,Embedding能够捕捉到图的拓扑结构、节点到节点的关系、其他关于图、子图和节点的相关信息等。

Graph Embedding算法的演进

DeepWalk(2014)\rightarrowLine(2015)\rightarrowNode2vec(2016)\rightarrowEGES(2018)


node2vec: Scalable Feature Learning for Networks

  1. 论文地址:https://www.kdd.org/kdd2016/papers/files/rfp0218-groverA.pdf 【KDD 2016】

  2. Github地址:https://github.com/aditya-grover/node2vec

  3. node2vec的软件实现:http://snap.stanford.edu/node2vec/

算法讲解:

论文的前两部分几乎都是吧啦吧啦的废话。。。

Node2vec是对网络中的节点学习连续特征表达的算法框架,node2vec把节点映射到了一个“最大化保留节点的网络邻居的可能性”的低维空间。node2vec是针对可扩展网络特征学习的一个半监督算法,使用随机梯度下降(SGD)来优化一个传统的基于图的目标函数。直观地,node2vec生成了“在一个d维特征空间中保留了节点的网络邻居的最大可能性”的特征表示。node2vec采用一个二阶随机游走方法来生成节点的网络邻居节点。

Node2vec的主要贡献在于灵活定义了一个节点的网络邻居。由于之前的算法没能够提供一个灵活的网络节点抽样方法,node2vec通过设计一个“与其他的抽样策略不相关的”灵活的目标函数并提供了调整网络空间的参数。

 

 

 

参考博文:

  1. 优秀博文:笔记︱基于网络节点的node2vec、论文、算法python实现

  2. 优秀博文:关于Node2vec算法中Graph Embedding同质性和结构性的进一步探讨

  3. 优秀博文:【Graph Embedding】node2vec:算法原理,实现和应用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章