PyTorch图神经网络(一)
参考书《PyTorch图神经网络》,作者[美]马克西姆·拉伯恩。
1.前言:
图神经网络用于处理图结构数据的任务,图中的信息除了点和边之外,每个点还有自己的特征。图神经网络的具体应用包括节点分类、链接预测、图分类、图生产等等。这个系列将从头开始讲解图神经网络的基础用法以及常用网络。
2.DeepWalk
DeepWalk是一种基础的图嵌入方法,在理解这个方法之前,先要对Word2Vec有基本的认识:
Word2Vec
Word2Vec是自然语言处理中用于嵌入的技术,具体就是把单词转换为可以用于计算的向量,这里向量的数值和单词的语义是相关的,最经典的例子就是:
skip-gram
这个模型是NLP中用于预测单词的模型,在该架构中,可以向模型输入一个单词并尝试预测它周围的单词。DeepWalk使用的就是这个架构,这里我们可以不用知道这个模型具体的原理,只需要知道:skip-gram是根据单词之间的关系来预测上下文的若干单词这一点就行了。
随机游走
这里需要知道的另一个概念是随机游走,这也是DeepWalk的算法核心。具体做法为:随机挑选一个点为起点,每次随机选择一个相邻节点并走到那里,一直重复这个步骤。最终,可以得到一个节点序列。我们将这个节点序列看作是句子,每个节点就是一个单词,输入到skip-gram模型来分析不同节点之间的关系。
根据随机游走的算法可知,相邻的节点在序列中总是一起出现。在网络同质性假设下,彼此接近的节点总是相似的。所以我们可以根据多次随机游走得到的很多序列来分析网络中节点之间的关系。
理解了这个过程就可以发现,DeepWalk的目标就是以无监督的方式来生成节点的高质量特征表示,这些特征表示就是该节点和相邻节点的关系。
在具体应用的时候,我们可以对所有点进行多次随机游走,然后应用不同的方法来分析这些序列得到每个点的特征,从而实现点分类,相似度计算等任务。