GNN与GCN理解

  • 一、为何引入GNN与GCN?
  • 二、GNN(图域角度)
    • 1、能干嘛?
    • 2、怎么做?
  • 三、GCN
    • 0、频域角度个人快速理解(谨慎参考)
    • 1、频域角度
      • (1)拉普拉斯矩阵
      • (2) 传统傅里叶变换
      • (3)GCN中 拉普拉斯矩阵和傅里叶变换的关系
    • 2、 空域角度

一、为何引入GNN与GCN?

先回忆一下CNN:CNN常用于处理图像、语音——它们都是一种规则的、欧几里得结构的数据,同时拥有空间不变性(输入扭曲但输出仍不变)。CNN中的卷积是一种离散卷积(即加权求和),本质上就是利用一个共享参数的过滤器(kernel),通过计算中心像素点以及相邻像素点的加权和来构成feature map、实现空间特征的提取,其中的加权系数就是卷积核的权重系数(W)。

CNN中的卷积核的系数如何确定?——随机化初值,然后根据误差函数通过反向传播梯度下降进行迭代优化。经迭代优化后的卷积核才能实现特征提取的作用。对于卷积网络而言,引入可优化的卷积参数很重要。

如何处理 非欧式空间 的结构(典型:社交网络)?——引入了GNN与GCN网络:利用『边的信息』对『节点信息』进行『聚合』从而生成新的『节点表示』。

二、GNN(图域角度)

1、能干嘛?

输入各个节点本身的特征以及节点之间的关系图,输出在考虑了图结构后各节点的最终表达特征。这个最终特征可用于分类、回归、关联预测…

2、怎么做?

分三步走:聚合、更新、循环。以下图为例(每个节点旁边的数字为该节点的特征向量):

(1) 聚合&更新:考虑当前节点本身的信息的同时,也要考虑当前节点的邻居节点的信息。以A节点为例,其邻居包括B、C、D,采用某种聚合方式将ABCD的信息融合起来。融合方法如下(a、b、c为超参数):

得到的值用于更新A节点的值。遍历其他节点、操作相同。
(2)循环:当仅循环一次时,当前节点仅多聚合了自己邻居的信息;但循环到第二次时,将聚合邻居的邻居的信息。
仍以A节点为例,在第一次循环中A与E无聚合关系(AE非邻居);但在第二次循环中,A与C聚合时,此时的C已在第一轮循环中聚合了E的信息(CE邻居),因此在第二轮循环中,A也会聚合一定的E的信息(即使A与E无直接联系)。易知,若循环足够多,则可处理到很大范围内的节点的信息。

GNN快速理解

三、GCN

较GNN而言主要是聚合操作不同。GCN提取图特征的过程有两种理解方式:空域与频域。

GCN论文

0、频域角度个人快速理解(谨慎参考)


图中彩色标注部分为强对应关系。

1、频域角度

(1)拉普拉斯矩阵

基于原始图,易构造其节点的度矩阵D、邻接矩阵A。根据这些信息可构造如下几种拉普拉斯矩阵L:

a. 最简单的构造公式 L=D-A:

b. 对称归一化的拉普拉斯矩阵构造公式:

其中具体的元素取值为:

此式中间最长的那行与 三、2 节中step4对应。

拉普拉斯矩阵的特征分解

我们构造出的拉普拉斯矩阵是半正定矩阵,拥有良好的性质:必能进行特征分解且特征向量两两 正交。特征分解后的形式为:

其中,U是L的特征向量,中间为特征值组成的对角矩阵。上式中U的逆可以换成U的转置。

(2) 传统傅里叶变换

拓展:从数学角度理解傅里叶变换为何能做到将原始信号转为若干正交信号的组合

傅里叶变换一个本质理解就是:把任意一个函数表示成了若干个正交函数(由sin,cos 构成)的线性组合。通过傅里叶变换还能实现图域与频域的转换。由其公式知:

上式中,f(t)为原始信号,第三项为关于时间t的函数,对其进行最右侧项所示的积分后,t被消掉了(对谁积分谁就消失),频率w变成了自变量。其中,

