【GNN】啥是GNN?GNN咋学?GNN何用?

机器学习初学者

共 1671字,需浏览 4分钟

 ·

2021-05-24 16:31

时晴,本文大多摘自引文Rishabh Anand的文章


GNN的可视化解释!

简 介

近来发现非常多的建模问题中都使用了GNN方法,便去学习了一番,后来发现了一篇非常不错的GNN的可视化解释文章,便将其翻译整理和大家一起分享。

目前图模型的应用非常广泛,最典型的如社交网络,蛋白质结构等。最近越来越多的图算法也被应用于搜索推荐,时间序列等的问题,并且都取得了非常大的成功,本文我们直观的不带有任何数学等形式的了解一下图神经网络。

大家一定会非常好奇,图神经网络究竟哪里好,它能学到其它网络学不到的东西吗?下面我们就一起来看看GNN是如何工作的。

GNN

1.关于图

图一般由两个核心模块组成,分别是:节点和边。

如上图所示,黑色的箭头是边的指向,表示一种关系,注意此处我们表示的是有向图。

虽然图很简单,但如果我们赋予节点和边不同的含义的话,那么图就可以非常多的信息,例如每个节点是用户,边是打电话的话,那么就可以表示一个电话相关的社交;如果节点是商品,边表示用户的购买顺序的话,那么就是一个用户的购物网络。

  2.一些概念

recurrent单元,嵌入向量表示和前向神经网络。

我们假设特征向量是当前节点索引的一个热编码,标签用颜色表示,如下图所示:

所有的节点被转化为一个recurrent单元, 所有的边组成一个前向神经网络。

3.信息传递

一旦节点和边的转换完成,图就会在节点之间执行消息传递。这个过程也被称为Neighbourhood Aggregation,因为它涉及到通过有向边从给定引用节点周围的周围节点推送消息。

对于GNNs,对于单个参考节点,相邻节点通过边神经网络将其信息(embeddings)传递到参考节点上的递归单元中。递归单元的新嵌入将通过将所说的递归函数应用于当前embeddings和相邻节点embeddings的边缘神经网络输出的总和来更新。

注意:边神经网络输出的和(图中的黑色封套)是输出顺序的不变量。

4.传递之后最终得到的向量表示是什么呢?

执行了几次邻域聚合/消息传递之后,我们的每个节点单元就变成了一组全新的embedding。

  • 当前每个节点对自己和相邻节点的信息(特征)会有更多的了解,从而得到整个图更精确的表示

为了在pipeline的更高层进行进一步的处理,或者简单地表示图,我们可以将所有embeddings相加,得到表示整个图形的向量。

  • 使用H比使用邻接矩阵往往效果更好,这些矩阵不代表图形的特征或独特方面,尽管存在任何图形扭曲-只是节点之间的边连接。

小 结

从上面的分析我们可以发现,在使用图的时候我们可以简单的将其划分为下面几步:

  • 给定一个图,首先将节点转化为递归单元,将边转化为前馈神经网络;
  • 对所有节点执行n次邻域聚合(消息传递)。
  • 对所有节点的嵌入向量求和得到图表示H。
  • 将H传递到更高的层中,或者使用它来表示图形的独特属性!
何时使用?

从上面GNN的直观解释中,我们知道了图形神经网络是如何工作的,那什么时候使用它会更为方便或者什么时候可以直接使用它呢?

  • 社交媒体中,对用户进行聚类的时候可以使用,依据每个用户follow和被follow的信息构建图,然后学习每个用户的embeddings信息聚类;
  • 内容推荐,依据用户流量内容的关联关系,对用户进行内容推荐;

当然,我觉得只要是能构建成图的数据,都可以尝试使用gnn。

参考文献

1.An Illustrated Guide to Graph Neural Networks

往期精彩回顾





本站qq群851320808,加入微信群请扫码:

浏览 64
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报