关于‘graph embedding’中‘deepwalk’和‘node2vec‘的理解(简单版本)

本文适用于对‘deepwalk’和‘node2vec’最简单的理解,复杂的算法运算本文没有提及,本文主要帮助刚上手的朋友们能更好的看懂讲算法的文章而创作,作者把讲其中算法的视频放在了文章底部(我认为讲得很清晰),供读者参考!!

(一):为什么要做‘graph ebedding’

(1):如果用‘one-hot’等进行编码时,如果节点数量比较多,编码的向量长度会比较大,而运用’graph embeddng‘的形式的话,会简化节点的向量长度。

(2):运用‘graph embedding’保留了节点在图上的信息,而传统的编码没有这种效果。

(二):‘deepwalk’和‘node2vec’的简单介绍:

(1) :deepwalk

首先要说明的是deepwalk是由两方面构成:

一:随机游走(random walk)

二:Word2vec

deepwalk是这两种算法的结合的图数据结构挖掘算法,能够将图中的节点表示为一个包含潜在信息的向量.如图:

关于‘graph embedding’中‘deepwalk’和‘node2vec‘的理解(简单版本)_第1张图片

上图指的是输入图信号

关于‘graph embedding’中‘deepwalk’和‘node2vec‘的理解(简单版本)_第2张图片

上图为输出的图嵌入

 deepwalk流程:

一:随机游走:

如图所示:

关于‘graph embedding’中‘deepwalk’和‘node2vec‘的理解(简单版本)_第3张图片

我们选定一个节点(如图中的‘root’点),对该节点进行多次的随机游走(这是一个什么概念呢?就是比如root点到w1点后,与w1点相连的除root点外还有两个点,deepwalk会随机选择一个点进行游历,以此类推),如图中绿色路线就是一条随机游走的节点序列。

二:word2vec:

如图所示:

关于‘graph embedding’中‘deepwalk’和‘node2vec‘的理解(简单版本)_第4张图片

我们在随机游走中得到了一个序列,然后可以通过word2vec的方式进行节点训练,选择一个节点(如图中的v4节点),来计算周围v2,v3,v5,v6(计算周围几个的概率是有一个参数设置叫window_size的参数,此处设置的值为2,如果设为1的话,则是计算v3,v5的概率)同时出现的概率,每一个节点都要进过这样的过程,这样就可以获得每个节点embedding的表示。

ps:上述的deepwalk的流程只是其中的一次循环,真正的过程是这样的:先是在随机游走中选一个节点(随机游走图中的每个节点都需要被选中,比如w1,w2节点也需要作为‘root’节点)跑n次,每次得到的节点序列都要经历word2vec进行编译。(简单来说就是进行了一个双重循环)

(2):node2vec

首先我们介绍几个概念:

1:BFS:广度优先搜索

2:DFS:深度优先搜索

简单来说BFS是先探索周围,而DFS则是朝着远离初设节点方向探索,举个简单的例子,就比如一个人住在上海,他出去玩优先探索的是上海周边(BFS),如果他出去玩是优先选择去北京,广州远离上海的方向探索这种就是DFS。

如图:

关于‘graph embedding’中‘deepwalk’和‘node2vec‘的理解(简单版本)_第5张图片

如果说deepwalk是一种随机游走的话,node2vec则是有策略的随机游走,如下图:

关于‘graph embedding’中‘deepwalk’和‘node2vec‘的理解(简单版本)_第6张图片

当t节点游走到v节点之后,之后v节点游走到下个节点就有点不再是随机的,到每个节点是有一定概率的,而这种概率在图中左下角的'π_vx'表示

w_vx表示v节点到下一个x节点的边权重,α_pq(t,x)则表示节点t(root节点)到x节点的距离(如t到x1距离为1,则α_pq=1)的值,而p,q是自己设置的参数,p,q的大小会影响到你的算法是DFS还是BFS,下面会具体阐述。而图中的右下角为v到各个节点的概率。

如果q的值小则会偏向于探索能力强,探索深(v节点会倾向于往x2,x3处走),而刚好符合DFS探索深度的概念。

如果p值小则会优先进行周围的探索(v节点会倾向于往x1处走),符合BFS的概念。

(三):参考资料:

一:deepwalk和node2vec的算法视频:

计算机博士带你3天搞定图神经网络GN门到精通!(课件源码)_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1FS4y1o77J?p=5&spm_id_from=333.1007.top_right_bar_window_history.content.click

你可能感兴趣的:(算法,机器学习,数据挖掘,深度学习)