一言以蔽之,DeepWalk是在graph上,通过随机游走来产生一段定长的结点序列,并将其通过word2vec的方式获得各个结点的embedding的算法。

DeepWalk一共涉及以下几个内容:

  • 随机游走的一些知识
  • DeepWalk如何做随机游走
  • Word2Vec的一种训练方式

DeepWalk 使用图中节点与节点的共现关系来学习节点的向量表示。在描述节点与节点的共现关系的过程中,DeepWalk 给出的方法是使用随机游走 (RandomWalk) 的方式在图中进行节点采样。

随机游走

随机游走(Random Walk)是一种数学统计模型,它是一连串的轨迹所组成,其中每一次都是随机的。它能用来表示不规则的变动形式,如同一个人酒后乱步,所形成的随机过程记录.通常,随机游走一个简单的随机游走的例子是在整数在数轴上的随机游走,它从0开始,然后每一步以相同的概率移动+1或−1, 那么在图上的随机游走也按等概率的原则,随机的选取当前结点的邻居结点作为下一次访问的结点:所以理论上,RandomWalk 是一种可重复访问已访问节点的深度优先遍历算法。给定当前访问起始节点,从其邻居中随机采样节点作为下一个访问节点,重复此过程,直到访问序列长度满足预设条件。

DeepWalk的随机游走

这里贴一张DeepWalk的算法

uploading-image-790981.png

算法包含几个重要的参数:

  • \(w\): Word2Vec的采样窗口大小
  • \(d\): 每个结点embedding的维度
  • \(\gamma\):这个参数意思是我要重复\(\gamma\)次从不同结点进行随机游走的次数,可以理解为进行\(\gamma\) 个 epoch
  • \(t\): 游走的长度,也就是结点的数量

    上面的\(\gamma\)意思也就是希望多重复几次相同开始结点的随机游走,作者认为这样能加快随机梯度下降的收敛速度。

具体实现层面:

我们可以把\(\gamma\)并行化处理,其次,算法中的shuffle(V)的话其实就是把所有的node都全部打乱,然后挨个的遍历一遍并做随机游走。在随机游走的时候,我们可能并不能保证每次都能拿到规定的长度,这时候可以不用管,直接break掉,有多少算多少,因为这些后面可以交给Word2Vec进行处理。

模拟一下随机游走:

def deepwalk_walk(walk_length, start_node):
walk_seq = [start_node] while len(walk_seq) < walk_length:
curr_node = walk[-1]
cur_node_nbrs = list(G.neighbors(curr_node))
if len(cur_node_nbrs) > 0:
walk.append(random.choice(curr_node_nbrs))
else:
break
return walk_seq

Word2Vec的训练方式

拿到结点序列之后,我们将其看作是一段自然语言序列,这样就可以顺其自然的送到W2V里面train。

Graph Embedding-DeepWalk的更多相关文章

  1. 推文《阿里凑单算法首次公开!基于Graph Embedding的打包购商品挖掘系统解析》笔记

    推文<阿里凑单算法首次公开!基于Graph Embedding的打包购商品挖掘系统解析>笔记 从17年5月份开始接触Graph Embedding,学术论文读了很多,但是一直不清楚这技术是 ...

  2. 关于embedding-深度学习基本操作 【Word2vec, Item2vec,graph embedding】

    https://zhuanlan.zhihu.com/p/26306795 https://arxiv.org/pdf/1411.2738.pdf https://zhuanlan.zhihu.com ...

  3. Graph Embedding Review:Graph Neural Network(GNN)综述

    作者简介: 吴天龙  香侬科技researcher 公众号(suanfarensheng) 导言 图(graph)是一个非常常用的数据结构,现实世界中很多很多任务可以描述为图问题,比如社交网络,蛋白体 ...

  4. Graph Embedding总结

    图嵌入应用场景:可用于推荐,节点分类,链接预测(link prediction),可视化等场景 一.考虑网络结构 1.DeepWalk (KDD 2014) (1)简介 DeepWalk = Rand ...

  5. graph embedding 使用方法

    无论是network embedding 还是graph embedding都是通过节点(node)和边的图,学出每个节点的embedding向量. 比较流行的算法有: Model Paper Not ...

  6. 深度解析Graph Embedding

    Graph Embedding是推荐系统.计算广告领域最近非常流行的做法,是从word2vec等一路发展而来的Embedding技术的最新延伸:并且已经有很多大厂将Graph Embedding应用于 ...

  7. [论文阅读笔记] GEMSEC,Graph Embedding with Self Clustering

    [论文阅读笔记] GEMSEC: Graph Embedding with Self Clustering 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问题 已经有一些工作在使用学习 ...

  8. 论文阅读 Real-Time Streaming Graph Embedding Through Local Actions 11

    9 Real-Time Streaming Graph Embedding Through Local Actions 11 link:https://scholar.google.com.sg/sc ...

  9. GNN 相关资料记录;GCN 与 graph embedding 相关调研

    最近做了一些和gnn相关的工作,经常听到GCN 和 embedding 相关技术,感觉很是困惑,所以写下此博客,对相关知识进行索引和记录: 参考链接: https://www.toutiao.com/ ...

  10. GNN 相关资料记录;GCN 与 graph embedding 相关调研;社区发现算法相关;异构信息网络相关;

    最近做了一些和gnn相关的工作,经常听到GCN 和 embedding 相关技术,感觉很是困惑,所以写下此博客,对相关知识进行索引和记录: 参考链接: https://www.toutiao.com/ ...

