[AI安全论文] 25.向量表征之DeepWalk:从Word2vec到DeepWalk,再到Asm2vec和Log2vec
这是向量表征系列文章,从Word2vec和Doc2vec到Deepwalk和Graph2vec,再到Asm2vec和Log2vec。
前文介绍了谷歌的Word2vec和Doc2vec,它们开启了NLP的飞跃发展。这篇文章将详细讲解DeepWalk,通过随机游走的方式对网络化数据做一个表示学习,它是图神经网络的开山之作,借鉴了Word2vec的思想,值得大家学习。同时,本文参考了B站同济大学子豪老师的视频,强烈推荐大家去学习DeepWalk原文和子豪老师的视频。
下一篇文章逐渐进入安全领域,介绍两个安全领域二进制和日志的向量表征。通过类似的梳理,让读者看看这些大佬是如何创新及应用到新领域的,希望能帮助到大家。这六篇都是非常经典的论文,希望您喜欢。一方面自己英文太差,只能通过最土的办法慢慢提升,另一方面是自己的个人学习笔记,并分享出来希望大家批评和指正。希望这篇文章对您有所帮助,这些大佬是真的值得我们去学习,献上小弟的膝盖~fighting!
文章目录:
一.图神经网络发展历程
二.Word2vec:NLP经典工作(谷歌)
三.Doc2vec
四.DeepWalk(KDD2014)
(一).论文阅读
(二). 原文PPT分享
(三).代码实战:学习同济子豪兄视频
五.Asm2vec(S&P2019)
六.Log2vec(CCS2019)
七.总结
《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢。由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正。同时,前期翻译提升为主,后续随着学习加强会更多分享论文的精华和创新,在之后是复现和论文撰写总结分析。希望自己能在科研路上不断前行,不断学习和总结更高质量的论文。虽然自己科研很菜,但喜欢记录和分享,也欢迎大家给我留言评论,学术路上期待与您前行,加油~
前文推荐:
[AI安全论文] 05.RAID-Cyber Threat Intelligence Modeling Based on GCN
[AI安全论文] 06.NDSS2020 UNICORN: Runtime Provenance-Based Detector for Advanced Persistent Threats
[AI安全论文] 14.S&P2019-Neural Cleanse 神经网络中的后门攻击识别与缓解
[AI安全论文] 21.S&P21 Survivalism经典离地攻击(Living-Off-The-Land)恶意软件系统分析
[AI安全论文] 24.向量表征:从Word2vec和Doc2vec到Deepwalk和Graph2vec,再到Asm2vec和Log2vec(一)
[AI安全论文] 25.向量表征经典之DeepWalk:从W2V到DeepWalk,再到Asm2vec和Log2vec (二)
一.图神经网络发展历程
Yoshua Bengio, Rejean Ducharme, Pascal Vincent, and Christian Jauvin. A neural probabilistic language model. Journal of Machine Learning Research (JMLR), 3:1137–1155, 2003.
原文地址:https://www.jmlr.org/papers/volume3/bengio03a/bengio03a.pdf
Efficient Estimation of Word Representations in Vector Space
原文地址:https://arxiv.org/abs/1301.3781v3
原文地址:https://dl.acm.org/doi/10.1145/2623330.2623732
二.Word2vec:NLP经典工作(谷歌)
三.Doc2vec
四.DeepWalk:网络化数据经典工作
原文标题:Deepwalk: Online learning of social representations
原文作者:Perozzi B, Al-Rfou R, Skiena S
原文链接:https://dl.acm.org/doi/abs/10.1145/2623330.2623732
发表会议:2014 KDD,Proceedings of the 20th ACM SIGKDD
international conference on Knowledge discovery and data mining
参考博客:强推B站同济子豪兄
- https://www.bilibili.com/video/BV1o94y197vf
1.摘要
2.引言和贡献
[3] Y. Bengio, A. Courville, and P. Vincent. Representation learning: A review and new perspectives. 2013.
关系分类问题(relational classification):在图中标注一些节点,用已有节点去预测未标注节点的类别,如攻击者识别。
独立同分布假设:在鸢尾花或MNIST图谱数据集中,每个样本(花)之间或数字之间是无关的,彼此互不影响,但它们都是鸢尾花或手写数字图像,因此叫独立同分布,适用于传统的机器学习。然而,在图中,比如标注已有的攻击者去预测未知的攻击者,图之间是存在联系的,因此既不独立也不一定满足同分布,没法直接用传统的LR、SVM、DT算法解决。
我们引入深度学习作为图嵌入的工具,以建立适用于统计机器学习建模且鲁棒的向量表示。DeepWalk能够通过随机游走序列学习图的结构规律。
我们在多个社交网络的多标签分类任务上评估了本文的表示方法。特别在标注稀疏的场景下,DeepWalk显著提高了分类的性能,Micro F1值提高了5%到10%。在某些情况下,即使减少了60%的训练数据,DeepWalk的表现也可以超过竞争算法。
我们通过并行加速将DeepWalk扩展到互联网级别的图(如YouTube)上来证明我们算法的可扩展性。此外,我们还进行了一些变种改进,通过构建streaming version所需的最小变化来生成图嵌入。
3.问题定义
G = (V,E):V表示网络的节点,E表示连接关系。
E ⊆ (V×V):E可以表示成一个V行V列的邻接矩阵,表明第i个节点和第j个节点存在联系。
G_L = (V,E,X,Y):X表示特征(每个节点有S维特征),Y表示类别,|V|表示节点个数,|y|表示类别个数,G_L为被标注的社交网络。
4.网络连接的特征表示
适应性(Adaptabilty):真实网络在持续地演化,新的节点和关系出现时不需要再重新训练整个网络,而是能够增量或在线训练。换句话说,网络的拓扑结构随着网络新的节点和连接动态变化。
社区意识(Community aware):应该反映社群的聚类信息,如图1所示,属于同一个社区的节点有着相似的表示,网络中会出现一些特征相似的点构成的团状结构,这些节点表示成向量后也必须相似。这允许在具有同质性的网络中进行泛化。
低维(Low dimensional):当标记数据稀缺时,低维模型可以更好地扩展并加速收敛和推理(防止过拟合)。即每个顶点的向量维度不能过高。
连续(Continuous):低维向量应该是连续的,每个元素的细微变化都会对结果有影响,并且能拟合平滑的决策边界,从而实现鲁棒性更强的分类任务。
Random Walk:假设相邻节点具有相似性
Word2Vec:假设相邻单词具有相似性
并行采样
在线增量学习(迭代学习不需要全局重新计算)
随机网络:节点的度服从正态分布
真实世界网络:属于无标度网络,比如社交网络存在大V、银行客户存在富翁等,存在大型中枢节点,此时服从幂律分布(长尾分布或二八分布)
图2(a)的横轴表示被媒体提及次数,纵轴表示节点个数(UP主数量)
图2(b)的横轴表示某个单词被采样到的次数,纵轴表示单词数,比如the\an\we出现较多
- [python数据分析] 简述幂率定律及绘制Power-law函数 - Eastmount
语言模型能反映一句话是否自然、高频或真实存在。
[27] T. Mikolov, K. Chen, G. Corrado, and J. Dean. Efficient estimation of word representations in vector space. CoRR, abs/1301.3781, 2013.
我们期待通过大量的随机游走序列训练,迭代地去优化Φ中的每一个元素,直到这个函数收敛或损失函数最小化,此时的Φ就是每个节点的Embedding。
随机游走生成的顺序没有意义,符合当前场景,能很好地捕获邻近信息。
模型较小能加快训练时间。
具有相同邻居节点将获得相似的表示(编码共引相似)
5.本文方法
通过中心节点的Embedding和上下文的某个节点的Embedding做向量的数量积。
时间复杂度从O(n)降至O(log(n))
首先,图3(a)表示从图中随机游走采样出一个节点序列(红色标注);
然后生成图3(b)所示的映射关系,v4表示4号节点,输入中心节点(v1)来预测上文和下文的节点,每侧窗口宽度w=1,通过查表得到中心节点v1映射对应的表示Φ(v1);
最后,将该中心词的向量输入到分层Softmax中(图3c),由于v3和v5都是标签,两条路径回各自计算损失函数,再各自优化更新,这里存在两套权重,分别是:N个节点的D维向量,N-1个逻辑回归(每个有D个权重),这两套权重会被同时优化。
公式的指数表示词的Embedding和逻辑回归的权重的乘积,再通过Sigmod函数输出一个后验概率。
Streaming
在未知全图时,直接通过采样出的随机游走训练Embedding,新的节点会增量对应的EmbeddingNon-random walks
不随机的自然游走
6.对比实验
BlogCatalog:博客作者提供的社会关系网络,标签代表作者提供的主题类别。
Flickr:照片分享网站,作者之间的联系网络,标签代表用户的兴趣组。
YouTube:视频分享网站,用户之间的社交网络,标签代表喜欢视频类型(如动漫和摔跤)的观众群体。
SpectralClustering(谱聚类)
Modularity(模块化)
EdgeCluster
wvRN
Majority
T_R:标注的节点比例
Macro-F1
Micro-F1
γ =80:每个节点被采样的次数
w = 10:滑动窗口
d = 128:向量的维度
t = 40:游走的节点长度
DeepWalk预测效果优于其它算法
当标注节点比例越小,DeepWalk效果表现越好,甚至只用20%的数据比其他算法用90%的数据更强
TR会影响最优d,TR越大效果越好
γ越大,效果越好,但边际效果逐渐降低
7.个人感受
- DeepWalk是通过机器学习得到的隐式表示(Embedding),而非人工统计构造。
- DeepWalk不考虑节点的标注和特征信息,只考虑Graph的连接信息,属于无监督学习。后续可以利用无监督的Embedding和标注信息训练有监督的分类模型。
- DeepWalk是一种只使用Graph的局部信息且可扩展的在线学习方法,先前的方法都需要全局信息且是离线的。
本文将无监督表示学习思路应用于图中。
(二). 原文PPT分享
1.Introduction:Graphs as Features
2.Language Modeling
3.DeepWalk
4.Evaluation:Network Classification
5.Conclusion & Future Work
(三).代码实战:学习同济子豪兄视频
参考资料:强推B站同济子豪兄 - https://www.bilibili.com/video/BV1o94y197vf
B站子豪老师的地址:https://space.bilibili.com/1900783
图神经网络或许是最容易发顶会论文的领域之一。
推荐:斯坦福CS224W公开课
Neo4j能非常方便地构建图数据库和知识图谱
网址:https://densitydesign.github.io/strumentalia-seealsology/
https://en.wikipedia.org/wiki/Computer_vision
https://en.wikipedia.org/wiki/Deep_learning
https://en.wikipedia.org/wiki/Convolutional_neural_network
https://en.wikipedia.org/wiki/Decision_tree
https://en.wikipedia.org/wiki/Support-vector_machine
https://github.com/prateekjoshi565/DeepWalk
https://www.analyticsvidhya.com/blog/2019/11/graph-feature-extraction-deepwalk
# function to generate random walk sequences of nodes
def get_randomwalk(node, path_length):
random_walk = [node]
for i in range(path_length-1):
temp = list(G.neighbors(node))
temp = list(set(temp) - set(random_walk))
if len(temp) == 0:
break
random_node = random.choice(temp)
random_walk.append(random_node)
node = random_node
return random_walk
get_randomwalk('space exploration', 10)
from gensim.models import Word2Vec
# train word2vec model
model = Word2Vec(window = 4, sg = 1, hs = 0,
negative = 10, # for negative sampling
alpha=0.03, min_alpha=0.0007,
seed = 14)
model.build_vocab(random_walks, progress_per=2)
model.train(random_walks, total_examples = model.corpus_count, epochs=20, report_delay=1)
# find top n similar nodes
model.similar_by_word('astronaut training')
五.Asm2vec:安全领域经典工作(S&P2019)
六.Log2vec:安全领域经典工作(CCS2019)
七.总结
[1] 唐杰老师网站:http://keg.cs.tsinghua.edu.cn/jietang
[2] Perozzi B, Al-Rfou R, Skiena S. Deepwalk: Online learning of social representations. KDD, 2014.
[3] Narayanan A, Chandramohan M, Venkatesan R, et al. graph2vec: Learning distributed representations of graphs[J]. arXiv preprint arXiv:1707.05005, 2017.
[4] 强推B站同济子豪兄 - https://www.bilibili.com/video/BV1o94y197vf
[5] https://densitydesign.github.io/strumentalia-seealsology/
[6] Tomás Mikolov, Kai Chen, Greg Corrado, Jeffrey Dean. Efficient Estimation of Word Representations in Vector Space. ICLR, 2013.
[7] Quoc V. Le, Tomás Mikolov. Distributed Representations of Sentences and Documents. ICML, 2014: 1188-1196.
[8] Eastmount. word2vec词向量训练及中文文本相似度计算. https://blog.csdn.net/Eastmount/article/details/50637476
[9] https://github.com/prateekjoshi565/DeepWalk
[10] 斯坦福CS224W公开课
[11] B站子豪老师的地址:https://space.bilibili.com/1900783
[12] https://docs.google.com/presentation/d/1TKRfbtZg_EJFnnzFsnYOsUiyFS0SbNi0X3Qg9OtfDSo/edit