DeepWalk 论文笔记
针对论文[1]的阅读撰写阅读笔记。DeepWalk的代码实现
概述
这篇论文主要提出了在一个网络中,学习节点隐表达的方法——DeepWalk,这个方法在一个连续向量空间中对节点的社会关系进行编码,是语言模型和无监督学习从单词序列到图上的一个扩展。该方法将截断游走的序列当成句子进行学习。该方法具有可扩展,可并行化的特点,可以用来做网络分类和异常点检测。
贡献
论文贡献有三点:
1. 将深度学习应用到图分析中,构建鲁棒性的表示,其结果可应用于统计模型中
2. 将表示结果应用于一些社会网络的多标签分类任务中,与对比算法比较,大部分的 F1 值提高5-10%,有些情况下,在给定少于60%训练集的情况下,比其他对比方法要好
3. 论文通过构建互联网规模(例如YouTube)的并行化实现的表示,论证了方法的可扩展性,同时描述了构建流式版本的方法实现
问题描述
给定一个图 G=(V,E) ,以及部分标注的社会网络 GL=(V,E,X,Y) ,其中, X∈R|V|×S 是节点属性, S 是每个属性向量的特征空间的大小,
- 自适应性,真实的社会网络是不断变化的,新的社会化关系进来之后,应该不需要再重新执行一次学习过程
- 社区感知性,学出来的隐空间应该能够包含网络中同质节点或相似节点距离近的信息
- 低维度
- 连续性
论文选取的是随机游走序列,作为DeepWalk的输入。原因有:
- 随机游走能够包含网络的局部结构
- 使用随机游走可以很方便地并行化
- 当网络结构具有微小的变化时,可以针对变化的部分生成新的随机游走,更新学习模型,提高了学习效率
- 如果一个网络的节点服从幂律分布,那么节点在随机游走序列中的出现次数也应该服从幂律分布,论文通过实证发现自然语言处理中单词的出现频率也服从幂律分布。可以很自然地将自然语言处理的相关方法直接用于构建社区结构模型中。
针对一个自然语言处理问题,给定一个单词序列