随机推荐

  1. [Linux ] 编译 ffmpeg 使用 AV1 编码 svt_av1 编码器

    编译带 AV1 编码器的 ffmpeg 安装 aom git clone --depth 1 https://aomedia.googlesource.com/aom mk build cmake - ...

  2. [C/C++] PCWSTR LPCTSTR等等

    目录 为什么会有这个 L"" 宏 LPCWSTR字符串比较 wchar_t 和 char 之间转换 关于 ANSI编码 乌拉~~~ 这是我第一百篇博文咯~ 为什么会有这个 真的开发 ...

  3. 摆脱鼠标系列 vscode 向右拆分编辑器 ctrl + 右箭头

    摆脱鼠标系列 vscode 向右拆分编辑器 ctrl + 右箭头 为什么 今天看见一个两栏工作的,左侧放的是目录大纲,右侧是代码内容 用快捷键 ctrl + 右箭头 快速扩展一个,关闭可以ctrl + ...

  4. FastStone Capture 屏幕录像软件推荐 支持录像的时候放大屏幕

    FastStone Capture(屏幕截图软件)v9.7中文注册版 http://www.ucbug.com/soft/25602.html

  5. 告别繁琐!1分钟带你构建RabbitMQ消息应用

    支持.Net/.Net Core/.Net Framework,可以部署在Docker, Windows, Linux, Mac. RabbitMQ作为一款主流的消息队列工具早已广受欢迎.相比于其它的 ...

  6. Global AI Bootcamp 成都站 圆满结束!

    3月10日星期天下午2点「Global AI Bootcamp 2024 - 成都站」,在成都银泰中心蔚来汽车会议区圆满结束了! 本次活动共计吸引了约50名IT行业从业者线下参与,他们分别来自成都各行 ...

  7. linux文件编辑

    1.VIM基本概述 1.什么是VIM? vi和vim是Linux下的一个文本编辑工具.(可以理解为windows的记事本,或word文档) 2.为什么要使用VIM? 因为Linux系统一切皆为文件,而 ...

  8. JS(循环)

    一 for循环 在程序中,一组被重复执行的语句被称之为循环体,能否继续重复执行,取决于循环的终止条件.由循环体及循环的终止条件组成的语句,被 称之为循环语句 1 语法结构 for循环主要用于把某些代码 ...

  9. View之Canvas,Paint,Matrix,RectF等介绍

    目录介绍 1.Paint画笔介绍 1.1 图形绘制 1.2 文本绘制 2.Canvas画布介绍 2.1 设置属性 2.2 画图[重点] 2.3 Canvas对象的获取方式 2.4 Canvas的作用 ...

  10. 记录--实时音视频功能简析(live-pusher与live-player)

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 使用须知 2017年下半年,微信6.5.21版本支持在线音视频功能.开发者可以通过两个音视频组件 和 实现实时地在线直播.视频通话.语音通 ...