作者
Chilia
哥伦比亚大学nlp搜索推荐
整理
NewBeeNLP
图神经网络已经在NLP、CV、搜索推荐广告等领域广泛应用,今天我们就来整体梳理一些经典常用的图网络模型:DeepWalk、GCN、Graphsage、GAT!
1.DeepWalk[]DeepWalk是来解决图里面节点embedding问题的。GraphEmbedding技术将图中的节点以低维稠密向量的形式进行表达,要求在原始图中相似(不同的方法对相似的定义不同)的节点其在低维表达空间也接近。得到的表达向量可以用来进行下游任务,如节点分类(nodeclassification),链接预测(linkprediction)等。
1.1DeepWalk算法原理虽然DeepWalk是KDD的工作,但却是我们了解GraphEmbedding无法绕过的一个方法。
我们都知道在NLP任务中,word2vec是一种常用的wordembedding方法,word2vec通过语料库中的句子序列来描述词与词的共现关系,进而学习到词语的向量表示。
DeepWalk的思想类似word2vec,使用图中节点与节点的共现关系来学习节点的向量表示。那么关键的问题就是如何来描述节点与节点的共现关系,DeepWalk给出的方法是使用**随机游走(RandomWalk)**的方式在图中进行节点采样。
RandomWalk是一种可重复访问visited节点的深度优先遍历算法。给定当前访问起始节点,从其邻居中随机采样节点作为下一个访问节点,重复此过程,直到访问序列长度=K。获取足够数量的节点访问序列后,使用skip-gram进行向量学习,这样能够把握节点的共现信息。这样就得到了每个节点的embedding。
2.GCN[]GCN的概念首次提出于ICLR:SEMI-SUPERVISEDCLASSIFICATIONWITHGRAPHCONVOLUTIONALNETWORKS。
为什么要用GCN呢?这是因为对于图结构的数据,CNN、RNN都无法解决。
对于图片来说,我们用卷积核来提取特征,这是因为图片有平移不变性:一个小窗口无论移动到图片的哪一个位置,其内部的结构都是一模一样的,因此CNN可以实现参数共享。RNN主要用在NLP这种序列信息上。图片,或者语言,都属于欧式空间的数据,因此才有维度的概念,欧式空间的数据的特点就是结构很规则。
但是图结构(拓扑结构)如社交网络、知识图谱、分子结构等等是十分不规则的,可以认为是无限维的一种数据,所以它没有平移不变性。每一个节点的周围结构可能都是独一无二的,这种结构的数据,就让传统的CNN、RNN瞬间失效。
GCN,图卷积神经网络,实际上跟CNN的作用一样,就是一个特征提取器,只不过它的对象是图。GCN精妙地设计了一种从图数据中提取特征的方法,从而让我们可以使用这些特征去对图数据进行:
节点分类(nodeclassification)
图分类(graphclassification)
链接预测(linkprediction)
2.1GCN的核心公式假设我们手头有一个图,其中有N个节点,每个节点都有自己的特征embedding,我们设这些节点的特征组成一个N×D维的矩阵,然后各个节点之间的关系也会形成一个N×N维的矩阵A(就是邻接矩阵)
GCN也是一个神经网络层,它的层与层之间的传播方式是:
这个公式中:
,是单位矩阵。
是度矩阵(degreematrix),D[i][i]就是节点i的度。
H是每一层的特征,对于第一层(输入层)的话,就是矩阵。
σ是非线性激活函数
用这个公式就可以很好地提取图的特征。假设我们构造一个两层的GCN,激活函数分别采用ReLU和Softmax,则整体的正向传播的公式为:
其中,.
那么,为什么这个公式能提取图的特征呢?
A+I其实是保证对于每个节点,都能够
转载请注明:http://www.0431gb208.com/sjszjzl/2233.html