摘要
什么是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)Line(2015)Node2vec(2016)EGES(2018)
node2vec: Scalable Feature Learning for Networks
-
论文地址:https://www.kdd.org/kdd2016/papers/files/rfp0218-groverA.pdf 【KDD 2016】
-
node2vec的软件实现:http://snap.stanford.edu/node2vec/
算法讲解:
论文的前两部分几乎都是吧啦吧啦的废话。。。
Node2vec是对网络中的节点学习连续特征表达的算法框架,node2vec把节点映射到了一个“最大化保留节点的网络邻居的可能性”的低维空间。node2vec是针对可扩展网络特征学习的一个半监督算法,使用随机梯度下降(SGD)来优化一个传统的基于图的目标函数。直观地,node2vec生成了“在一个d维特征空间中保留了节点的网络邻居的最大可能性”的特征表示。node2vec采用一个二阶随机游走方法来生成节点的网络邻居节点。
Node2vec的主要贡献在于灵活定义了一个节点的网络邻居。由于之前的算法没能够提供一个灵活的网络节点抽样方法,node2vec通过设计一个“与其他的抽样策略不相关的”灵活的目标函数并提供了调整网络空间的参数。