零基础多图详解图神经网络(GNN/GCN)【论文精读】

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第1张图片

视频链接:零基础多图详解图神经网络(GNN/GCN)【论文精读】 - 哔哩哔哩 (bilibili.com)

博客链接:A Gentle Introduction to Graph Neural Networks (distill.pub)

1前言

选文原因:

        1、图片数据结构、相对于文本序列更复杂
                上一次关注图还是十几年前,社交网络,计算难,转而关注别的地方。
                图神经网络 popular,同学用 ML 处理图结构数据不熟(感谢老师),基础梳理
        2、博客写作非常好,值的精读


标题:A gentle introduction to graph neural networks

技术博客不用复杂词,受众比论文广。

        副标题:

                Neural networks have been adapted to elverage the stucture and properties of graphs. NN 已经被用来处理 图结构和图性质。
                We explore the components needed for bulding a graph neural network - and motivate the design choices behind them. 探索了构建 图神经网络的模块 + 背后的思想。
                4 层 5个节点的 交互 图:可以显示每一个节点它是由上面一层哪一些节点计算而来的。


                只要足够深的话,很有可能一个节点是能够处理到整个 比较大范围的图里面的节点信息 ==== GNN怎么利用图的结构化信息来处理信息的。

        作者:Google Research 

        发表在 distill 网站,博客相比论文写作更自由。

        写作建议:有一个 table content 知道每章讲的内容,方便读者阅读时进行跳读 or 选择从头读到尾。

        Remark:distill 文章质量比较高、尽量用图说话;可从头到尾读。

                distill 2篇关于 GNN 文章,另外一篇是 图上的卷积。(斜体非正文)

第一段

        Graphs are all around us 我们身边都是图,图是一个一般化的架构。

        十几年前,学者提出 GNN;最近 GNN 被应用到 药物发现、物理模拟、虚假新闻的检测、流量预测 & 推荐系统。 

        starting to 说明 GNN 新、应用还不多;GNN应用有挑战,解决效果如何快 + 好。还有很多 GNN 相关可以研究。

第二段:本文做什么?

        什么数据可以表示成图?
        图和别的数据的区别?Why use GNN?
        GNN 的构建模块长什么样?
        playground 一定要玩一玩,作者很用心


2什么是图


07:05


Q1:图是什么?

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第2张图片

 

实体(顶点 node)之间的关系(边 edge)。A graph represents the relations (edges) between a colelction of entities(nodes). 


V 顶点

E 边

U 全局信息,整个图

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第3张图片


Q2: attributes in V E U 重要吗?

 

!关心图的整个架构

!更关心 每个顶点、每条边、和 整个图表示的信息

Q3: attribute 如何表示呢?

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第4张图片


embedding 表示 V E U 的 attributes

 

Q3:GNN 重点是什么?图表示学习

这些向量是否能通过学习数据,从而表示我们想要的信息?

图的分类:无向图(微信朋友) + 有向图(B站up主和粉丝)

Q4:数据如何表示成图?

图片如何表示成图?

 244 * 244 * 3通道,3维度的tensor

把图片看作一张图,一个像素是一个点;一个像素跟我是连接关系的话,像素之间连一条边。

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第5张图片


把图片上的像素 映射到 图上的每一个点

 

0-0 2-2

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第6张图片


边信息:

 

2-2的八邻居

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第7张图片


蓝色点 表示 adjacent matrix,白色点表示无连接;通常是很大的sparse matrix

 

text as graphs?

文本的顺序:图的有向路

distill 博客 文本可更改,欢迎大家玩~

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第8张图片


Q5:除了图片、文本,还有什么数据可以表示成图?

香料分子图、咖啡因的分子图、社交网络图、引用图(directed)

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第9张图片

 

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第10张图片

 

奥赛德人物图

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第11张图片

 

实际图的大小

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第12张图片


wikipedia 巨大知识图,1200w结点,1M个边,可能是索引页。

 

What types of problems have graph structured data? 把数据表示成图之后,我们可以解决什么问题呢?

graph-level U, node-level V, edge-level E

graph-level task 图分类:图中是否有环

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第13张图片


node-level task

 

顶点分类:跟老师A 还是 B 蓝还是红

选举预测

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第14张图片


edge-level task

 

图中顶点和边的关系

watching fighting

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第15张图片

 