这一部分叫做 傅里叶变换的基,也是 拉普拉斯算子的特征函数,w就和特征值相关。

PS. 对图像(照片那种)进行傅里叶变换后,将得到其频谱图(在频域的表示),图像中心代表低频,通常用于描述图的形状等信息;图像边缘为高频,用于描绘纹理和边缘。频谱图中,越亮的部分代表取值越高。

(3)GCN中 拉普拉斯矩阵和傅里叶变换的关系

a. Graph的拉普拉斯矩阵 是 离散的 拉普拉斯算子
b. Graph的拉普拉斯矩阵的 特征向量U =拉普拉斯算子的 特征函数exp(-iwt)
c. 拉普拉斯算子的 特征函数 是 傅里叶变换的

因此,求Graph的傅里叶变换的基 = 求Graph的拉普拉斯矩阵的特征向量

要额外注意,Graph上的傅里叶变换与传统傅里叶变换不同:前者离散、后者连续。因此仿照(2)中 传统傅里叶定义公式(连续–积分),得到Graph上的 某个 特征值的傅里叶变换(离散–求和):

推广到 所有 特征值:

即,f 在Graph上傅里叶变换的矩阵形式为:

逆变换:

对GCN而言,经傅里叶变换后,实现了: 图域卷积 == >频域相乘(这样做的好处包括可以减少计算量等)。那先对图和卷积核做傅立叶变换(得到其频域表示)后相乘,再傅立叶反变换回来,就得到了图域卷积。对应公式如下:


关于频域上的更详细解释,可见我的 另一篇文章

2、 空域角度

GCN空域角度快速理解

以下解释gcn核心公式(即,如何聚合)推导思路,前提:

step1.考虑邻居节点对当前节点的影响


改为矩阵形式:

step2.追加考虑节点本身(A变成A+I )

step3.追加归一化
若无归一化操作,可能会导致离群较远或者度较小的节点在聚合后特征较小,离群较近或者度较大的节点在聚合后特征较大。故引入归一化消除这一影响。增设:



step4.对称归一化
引入此步骤是考虑到了相连的两节点,度的差距很大的情况,如下:

B是A的唯一,但A只是B的鱼塘里的其中一个——这种情况下,若仍按照step3的计算方式,则对于A节点而言,B的一大坨特征都会加到A的身上,进而导致原本AB差距很大,但在一轮循环后A的特征向B靠近了很多,A的特征失真了。因此对两节点的度做几何平均:


由上式知:假设A的度为1,B的度为10000。度的几何平均作分母后:对A(B)而言只有一小部分(1/100)的B(A)的特征被考虑了进来。
将上式化成论文里的样子:

这个公式中:

A波浪=A+I,I是单位矩阵
D波浪是A波浪的度矩阵
H是每一层的特征,对于输入层的话,H就是X
σ是非线性激活函数
W是可训练的参数矩阵

通过这个公式来进行层层传播,传播两到三层的效果就可以。两层GCN传递公式为:

