matlab生成随机信号序列_利用随机游走在图(graph)中生成序列

这里直接切入网络表示学习(Graph Embedding/Network Representation Learning),本文将总结多个经典的基于游走的网络表示学习算法。因为基于游走的网络表示学习算法和word2vec如出一辙,同宗同源,我觉得还是紧跟着word2vec文章之后讲比较好。如果你对word2vec还有些许疑问,可以先看一看我上一篇文章:

炫云:Word2Vec​zhuanlan.zhihu.com
eb84061cdbf033c02964283ead3c8f97.png

1. 图嵌入(Graph Embedding)

图嵌入,也叫网络表示学习,目的是为了学习到网络节点或者边的低维稠密向量表示,这样就能很方便地用于后续任务中。图的最基本形式是邻接矩阵,比如下面左侧4个节点组成的图,经过编号后,我们可以获得右侧的邻接矩阵。

f671cf2968d908f4f1aee7d845bd2cdc.png
简单的图示例,以及其邻接矩阵

对于一个大一点的图(比如社交网络)可能有数以亿万计的节点,根本没法读入内存,在写算法题的时候N*N大小的二维数组当N=10000时,就会超内存。而社交网络动辄亿万,这谁顶得住啊...

对于维度较大的矩阵,数学上有着各种优美的矩阵分解算法。以非负矩阵分解为例(NMF),给定矩阵

equation?tex=A_%7Bm%5Ctimes+m%7D ,存在矩阵
equation?tex=B_%7Bm%5Ctimes+k%7D
equation?tex=C_%7Bk%5Ctimes+m%7D 满足
equation?tex=A%3DBC . 我们可以粗略地认为,通过矩阵分解,我们将获得每个节点的两种长度为k的向量表示,即矩阵B的第i行,矩阵c的第i列。突然有种word2vec的既视感... 这种方法虽然不错,但是矩阵维度过大的问题还是没解决,对算法的推广页产生了限制。

2. DeepWalk

时间到了2014年,那是word2vec问世的第二年,Bryan Perozzi[1]创造性地提出了DeepWalk,将词嵌入的方法引入图嵌入,将图嵌入引入了一个新的时代。DeepWalk提出了“随机游走”的思想,这个思想有点类似搜索算法中的DFS,从某一点出发,以深搜的方式获得一个节点序列。这个序列即可以用来描述节点。

34d8023fa159759c11444c41a2c1a86a.png
以节点1为开始节点,长度为4的随机游走示例

依照图中的连边关系,从节点1开始,可能依次经过节点2,6,1,3. 能够经过这些节点的原因是因为相邻的两个节点之间彼此有连边。每个节点每次游走的概率为节点的出度分之一,以节点1为例,将以等概率游走至节点2、3、4、6节点。这个过程非常

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值