The challenges of using graphs in machine learning

图在NN 的挑战:如何使 图 和 NN 兼容?

图有几类信息需要表示?

nodes V, edges E, global-context U and connectivity

V E U 可以用 vector 表示,问题是 connectivity 如何表示?by adjacent matrix? 

Q6:n * n 的 0-1 元素矩阵 表示 connectivity 可以吗?

矩阵很大,i.e., wikipedia数据集,12M nodes,矩阵会有12M行、12M列,无法存储。
边通常是稀疏的,存储 sparse matrix ✔;但稀疏矩阵在GPU上的高效运算,难❌
邻接矩阵的 行、列顺序交换,不会影响图


左图和有图是 permutation 的关系,放进 NN 应得到相同的结果。

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第16张图片


异构图的特别详细的例子

 

4个顶点,4条边,24种不同的排序,24个邻接矩阵

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第17张图片


Q7: 如何高效存储、顺序无关的图呢?

 

8个顶点、7条边。

图中点和边的属性、全局信息用标量示例,也可以用向量表示。

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第18张图片


非常推荐去 distill 博客玩,可以更改图中的数值。

 

Adjacency List

长度 = 边数

第 i 项表示第 i 条边连接的 2 个顶点。

存储效率怎么样?

只存边 adjacency list、V E U 的 attributes

Permutation 的效果如何?

Adjacency List 中的元素会相应变化。

Q8:Nodes, Edges, Adjacency List, Global 的存储方式怎么样?

存储高效,顺序无关

3图神经网络


23:18


输入一个高效存储、顺序无关的 Nodes, Edges, Adjacency List, Global 信息,如何用 NN 处理呢?---- Graph Neural Networks

GNN定义:

A GNN is  an optimizable transformation on all attributes of the graph (nodes, edges, global-contex ) that preserves graph symmetries (permuation invariance).

图上属性的 可以优化的变化,且保持图的对称信息。

Q9: how to build GNNs?

message passing NN in this distill paper, GNN 也可以用别的信息来描述。

graph-in(nodes, edges, adjacency list, global information), graph-out

GNN 对 attributes 向量进行变化,不改变原图的连接性。

transform these embeddings, without changing the connectivity of the input graphs.

The simplest GNN


24:58


对 attributes 进行变换时,图的结构不变化

Un 全局向量, Vn 顶点向量, En 边向量 分别构造一个MLP, MLP的输入输出的大小一致。

3个MLP f_Un, f_Vn, f_En 组成一个 GNN 的层。

graph-in, graph out

MLP f_Un, f_Vn, f_En  分别对输入的 Un 全局向量, Vn 顶点向量, En 边向量 计算,得到更新 Un+1 全局向量, Vn+1 顶点向量, En+1 边向量 。

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第19张图片


Permutation invariance

 

MLP 是对每一个向量独自作用,MLP 不会考虑所有的连接信息,所以不管排序如何变化,都不会改变 MLP 的输出结果。

simplest GNN 层的叠加,构造一个比较深的 GNN

GNN predictions by pooling information 

最后一层的输出,怎么得到预测值?


26:37


simplest: nodes prediction 顶点预测

分类预测: i.e., 空手道俱乐部喜欢 A 老师还是 B 老师

和 NN 类似,node embeddings 向量 接入 输出维度为 2 or n 的全连接层 + 一个 softmax,得到分类结果;输出维度为 1,得到回归结果。

最后一层的顶点进入 图中的 C_V_{i,n} classification 全连接网络,得到顶点的分类。


Note: 所有顶点共享一个全连接层 C_V_{i,n} 的参数。

GNN 之前的层,不论图有多大,一层里面只有 3 个MLP

所有顶点共享一个 MLP
所有边共享一个 MLP
所有的全局 U(哈哈哈,全局只有一个)不用共享。


complex: node predictions without node embeddings

对某个顶点分类预测,但是没有这个顶点的向量。

pooling 汇聚 (似 CNN 的 pooling)

与缺失点连接的边的向量 4个 + 全局向量 1 个 == 代表这个缺失点的向量,再做一个全连接层的预测输出。

假设:所有顶点、边、全局向量的维度一致;不一致,需要做投影。

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第20张图片


别的缺失点,连接关系不一样,最后的向量也不一样。

 

缺失点预测的示意图

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第21张图片


V_n 是只有边、没有顶点的向量

 

