layui怎么判断是否为叶子节点_DeepWalk: 图神经网络节点嵌入

DeepWalk: Online Learning of Social Representations

论文题目:

DeepWalk: Online Learning of Social Representations

论文链接: 

http://www.perozzi.net/publications/14_kdd_deepwalk.pdf

代码连接:

https://github.com/phanein/deepwalk

7c7873b76116b407ae1537b23134b37b.gif

轻音乐喜欢可以边听边阅读

引言

文章提出了一种学习图中节点嵌入的潜在表示的方法,这些潜在的表示法在连续向量空间中进行编码,很容易被统计模型利用。DeepWalk是一种在线、可扩展、并行的学习方法。很适合应用到节点分类、异常检测等场景。

92829f5453d148ed92b37afbc4446643.gif

幂次定律

"幂次定律"也叫“80-20法则”,由经济学家维尔弗雷多.帕累托在1906年提出,他认为:在任何一组东西中,最重要的只占其中一小部分,约20%,其余80%尽管是多数,却是次要的。

c6f03a37b2777bf2dcac36b47e6336e9.png

图1 幂次定律对比

自然语言处理中的单词频率已被证明遵循幂次法则,来自语言模型的技术解释了这种分布现象。所以,只需要证明,图中的数据也遵循幂次定律,那么就自然可以应用nlp中的方法来表示。如图,比较了对图进行短随机游走中向量出现的频率与单词在文本信息中出现的频率,发现图的短随机游走也大致满足幂次定律。

文章运用nlp中word2vec应用到图的表示上,把图中对节点的一串随机游走序列对应于word2vec中的上下文信息,表示成向量,进而为后续算法做准备。

输入与输出

063f012641f0b77116f1ed719c491891.png

图2 输入与输出

输入是一个graph的点集和边集,输出是一个二维(x表示特征,y为标签的集合)表示,文章的目的就是学习得到x的低维表示。我们可以看到,具有相同标签的节点被聚集到一起,而不同标签的节点也大多数被分开了。

主要步骤

310b5b3be521b1716029850bee0a0f56.png

图3 Random Walk and Skip-gram

92829f5453d148ed92b37afbc4446643.gif

Random Walk

6636df3c81fda3ba9dd6eba477e7ca60.png

图4 Random Walk 算法

如图是算法的整个流程,3-9行为核心。外循环制定了随机游走的次数,即将每次迭代都看作一次“传递”,并在每次传递过程中遍历一次节点。在开始遍历前,都会随机生成一个遍历顺序。在内循环中,遍历图上所有节点,生成一个节点序列,通过skip-gram学习节点的嵌入。

92829f5453d148ed92b37afbc4446643.gif

Skip-gram

69dbc61fd3682e14b33ede165557db78.png

图5 Skip-gram算法

skip-gram是word2vec中的一种语言模型,定义一个滑动窗口,skip-gram会最大化单词同时出现在这个窗口的概率。

Hierarchical Softmax

正如word2vec中,vocabulary的大小决定了Skip-Gram神经网络将会拥有大规模的权重矩阵,所有的这些权重需要通过数以亿计的训练样本来进行调整,这是非常消耗计算资源的,并且实际中训练起来会非常慢。本文也面临同样的问题,文章采用分层softmax来解决由于节点数量庞大而导致的 softmax 计算成本高昂的问题。

92829f5453d148ed92b37afbc4446643.gif

Hierarchical Softmax概述

c1c19f7c1eac43d36558f40331fb943d.png

图6 树结构

图中数字表示权重,表示节点重要程度图a是常见的二叉树,图b就是图a转换过的最优二叉树。可以看出,D是最重要的,一个原则就是最重要的节点放在最前面,由此构造了图b的哈夫曼树。

它们的带权路径长度分别为:

图a:WPL = 5 * 2 + 7 * 2 + 2 * 2 +13 * 2 = 54

图b:WPL = 5 * 3 + 2 * 3 + 7 * 2 + 13 * 1 = 48

可见,图b哈夫曼树的带权路径长度较小。

2c09f70c0b351a3247690dd0689b71bd.png

图7 哈夫曼编码

哈夫曼编码,左0右1,如图,D编码为0,B编码为10,C编码为110,A编码为111

Softmax其实就是多分类的Logistic Regression,相当于把很多个Logistic Regression组合在一起。Logistic Regression在这里的应用就是判断在哈夫曼树中走左子树还是右子树,其输出的值就是走某一条的概率。

应用到神经网络模型中,哈夫曼树的所有内部节点就类似神经网络隐藏层的神经元,其中,根节点的词向量对应我们的映射后的词向量,而所有叶子节点就类似于神经网络softmax输出层的神经元,叶子节点的个数就是词汇表的大小。在哈夫曼树中,隐藏层到输出层的softmax映射不是一下完成的,而是沿着霍夫曼树一步步完成的,因此这种softmax取名为"Hierarchical Softmax"。

在word2vec中,采用了二元逻辑回归的方法,即规定沿着左子树走,那么就是负类(霍夫曼树编码1),沿着右子树走,那么就是正类(霍夫曼树编码0)。判别正类和负类的方法是使用sigmoid函数,使用霍夫曼树有两点好处,首先,由于是二叉树,之前计算量为V,现在变成了log2V。其次,由于使用霍夫曼树是高频的词靠近树根,这样高频词需要更少的时间会被找到,这符合贪心优化思想。

92829f5453d148ed92b37afbc4446643.gif

本文多层softmax

b0f8f9f6672c9caa46ff2fdbd3f54a31.png

图8 多层softmax

如图,树中的叶子节点均为图中的节点,对于每个内部节点,都利用一个二分类器来决定走哪个路径,如计算v3节点的概率,只需要经计算计算从根节点到v3节点上每一个路径的概率即可。由于二叉树的最长路径为O(log2n),所以节点的计算时间为O(log2n)。

本文Hierarchical Softmax概述部分参考

1.https://zhuanlan.zhihu.com/p/56139075

2.https://www.cnblogs.com/pinard/p/7243513.html

dacac825c6c3f37ed0f539934df1c14d.gif

如果额头终将刻上皱纹,那么我们只能做到,不让皱纹刻在心上。(来源于《中国合伙人》)

作者:韩锋

05a762bc098d96efde29be81f5f3537b.gif

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值