时晴,本文大多摘自引文Rishabh Anand的文章
GNN的可视化解释!
近来发现非常多的建模问题中都使用了GNN方法,便去学习了一番,后来发现了一篇非常不错的GNN的可视化解释文章,便将其翻译整理和大家一起分享。
目前图模型的应用非常广泛,最典型的如社交网络,蛋白质结构等。最近越来越多的图算法也被应用于搜索推荐,时间序列等的问题,并且都取得了非常大的成功,本文我们直观的不带有任何数学等形式的了解一下图神经网络。
大家一定会非常好奇,图神经网络究竟哪里好,它能学到其它网络学不到的东西吗?下面我们就一起来看看GNN是如何工作的。
1.关于图
图一般由两个核心模块组成,分别是:节点和边。
如上图所示,黑色的箭头是边的指向,表示一种关系,注意此处我们表示的是有向图。
虽然图很简单,但如果我们赋予节点和边不同的含义的话,那么图就可以非常多的信息,例如每个节点是用户,边是打电话的话,那么就可以表示一个电话相关的社交;如果节点是商品,边表示用户的购买顺序的话,那么就是一个用户的购物网络。
2.一些概念
recurrent单元,嵌入向量表示和前向神经网络。
我们假设特征向量是当前节点索引的一个热编码,标签用颜色表示,如下图所示:
所有的节点被转化为一个recurrent单元, 所有的边组成一个前向神经网络。
一旦节点和边的转换完成,图就会在节点之间执行消息传递。这个过程也被称为Neighbourhood Aggregation,因为它涉及到通过有向边从给定引用节点周围的周围节点推送消息。
对于GNNs,对于单个参考节点,相邻节点通过边神经网络将其信息(embeddings)传递到参考节点上的递归单元中。递归单元的新嵌入将通过将所说的递归函数应用于当前embeddings和相邻节点embeddings的边缘神经网络输出的总和来更新。
注意:边神经网络输出的和(图中的黑色封套)是输出顺序的不变量。
执行了几次邻域聚合/消息传递之后,我们的每个节点单元就变成了一组全新的embedding。
为了在pipeline的更高层进行进一步的处理,或者简单地表示图,我们可以将所有embeddings相加,得到表示整个图形的向量。
从上面的分析我们可以发现,在使用图的时候我们可以简单的将其划分为下面几步:
从上面GNN的直观解释中,我们知道了图形神经网络是如何工作的,那什么时候使用它会更为方便或者什么时候可以直接使用它呢?
当然,我觉得只要是能构建成图的数据,都可以尝试使用gnn。
1.An Illustrated Guide to Graph Neural Networks