最基础的GNN与GCN理解相关推荐

  1. 快速理解GNN、GCN、R-GCN、GAT

    写在前面:仅用于记录自己学习 快速理解GNN.GCN.R-GCN.GAT GNN GCN R-GCN GAT 观看视频链接GNN 观看视频链接GCN 观看视频链接R-GCN 观看视频链接GAT GNN ...

  2. IM开发基础知识补课:正确理解前置HTTP SSO单点登陆接口的原理

    1.前言 一个安全的信息系统,合法身份检查是必须环节.尤其IM这种以"人"为中心的社交体系,身份认证更是必不可少. 一些PC时代小型IM系统中,身份认证可能直接做到长连接中(也就是 ...

  3. 1. C++基础知识学习及其深入理解(面向对象部分还没学) -- 课程1完成

    C++基础知识学习到深入理解及其部分算法学习 一.基础知识   现在把 北京大学 程序实际与算法一 视频刷了一遍,记录自己不懂的知识,所以知识点记录很零碎.这里使用的运行环境为Code::blocks ...

  4. 02-CPU基础知识:通俗易懂方式理解主频、核心、线程、缓存、架构

    我们通常会将CPU比喻为人类的大脑,是计算机的核心硬件,决定了一台电脑的运算性能好坏.我们在选购CPU的时候,通常都会在网上查询处理器型号参数,主要是看主频.核心.线程.缓存.架构等参数,那么对于小白 ...

  5. 【深度学习入门基础】二、简单理解 Transformer

    [深度学习入门基础]二.简单理解 Transformer 文章目录 [深度学习入门基础]二.简单理解 Transformer 自注意力层 多头注意力 Transformer 输入(输出)嵌入 位置编码 ...

  6. 【Pytorch神经网络理论篇】 25 基于谱域图神经网络GNN:基础知识+GNN功能+矩阵基础+图卷积神经网络+拉普拉斯矩阵

    图神经网络(Graph Neural Network,GNN)是一类能够从图结构数据中学习特征规律的神经网络,是解决图结构数据(非欧氏空间数据)机器学习问题的最重要的技术. 1 图神经网络的基础知识 ...

  7. PGL图学习之图神经网络GNN模型GCN、GAT

    在4922份提交内容中,主要涉及13个研究方向,具体有: 1.AI应用应用,例如:语音处理.计算机视觉.自然语言处理等 2.深度学习和表示学习 3.通用机器学习 4.生成模型 5.基础设施,例如:数据 ...

  8. 图卷积神经网络(GCN)理解与tensorflow2.0代码实现

    图(Graph),一般用 G=(V,E)G=(V,E)G=(V,E) 表示,这里的VVV是图中节点的集合,EEE 为边的集合,节点的个数用NNN表示.在一个图中,有三个比较重要的矩阵: 特征矩阵XXX ...

  9. 【机器学习基础】(四):通俗理解支持向量机SVM及代码实践

    上一篇文章我们介绍了使用逻辑回归来处理分类问题,本文我们讲一个更强大的分类模型.本文依旧侧重代码实践,你会发现我们解决问题的手段越来越丰富,问题处理起来越来越简单. 支持向量机(Support Vec ...

最新文章

  1. 聊聊springboot elasticsearch healthIndicator
  2. java导出多个excel并打成zip包
  3. tcp/ip详解--分层
  4. perf stat 输出解读
  5. mysql cmd ping_cmd命令行的ping用法
  6. 自定义View时,用到Paint Canvas的一些温故,讲讲平时一些效果是怎么画的(基础篇 一)...
  7. TFIDF java实现
  8. webpack4下import()模块按需加载,打包按需切割模块,减少包体积,加快首页请求速度...
  9. 七年三套房,阿里程序员炫富,努力就有回报,感谢当初的选择!
  10. WPF中实现图片文件转换成Visual对象,Viewport3D对象转换成图片
  11. 个税扣缴又出新规!12月31日前,所有人必须完成这件事,否则明年到手的工资要变少!...
  12. VS报:dll标记为系统必备组件,必须对其进行强签名错误
  13. 数字信号处理的fpga实现_数字信号处理的卷积运算实现
  14. excel文件的工作表保护密码忘记了
  15. ZJ-笔记本风扇异响
  16. 燃烧的远征恢复英文语音的方法
  17. oracle数据错误循环冗余检查,Oracle数据恢复:文件 数据错误(循环冗余检查) 解决...
  18. 基于单片机的超市储物柜设计_基于单片机的新型智能储物柜设计
  19. HBU-NNDL 实验五 前馈神经网络(3)鸢尾花分类
  20. C语言 命令行 execl函数

热门文章

  1. 用RNN做MNIST分类
  2. 前端开发和后端开发哪个难学
  3. dao层和serivce层的作用和区别
  4. HDU 5835 Danganronpa(弹丸论破)
  5. acl审计软件_审计软件有哪些-审计软件的总结分析
  6. 手把手教你做html日历
  7. 搜狗泛站怎么做?搜狗泛域名泛目录收录方法
  8. ikbc c104win键盘失灵以及数字键失灵
  9. 初始化失败_Destroying singletons
  10. 易飞会计科目表自己外挂表构造语句