近期读一篇论文,里面用到GNN和GCN,看文献觉得很繁杂,这里通俗性地记录一下。

GNN主要参考:
【简单粗暴带你快速理解GNN】https://www.bilibili.com/video/BV1Tf4y1i7Go

GCN主要参考:
【简单粗暴带你理解GCN图卷积神经网络】https://www.bilibili.com/video/BV1Xy4y1i7sq/
【GCN中的拉普拉斯矩阵如何归一化?】https://www.zhihu.com/question/426784258

1. GNN

1.1 GNN 概述

Graph Neural Networks (GNN)

  • 归根到底,GNN是一种特征提取的方法
  • 主要包含三个步骤
    • 聚合、更新、迭代
  • 假设:
    • 节点之间有关系
    • 图中向量代表节点的特征
      在这里插入图片描述

1.2 GNN的步骤:聚合、更新、迭代

1.2.1 聚合

比如,现在要对节点进行分类
有时候,仅靠节点自己的特征,难以完成分类
在这里插入图片描述

1.2.2 更新

下图是一次GNN聚合+更新操作
在这里插入图片描述

1.2.3 迭代

在这里插入图片描述

1.3 GNN的用处

  • 节点分类
    • 根据最终的节点特征进行分类
  • 关联预测
    • 基于特征,判断两个节点是否有关联

1.4 GNN的公式化表示

在这里插入图片描述

  • 左侧的公式:
    A矩阵是邻接矩阵
    下面:在A矩阵中加上了一个对角矩阵(单位矩阵)

  • 右侧的公式:说简单点就是归一化

    • 第一行:
      Â 是邻接矩阵+单位矩阵
      D̂ 是 Â 的度矩阵

    • 度矩阵: 也就是描述每个节点有多少条边的矩阵,是一个对角矩阵
      在这里插入图片描述
      比如下图中,左边的Ã是邻接矩阵,右边的D̃就是对应的度矩阵

图片名称
  • 右侧的公式(续):
    • 最后一行:
      Aij是Xj到Xi的系数
      加和Aik是所有的Xn到Xi的系数的加和

1.5 GNN的总结

在这里插入图片描述

2. GCN

2.1 GCN 概述

Graph Convolution Networks (GCN)

  • GCN也是一种特征提取的方法,是对GNN的改进
  • GNN的不足之处:会导致B节点的特征,大幅度影响A节点
    在这里插入图片描述
    比如A是一名员工,B是员工的老板
    A确实认识B,B也确实很富有,但是A其实并不富,他只是认识B而已,类似A这样的人有很多
    GNN会因为A与B有关联而判定A很富有,这是不准确的

2.2 GCN 的改进之处

GNN有聚合、更新、迭代三个步骤
GCN主要是在聚合这一步骤,和GNN有所不同
GCN的改进:
一篇论文(SANER23-RGDroid)中如下描述:
在这里插入图片描述

其中重点是这个公式:
在这里插入图片描述
 是邻接矩阵+单位矩阵
D̂ 是 Â 的度矩阵
W(l)是learnable parameters可学习参数
这些参数是模型在训练过程中能够自动调整和优化的变量,其值会根据训练数据和损失函数不断更新

这个公式很难理解,但是我们只需要看到它展开后的形式,就能懂了:
在这里插入图片描述

在这里插入图片描述
以上图右侧的图为例:
假设i节点代表A节点,j节点代表B节点
Dii是1(A只有1条边)
Djj很大,是11(B有11条边)

所以分母很大,最后聚合过去的信息比较小

这样就可以削弱B对A的影响

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