图神经网络GNN

由于在论文中看到了GNN的东西,所以来简单记录一下。

GNN?图神经网络,听起来很高大上的东西,简单来说可以提取图中每个点的特征。故其的作用为特征提取。本文到此结束,感谢您的阅读。

基础知识-图

在计算机科学中,图是由顶点和边进行组成了一种结构。图G可以通过顶点集合V和边集合E来描述。

说人话就是:图可以用下面的图片来表示。

在图中,节点有:{男主,女主,宠物},边为{喜欢,养}

图神经网络GNN

图神经网络共有三个操作:聚合,更新,循环

我们以分类问题为例,比如我们想判断上面一幅图中谁比较有钱。下面给出上面图中各个点的信息

属性 宠物 男主 女主
金钱 9999 9 900

Step1 聚合

对于普通的神经网络来说,我们很容易就知道宠物很有钱,但是通过图的关系来看,男主的宠物很有钱,也许可以推断出男主很有钱。

所以男主的邻居信息N的计算公式如下所示: $$ N = a * (宠物的钱) + b * (女主的钱) $$

Step2 更新

男主最终的特征为:

$$ 男主钱 = \sigma[ W * 男主自己的钱 + \alpha N ] $$

其中$\sigma$是激活函数(比如relu或者sigma)

W是模型的训练参数

Step3 循环

通过一次聚合更新,我们可以推断出男主因为宠物很有钱,而变得有钱。

接下来,我们进行第二次更新,女主就可以因为男主有有钱,而变得有钱。此时说明了女主也获得了其二阶邻居(男主宠物)的特征了。

能干嘛?

Q: 最终怎么进行分类问题呢?

A:我们通过GNN之后可以获得每个节点更新后的信息,也就是特征,此时我们就可以之间通过训练一个分类器来进行分类了。

归根到底,GNN就是一个特征分类的问题

怎么实现?

手动写一个?不可能。我又不是专门研究这一个的,我们来看一下网上有的python库,我们可以通过这个库tf_geometric来实现图神经网络

原始图的信息(5个节点,每个节点10个特征):

原始信息

图神经网络特征提取后的信息(5个节点,每个节点5个特征)

特征提取

为什么特征少了,我也想不出来,呜呜呜!

参考链接

https://www.bilibili.com/video/BV1Tf4y1i7Go/?spm_id_from=333.788.recommend_more_video.-1