未分类 · 2022年1月19日 1

[视频学习] A Gentle Introduction to Graph Neural Networks

本笔记基于李沐大神对下技术博客的讲解视频
视频链接
博客链接

如果你看到了这篇文章想学GNN,那么建议你直接看原文。我写的就是一坨shit

博客开头有一个可操作的动画来展示图神经网络的结构。
Distill上很多文章都非常好,通常都是比较短可以通篇阅读的,结构和文风也比论文易懂。所以上面的文章有兴趣可以看一看。

图神经网络可以应用在: 1. 药物发现 2. 物理模拟 3. 虚假新闻检测 4. 交通流量估计 5. 推荐系统 (刚刚开始进入实际应用)

文章:

1. 什么样的数据可以表示成一张图

1.1 图

图是表示实体(Node)之间的关系(Edge)

V: Node Attributes
E: Edge Attributes
U: 代表整个图 Global Attributes

其中V,E,U都可以用向量表示
图还可以分为有向图和无向图
有向图,无向图

1.2 数据如何用图来表示

1.2.1 图来表示图片

例如有一张图片(244x244x3),那么把每个像素看成一个Node,并让每个像素与周围像素之间连成边(Edge)。此处博客中有很好的演示动画。

1.2.2 图来表示文本

例如一句话
Graphs are all around us
[Graphs] -> [are] -> [all] -> [around] -> [us]
那么每个单词就是一个节点,前一单词与后一单词间有一条有向边

1.2.3 什么样的问题有着图结构的数据?

大体上来说有三种图预测任务:

1. Graph-level

对图进行分类,例如挑出一堆图中含有两个环的图

2. Node-level

对顶点进行分类,例如可能可以聚类

3. Edge-level

例如先进行图片分割,在对分割后的Entity之间的关系作判断

1.2.4 如何把图应用在神经网络

主要挑战:怎么样表示图才能使图和神经网络兼容
图有四种信息:Nodes,Edges,Global-contect和Connectivity。前三种很容易就用矩阵表示,但最后一种比较复杂。用邻接矩阵的话有以下问题,1.矩阵会非常大;2.行列交换不会影响关系,但神经网络需要保证对变换过的矩阵的输出是一样的。
Adjacency List=[[1,0],[2,0],[4,3],[6,2],[7,3],[7,4],[7,5]]
所以解决方法是把邻接矩阵换为邻接列表(Adjacency List)。邻接列表的长度和边的数量是一样的,第i项表示第i条边连接的哪两个节点。这样对顺序无关,只是Nodes,Edges,Adjacency List的顺序需要一一对应

我的总结:

感觉自然界中有先验关系的数据都可以作为图。例如位置关系,时间关系,逻辑关系,引用关系等等。

2. 图和其他数据的区别;为什么要用GNN

2.1 GNN

A GNN is an optimizable transformation on all attributes of the graph (Nodes, edges, global-contect) that preserves graph symmetries (permutation invariances)

GNN是一个对图上所有的属性进行的一个可以优化的变换,这个变化可以保持图的对称信息的(打乱后结果不会变)。作者用的是Message Passing neural Network,并且输入是图,输出也是图。其中图的属性会进行改变的同时图片的连接性不会改变。
最简单的GNN

3. 构建GNN

4. GNN Playground