deepwalk java实现,DeepWalk:图网络与NLP的巧妙融合

febfc45169d71a67b8f17cd1331881bb.png

作者

| kaiyuan

整理

| NewBeeNLP公众号

最近这段时间一直在做图网络相关,也差不多收尾了,有空整体复盘了下,大致以下几个主题,不过没整理完全哈哈(下次一定

aaaed43e77f0193064885e79f69f4753.png)

08cdd2bec82db60f079c3df6abe70eb2.png

顺手再安利几份资料吧

b86f9769cfbfa5faeb19b0518320007d.png

斯坦福的CS224W课程

清华大学唐杰老师的很多分享

清华大学 thunlp/GNNPapers

一些大佬们的新书:《Graph Representation Learning》、《Deep Learning on Graphs》

等等

ok,回到正题,今天要介绍的这篇是『Graph Embedding』系列第一篇,十分经典

论文:DeepWalk: Online Learning of Social Representations

[1]

代码:https://github.com/phanein/deepwalk

enjoy~

TL;DR

DeepWalk是首次将深度学习技术(无监督学习)引入到网络分析(network analysis)中的工作,它的输入是一个图,最终目标就是获得网络图中每个结点的向量表示 。毕竟万物皆可向量,得到向量之后能做的事情就非常多了。如下所示是论文中给出的Karate network例子。

f9169856491ffc8975a4679ea30c40a6.png

先验知识

说到生成向量表示,最有名的莫过于Word2Vec了,那么是不是可以将network embedding的问题转化为熟悉的word embedding形式呢?这样我们就可以借用word2vec的思想来解决了。

转化的方式就是Random Walk ,通过这种方式将图结构表示为一个个序列,然后我们就可以把这些序列当成一个个句子,每个序列中的结点就是句子中的单词。

ccd84ddb9352a4f423b482e68f81d4fe.png

简单的说,DeepWalk = RandomWalk + SikpGram, 下面我们来具体介绍下两种技术。

Random Walk

随机游走,顾名思义,就是从输入图中的任意一个结点 开始,随机选取与其邻接的下一个结点,直至达到给定长度 , 生成的序列 。在论文中,对于每一个顶点 , 都会随机游走出   条序列。

采用随机游走有两个好处:

「利于并行化」:随机游走可以同时从不同的顶点开始采样,加快整个大图的处理速度;

「较强适应性」:可以适应网络局部的变化;

Skip Gram

word2vec的skip-gram相信大家都非常熟悉了,这里就不再赘述,放一张图。

29e99633f0bce701004b4407bf21ceca.png

DeepWalk

结合上面两点, deepwalk其实就是首先利用random walk来表示图结构,然后利用skip-gram模型来更新学习节点表示。算法流程如下所示:

a43442baaf2c990d42be0103bf05d20e.png

算法有两层循环,第一层循环采样 条路径,第二层循环遍历图中的所有结点随机采样一条路径并利用skip-gram模型进行参数更新。

其中第2步构建二叉树的目的是为了方便后续 SkipGram模型的层次softmax算法。

参数更新的流程如下:

56166e8a63a540fb06b953e3618f142b.png

6c626553e26c671a5b1712cb871da128.png

一个小结

deepwalk可以说给网络学习方向打开了一个新思路,有很多优点:

支持数据稀疏场景

支持大规模场景(并行化)

但是仍然存在许多不足:

游走是完全随机的,但其实是不符合真实的社交网络的;

未考虑有向图、带权图

本文参考资料

[1]

DeepWalk: Online Learning of Social Representations: https://arxiv.org/abs/1403.6652

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值