关于图的理解

1.什么样的数据可以表示为图
(1)图片:图片之间的像素关系,可以表示为一个图结构 。
(2)文本:把其中的一个词表示为一个顶点,一个词与 。下一个词之间有一条边 。
(3)现实生活中还有许多其他数据 。
①分子图:其中的每个原子作为顶点,原子与原子之间的联系作为边 。
②社交网络图:人与人之间的联系 。
③引用图:一篇文章引用另一篇文章,采用边相连(有向边) 。
2.在把数据表示成图之后,可以在图上定义什么样的问题?
(1)图层面:给一个图,对图进行分类
(2)顶点层面:(空手道图:两个老师A、B,一群学生)判断学生是属于A还是属于B
(3)边层面:学习顶点之间边的属性
3.将机器学习用到图上面会有什么样的挑战?
图有四种信息可以让我们去做预测:边、节点、全局以及连接性 。前三种在神经网络中可以表示为向量,连接性可以采用邻接矩阵 。邻接矩阵有可能很大,才用稀疏矩阵去存放,但是系数矩阵计算困难 。还有一个问题,就是稀疏矩阵的行和列互换都不会影响他 。
4.图神经网络
GNN定义:是对图上所有属性,包括顶点、边和全局的上下文进行一个可以优化的变换,优化可以保持图的对称信息,所谓的对称信息就是把这些顶点进行另外一个排序之后,整个结果是不会变得 。输入输出都是图 。
一个简单的例子:对于边、节点、全局分别构造一个MLP(MLP的输入和输出大小是一样的),三个MLP就组成了一个GNN的层 。也就是对于输入的图,分别找到他的边、节点、属性对应的MLP,作为他对应的更新 。图经过MLP之后,其中的属性都是被更新过的 。但是,整个图的结构是没有发生变化的 。
MLP是对每个向量独自作用的,它不会考虑所有的连接信息,
重点:最后一层的输出,如何得到我们想要的预测值 。
(1)首先,我们相对顶点做预测,顶点的向量是有的(之前对于学生属于A还是属于B是属于二分类问题的,因为每个学生的向量有了,所有在后面加上一个输出度为2的一个全连接层,然后再加一个就得到我们的输出了,在所有的节点中都会共享一个全连接层的参数)
②复杂情况:不知道顶点的向量,会用到汇聚 。假设这个点是没有向量的,那如何得到他的向量并对他做预测呢?那就把跟这个点连接的那些边拿出来,同样把全局的哪个向量拿出来,就会拿出5个向量 。
箭头表示它对应的向量,中间的值表示一个全局向量,将这5个值加起来,就会得到代表这个点的向量 。(假设顶点、边、全局向量的维度是一样的)
归纳简单的一个过程:给一个输入图,然后经过一系列的GNN层,每个层有3个MLP,对应三种不同的属性,得到一个保持了原有图结构的图,但是属性发生了变化,最后根据要对哪个属性做预测,就添加合适的输出层,确实信息的时候,加入合适的汇聚层,就可以完成我们需要的预测 。(汇聚层也就是卷积神经网络中的池化层,作用是特征选择,降低特征数量,并从而减少参数数量)
上述情况是最简单的情况,但是又很大的局限性,在GNN 并没有使用图的结构信息 。对每个属性做变换的时候,每个属性都是分别进入不同的MLP中,并没有看到这些顶点是和哪些边是相连的,或者跟哪些节点相连,也就是说,没有考虑到连接信息,导致这一块并没有合理的把整个图的信息更新到属性当中 。导致最后的结果并不能特别充分利用整个图的信息 。
5.如何改进这一块,使得图的信息可以放进去
用到的技术是信息传递 。就是把一个顶点的向量和邻居顶点的向量都加在一起,得到一个汇聚的向量,把汇聚的向量在进入MLP,得到一个点的向量更新 。(这是一个简单行为的信息传递)