GNN

一、过程

1、输入(input module)

  • GCN的输入,给定图 G = (V, E),输入的是X,A
  • 一个输入维度为 N ×F0的特征矩阵 X,其中 N是图网络中的节点数而 F0 是每个节点的输入特征数。
  • 一个图结构的维度为 N×N的矩阵表征,例如图 G 的邻接矩阵 A

2、传播(propagation module)

1)结构

1、包括aggregator和updater两部分

2、aggregator:其目的为通过聚合节点n周围节点的信息,学习节点n的嵌入表示hn,具体为:

神经网络输入图像数据 图神经网络的输入_迭代

3、updater:模型在学习过程中迭代更新节点n的嵌入表示:

神经网络输入图像数据 图神经网络的输入_机器学习_02

其中, t为第t轮迭代,X为所有特征,H**t为第t轮迭代中所有节点的嵌入表示。

2)公式解释

神经网络输入图像数据 图神经网络的输入_迭代_03

· A波浪=A+I,I是单位矩阵

· D波浪是A波浪的度矩阵(degree matrix),公式为

神经网络输入图像数据 图神经网络的输入_神经网络输入图像数据_04

· H是每一层的特征,对于输入层的话,H就是X

· σ是非线性激活函数

3)进一步解释

1、变换(transform):对当前的节点特征进行变换学习,这里就是乘法规则(Wx);(体现在HW,赋权)

2、聚合(aggregate):聚合领域节点的特征,得到该节点的新特征,这里是简单的加法规则;(体现在AHW,图示如下)

3、激活(activate):采用激活函数,增加非线性。

  • 考虑到自身特征:添加节点自连接边,使用A波浪代替 A
  • 局部空间信息融合(考虑邻居信息):
  • 神经网络输入图像数据 图神经网络的输入_迭代_05

  • ,初始X 就是H0,先不必考虑D的影响,抽象出 A与X,如下例,演示了如何加入邻居信息(↑聚合,加法部分)

神经网络输入图像数据 图神经网络的输入_神经网络输入图像数据_06

  • 归一化 (解决:由于加法运算,节点的度可能差距比较大,导致度大的节点特征越来越大,而对于度小的节点却相反,这可能导致网络训练过程中梯度爆炸或者消失的问题

对邻接矩阵进行归一化,使得A的每行和值为1,在实现上我们可以乘以度矩阵的逆矩阵

神经网络输入图像数据 图神经网络的输入_深度学习_07

神经网络输入图像数据 图神经网络的输入_神经网络_08

对领域节点特征求平均:

神经网络输入图像数据 图神经网络的输入_迭代_09

更进一步地,采用对称归一化来进行聚合操作:

神经网络输入图像数据 图神经网络的输入_神经网络输入图像数据_10

不仅考虑了节点i的度,也考虑了邻居节点j的度:

神经网络输入图像数据 图神经网络的输入_深度学习_11

4)注意

注意:无论更新多少层,节点之间的连接关系(即A)都是共享的。

5)感受野变化

可以将节点的邻居节点看成感受野,随着网络层数的增加,感受野越来越大,即节点的特征融合了更多节点的信息。(上图)

3、输出(output module)

1) 节点级

对于节点分类问题,模型输出最后一次迭代后每个节点对应的标签

神经网络输入图像数据 图神经网络的输入_机器学习_12

模型的损失函数为:

神经网络输入图像数据 图神经网络的输入_深度学习_13

其中ti为第i个节点的真实标签, oi为模型输出标签, p为节点数量

  • 节点层面任务
    比如文章最开始提到的引文网络中,节点论文的分类,社交网络中用户标签的分类等。此时,主要关注节点和边层面的特征。
  • 节点级

该类输出和 节点的回归和分类 相关。因为图卷积网络会给出图数据节点的潜在表示,所以一般,在GCN的后面会增加感知层或者softmax层

softmax层只是对神经网络的输出结果进行了一次换算,将输出结果用概率的形式表现出来)

Eg:博主,其支持者:读者1赞同并转发了博主观点,读者2又为读者1 的转发点赞,根据点赞关系,可以断定读者2 认同博主,是博主的支持者

2) 边级
  • 应用

比如社交网络中,将用户作为节点,用户之间的关注关系建模为边,通过边预测实现社交用户的推荐。此时,主要关注节点和边的特征。

该类输出和 边的分类和连接预测任务 相关。为了能够预测一个边的连接强度,额外添加一个函数,以两个节点的潜在表示作为输入

Eg:推荐系统,内容推荐(推荐中有一个概念叫元路径。在电影推荐的场景里,我们用 U 表示用户,用 M 表示电影,那么 UUM 是一条元路径。它表示一位用户关注了另一位用户,那么我们可以将用户看过的电影,推荐给关注他的人。)

3) 图级
  • 对于图分类问题,使用READOUT 函数从最后一次迭代中聚合节点特征来获取整个图的表征向量h(G)

神经网络输入图像数据 图神经网络的输入_神经网络输入图像数据_14

  • READOUT 函数可以是一个简单的置换不变函数,例如求和或者 graph-level 的 pooling 函数
  • 比如对药物分子的分类。此时,任务不依赖于某个节点或某条边的属性,而是,需要考虑整个图的信息。
  • 该类输出一般与 图的分类任务 相关。为了能够从一个图中获得一个更为紧凑的表示,一个池化层会被用于压缩一个图生成一张子图(部分节点和边会被移除)

Eg:分子化学、生命科学、交通预测,新药物的发现,化合物筛选

一些概念:
  1. 前馈神经网络,是一种最简单的神经网络,各神经元分层排列。每个神经元只与前一层的神经元相连。接收前一层的输出,并输出给下一层.各层间没有反馈。是目前应用最广泛、发展最迅速的人工神经网络之一。
  2. 聚合节点特征:
    图卷积的核心思想:
利用『边的信息』对『节点信息』进行『聚合』从而生成新的『节点表示』。

最后输出是节点特征,图分类,需要考虑所有节点的特征,不是只看部分

  1. 置换
    实际上就是一一映射,就比如之前,博主例子,将读者的点赞特征,置换为一种支持关系