图神经网络(Graph Neural Network)在社交网络、推荐系统、知识图谱上的效果初见端倪,成为近2年大热的一个研究热点。然而,什么是图神经网络?图和神经网络为什么要关联?怎么关联?
本文简单介绍GNN的灵感来源,构造方法,训练方式等,根据论文《Representation Learning on Networks》中GNN部分,做了进一步的解释,并增补了一些代码中才有的实现细节,以便后续学习和理解。
代码链接:GitHub - leichaocn/graph_representation_learning
1 卷积神经网络的启示
回顾对图像的简单卷积:
图1 卷积神经网络的基本操作
如图1所示:一幅图(image)所抽取的特征图(也就是特征向量)里每个元素,可以理解为图(image)上的对应点的像素及周边点的像素的加权和(还需要再激活一下)。
同样可以设想:一个图(graph)所抽取的特征图里的每个元素,也可以理解为图(graph)上对应节点的向量与周边节点的向量的加权和。
有几个概念需要说明:
特征向量:一条数据(image、word、node等)的数字化表示,是机器学习任务的必备输入。
embedding:更好的特征向量,蕴含潜在语义信息,是来自network训练后的结果,如果能找到优秀的embedding,将有效提升后面机器学习任务的性能表现。例如从word2vec网络中抽出的word embedding向量,“北京”“巴黎”这两个词就比较相似,因为都是首都;从CNN网络中抽出的image embedding,暹罗猫、无耳猫两个图片的向量就比较相似,因为都有猫。
features map :由cnn生成的特征向量,也就是image embedding。image 经过一层CNN前向传播后的输出,是一个二维的矩阵,只要进行拉直(flatten),就转变为了一维的特征向量。类似于全连接神经网络网络里每一层里都能获取的一维的特征向量。
这种迁移联想值得好好体会。
体会明白后,那具体怎么做呢?
2 核心想法
正如上面讨论的,归纳为一句话:用周围点的向量传播出自己的Embedding。
一个非常简单的例子就能搞明白。
图2 一个图例
对于图2来说,要计算节点A的Embedding,我们有以下的两条想法:
节点A的Embedding,是它的邻接节点B、C、D的Embedding传播的结果
而节点B、C、D的Embedding,又是由它们各自的邻接节点的Embedding传播的结果。
但是你可能会说,这样不断追溯,何时能结束?所以为了避免无穷无尽,我们就做两层,可以构造图3的传播关系。

本文介绍了图神经网络(GNN)的概念,通过与卷积神经网络的类比,阐述了GNN如何通过邻接节点的向量传播生成节点的Embedding。文章探讨了GNN的传播机制,包括收集(Aggregation)和更新(Update)过程,并举例说明了基础版本、图卷积网络(GCN)和GraphSAGE等不同类型的GNN。此外,还讨论了无监督和有监督的训练方式以及损失函数的设计。最后,文章提到了Node2Vec与GNN的区别,并总结了GNN的核心特点和应用。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