E_n 是边的向量

Rho_{E_n --> V_n} 通过 pooling 汇聚从 边 +全局 到 顶点的信息, 进入顶点共享的分类层 C_V_n 之前,每个顶点都有自己的向量 embedding

Q: 只有 node embeddings 没有 边的向量,怎么办?

Rho_{V_n --> E_n} 把 node embeddings 汇聚到 vertex 边上。

一条边,连接两个顶点,2个顶点向量相加 (+ 全局向量)== 得到 边的向量,然后进入边共享的一个 MLP 预测分类网络,得到边的预测输出。

Q: 没有全局向量 U, 有 node embeddings, 对整个图做预测?

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第22张图片


把所有的 node embeddings 加起来,得到一个全局的向量,进入全局的MLP,得到一个全局的预测输出。

 

总结:不论缺少哪一类 V E U attributes,pooling 汇聚得到缺失值 embeddings,进入MLP,得到预测值。

最简单的 GNN 示意图


30:50


input graph 经过 GNN blocks (每一个 block 里面有 3个 MLP对 V顶点 E边 U全局 attributes 更新)得到 一个同结构的 transformed graph, 但 V E U 属性值已被更新。

(if 某类 embeddings 缺失,通过其它 embeddings pooling 汇聚而来)

最后根据 V E U 某类属性做预测,接一个 MLP classification layer 输出预测信息。

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第23张图片


Q: simplest GNN 有什么问题?

 

GNN blocks 没有使用图结构信息:使用 MLP 更新属性值时,没有看到 V 顶点 E 边 的交互信息,只是 V 进 MLP_V, E 进 MLP_E, U 进 MLP_U,忽略了点边之间的连接信息。

overlook information: 一个顶点与哪些边相连,一个顶点与哪些顶点相连;一条边与哪些顶点相连,一条边与哪些边相连

GNN blocks 没有合理的将整个图的信息更新到属性值里,最后的结果不能 leverage 图的信息。

Q: 如何改进 GNN blocks 以考虑图的结构信息?

Passing messages between parts of the graph


32:21


类似 pooling 汇聚

对图中顶点进行更新,

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第24张图片


接下来我们来看一下怎么样对它改进,使得在这一块能够把图的信息及早地放入进去。我们将用到的技术是之前提到过的信息传递。假设你理解过之前我们的汇聚是怎么工作的话,那么它其实是一个很简单的东西,我们就直接跳到我们下面这张图,用图来解释一下它是怎么工作的。

 

4实验

GNN 对超参数比较敏感:

多少层、attribute的embedding的维度、汇聚使用什么操作max average、怎样传递消息

5相关技术


50:14


除 GNN 外,还有别的图吗?

Multigraph

一张图中的多种边:有向边、无向边;分层图,一些顶点是子图的

不同的图结构 影响 message passing 的操作

Sampling graphs and batching in GNNs

Why sample graphs?

i.e., 一个有很多层、很大的图

最后一层的顶点,即使只看每一层的一阶邻居,根据消息传递,最后一层的顶点能看到一个很大的图,甚至是全图的信息(如果图的connectivity可以的话)

计算梯度需要 forward 过程中全部的中间变量。因为最后一层的顶点要看整个图的话,对最后一层的顶点计算梯度,需要把整个图的计算中间结果都保存下来,--> 计算难 /(ㄒoㄒ)/~~ 

--> sample graph

从大图中每次 sample 一个小图,在采样的小图上做信息汇聚,保存记录这个小图上的中间计算结果。

sample graph 的方法有哪些呢?

1 random node sampling

采样 4 个黄色nodes,得到 1-degree neighbor 红色点
只在 sample 出来的子图上做计算,避免图特别大、内存存不了
2 random walk sampling 

随机游走
从某一个顶点开始,随机找一条边,然后沿着这条边走到下一个节点
规定最多随机走多少步,得到一个sample子图


3 1 + 2 

随机走三步,走到的节点的邻居也考虑进来
4 BFS

取一个点及其一阶、二阶邻居,然后再往前走 k 步,得到子图

零基础多图详解图神经网络(GNN/GCN)【论文精读】_第25张图片
4 种 sample graphs 的方法取决于数据集的形式

 

你可能感兴趣的:(深度学习相关文献专用笔记,深度学习,GCN,神经网络,GNN,零基础)