本文主要是介绍【Graph Embedding】: DeepWalk算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
论文“DeepWalk: Online Learning of Social Representations” 发表在kdd2014,
下载地址:https://arxiv.org/pdf/1403.6652.pdf
作者开源的代码:https://github.com/phanein/deepwalk
文章提出的deepwalk用于学习图网络中节点的低维表示,学习出的低纬embedding可以被用于各种任务。其实deepwalk的思路我已经在https://blog.csdn.net/sxf1061926959/article/details/88078008中做了介绍,方便自己以后学习,单独记录一下。
文章提供的思路很简单,我觉得这个算法很不错的一点是可以做实时训练,比如来一个新的节点,因为图节点的训练都是基于随机游走选择的session来进行的,所以新加入的节点,只需要对其邻近的节点选择合适的session进行训练就能使用,非常方便。能很好的应用到工业界中。
思路
整体的代码逻辑如下:
1.构造graph
根据自身需求构造好一个同构网络G(V,E),指定参数w,为skip-gram的窗口大小,d为学习的embedding向量长度,r为重复训练节点的次数,t为随机游走截取session的长度。
2.随机游走
算法以构造好的同构网络作为输入,对图中节点做shuffle后遍历节点,做随机游走。其中每次的随机游走node按DFS从邻近node中均匀采样下一个node,下一个node继续重复以上过程,直到事先指定的长度为止。以上动作重复r次。
3.skip-gram训练
第二步可以生成大量的node 的session,将这些session看成句子,session中的node节点看作单词,利用skip-gram算法对其进行训练。从而生成每个node节点的embedding向量。
完
这篇关于【Graph Embedding】: DeepWalk算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!