DeepWalk算法

随机游走

随机游走

幂律分布

前提: 如果一个网络的节点服从幂律分布,那么节点在随机游走序列中的出现次数也服从幂律分布,并且实证发现NLP中单词的出现频率也服从幂律分布。
幂率分布

DeepWalk算法

DeepWalk算法

DEEPWALK(G,w,d,γ,t);G代表网络,w代表窗口大小,d达标维度,γ代表每个顶点随机游走的次数,t代表随机游走的步长
Input:G(V,E);G代表网络,V代表网络中的节点,E代表网络中的边
output:|V|*d的矩阵,每一个顶点都有一个d维的连续向量
1.初始化每个顶点的向量空间
2.建立Huffman树(根据随机游走顶点出现的次数构建)
3.0- γ(表示随机游走 γ次)(进入循环)
4.将V打乱顺序得到O
5.遍历O中的每一个顶点,do(进入循环)
6.得到从vi节点开始的步长为t的随机游走序列
7.使用SkipGram进行参数更新
8.退出里层循环
9.退出外层循环

SkipGram算法

Skip-gram算法

SkipGram(Φ, Wvi , w);Φ代表当前的顶点向量,Wvi代表随机游走生成的序列,w代表窗口大小
1.遍历序列中的每一个节点vi(进入循环)
2.uk ∈ Wvi [j − w : j + w],遍历vi顶点前后w的每一个顶点(进入循环)
3.更新参数(为什么用梯度下降???)
4.退出里层循环
5.退出外层循环

总体过程总体过程

node2vec基本思想

node2vec通过改变随机游走序列生成的方式进一步扩展了DeepWalk算法。DeepWalk选取随机游走序列中下一个节点的方式是均匀随机分布的,而node2vec通过引入两个参数p和q,将宽度优先搜索和深度优先搜索引入随机游走序列的生成过程。宽度优先搜索(BFS)注重临近的节点,并刻画了相对局部的一种网络表示,宽度优先中的节点一般会出现很多次,从而降低刻画中心节点的邻居节点的方差;深度优先搜索(BFS)反应了更高层面上的节点间的同质性。(即BFS能够探究图中的结构性质,而DFS则能够探究出内容上的相似性(相邻节点之间的相似性)。其中结构相似性不一定要相连接,甚至可能相距很远。)如下图所示:
node2vec
NBFS={s1,s2,s3} 局部微观结构
NDFS={s4,s5,s6} 全局宏观结构

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章