GNN(图)笔记

发布时间 2023-03-26 22:45:37作者: 诸葛村夫CC

图的基本概念不再详细描述

有顶点(node, V)、边(edge, E),这里还有一个全局属性(global, U),但不知道具体表示什么

边分为无向的边和有方向的边

 

 三者都是通过向量来表示(embedding)

 

将图像表示成图的方法:一个像素是一个节点

下图左边是原图,中间是邻接矩阵,右边是图

 

文本则需要用有向边来表示(类似链表),一个顶点表示一个词

 

 

除此以外还有例如有机分子,人物社交网络,比赛赛程,论文之间的引用等都可以用图表示

 

以上是用图表示各类数据的方法,下面讲在图上可以定义什么样的问题:

主要从三个层面来分:图层面、顶点层面、边层面

 

 上图是图层面的一个简单例子,左边是数据集,任务是识别哪些样本中含有两个环。就是分类任务,当然实际上这个任务比较简单,不用机器学习,写一段正常 代码也能做出来

 

 上图是节点的分类,该图中有两个核心节点,任务是将两个核心节点分裂以后,判断其余所有点属于哪个核心点的阵营

 

 这个是边的任务,首先将一张图片通过语义分割提取人物,然后判断人物之间是什么样的关系

 

在神经网络中使用图的挑战:

一个关键问题是如何表示图,使得它与神经网络兼容

图上共有四种信息,分别是顶点、边、全局以及连接性。前三种是属性,注意即便是边也是边上的属性。最后一条才是边的连接性,也就是一条边具体连着哪两个点。前三者比较好办,直接embedding用向量来表示即可,第四种比较麻烦,一个常见的办法是邻接矩阵。但神经网络处理向量是没问题的,连接性的这个矩阵理论上也没问题,但实际中这个邻接矩阵通常是非常大的,虽然可以用稀疏矩阵的方法来存储矩阵,但稀疏矩阵很难在GPU上高效运算。此外,邻接矩阵的表示是行、列顺序无关的,要保证同一个图所有可能的邻接矩阵表示方法输入神经网络后的结果是一样的比较难。