图卷积神经网络GCN-笔记

  • 1.卷积是什么
  • 2.图卷积的源起
  • 3.空域卷积
    • 3.1消息传递网络MPNN
    • 3.2 图采样与聚合GraphSage
  • 4.频域卷积
  • 5.图结构的序列化-Patch-SAN

从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (二)(https://www.cnblogs.com/SivilTaram/p/graph_neural_network_2.html)
该文详细写明了设涉及的参考材料,是一个很棒的综述性材料。本文仅作为阅读该系列文章的笔记,详情请参考原文。
参考博文2:稍微简略一些,建议看完《漫谈图神经网络模型 (二)》再去看此文,最终讲到不需要做特征值分解的GCN,有点神奇。
https://blog.csdn.net/qq_41727666/article/details/84622965

此前的图神经网络是基于循环结构,此篇主要介绍基于图卷积神经网络中的卷积操作。

1.卷积是什么

卷积本身是一种数学算子,对两个函数f和g操作,生成第三个函数h。
h(t)=∫−∞∞f(τ)g(t−τ)dτh(t)=\int_{-\infty}^{\infty}f(\tau)g(t-\tau)d\tauh(t)=∫−∞∞​f(τ)g(t−τ)dτ

即:新函数在t处的值=f 和g 关于t对称处函数值成绩的和。简单(抽象)地说就是一个加权求和的过程。了解加权求和的核心之后,可以建模出图像上的卷积操作。每一层的卷积核就是一个权重可学习的权值函数g(⋅)g(\cdot)g(⋅)。

卷积核的权重可以依据任务确定:实现边缘提取laplacian算子、可依据损失函数学习特定特征提取的权重。

卷积操作的作用:通过结点和周围结点的信息,提取/聚合结点的特征。

小结:在机器学习领域,卷积的具体操作是加权求和,卷积的效果是特征聚合/提取。

2.图卷积的源起

图像卷积操作要求规整的数据结构,图上结点的邻居结点数量不固定。

衍生了两种特征聚合图结点的特征的操作:

  1. 把图转换成规整的结构–少数
  2. 处理变长邻居结点的卷积核–主流,主要焦点

图卷积又分为空域卷积和频域卷积:

  1. 空域卷积–卷积核直接在原图上卷积操作
  2. 频域卷积–图做了傅立叶变换之后再进行卷积操作

启发:一种最简单的无参卷积–将所有的邻居结点的隐藏状态加和,以更新当前结点的隐藏状态。

3.空域卷积

3.1消息传递网络MPNN

Massage Passing Neural Network–MPNN,空域卷积的形式化框架。他将空域卷积分解为两个过程:消息传递Ml(⋅)M_l(\cdot)Ml​(⋅)和状态更新Ul(⋅)U_l(\cdot)Ul​(⋅)
hvl+1=Ul+1(hv,∑u∈ne[v]Ml+1(hvl,hul,xuv))h_v^{l+1}=U_{l+1}(h_v, \sum_{u\in ne[v]}M_{l+1}(h^l_v,h_u^l,x_{uv}))hvl+1​=Ul+1​(hv​,u∈ne[v]∑​Ml+1​(hvl​,hul​,xuv​))
即本结点与邻居结点的信息通过Ml(⋅)M_l(\cdot)Ml​(⋅)形成消息,将所有的消息类和后,然后通过状态更新函数Ul(⋅)U_l(\cdot)Ul​(⋅)更新自己的隐状态。

GCN:每一层包含所有结点,每层的MU参数并不共享,层数由设计确定
GNN:按更新时间序列展开成,各层的MU参数共享,每一次更新所有的结点,按不动点理论,时间序列的长度不定。

MPNN主要缺陷:卷积操作针对整张图,所有结点都要进内存。大规模图上的全图卷积操作并不现实。

3.2 图采样与聚合GraphSage

采样部分结点进行学习,

  1. 每一层的消息传递和状态更新不涉及所有结点,随机采样若干个结点。
  2. 针对每个结点,随机选取固定数目的邻居结点,(1阶/2阶均可)
  3. 定义aggregate函数聚合邻居结点的信息
  4. 计算采样点处的损失

GraphSage状态更新公式:
hvl+1=σ(Wl+1∗aggregate(hvl,{hul}),∀u∈ne[v])h_v^{l+1}=\sigma(W^{l+1}*aggregate(h_v^l,\{h_u^l\}),\forall u \in ne[v])hvl+1​=σ(Wl+1∗aggregate(hvl​,{hul​}),∀u∈ne[v])

GraphSage的设计重点在于aggregate函数的设计上。

4.频域卷积

(理解起来稍微有一点抽象)–利用傅立叶变换在图上的抽象来实现图上卷积操作。
傅立叶变换:将一个在空域上定义的函数分解成频域上的若干频率成分。
f^(t)=∫f(x)exp⁡−2πixtdx\hat{f}(t)=\int f(x)\exp^{-2\pi ixt}dxf^​(t)=∫f(x)exp−2πixtdx

傅立叶变换恒等式:两个函数在空域上的卷积的效果,等于两函数在频域上的乘积。
(f∗g)(t)=F−1[F[f(t)]⊙F[g(t)]](f*g)(t)=F^{-1}[F[f(t)]\odot F[g(t)]](f∗g)(t)=F−1[F[f(t)]⊙F[g(t)]]

所以:可以利用傅立叶变换,得到频域表示后,进行哈达玛乘积,再傅立叶逆变换回去,即可得到空域卷积的结果。

傅立叶变换的作用:

  1. 去规律的噪点
  2. 加速卷积操作(卷积核比较小时没啥加速效果)

利用傅立叶变换实现图上卷积的核心点:如何找到变换算子exp⁡−2πixt\exp^{-2\pi ixt}exp−2πixt。

依据变换算子是拉普拉斯算子的特征函数这一重要特性,找到图数据拉普拉斯变换算子–拉普拉斯矩阵对应的特征向量。

(频域卷积的前提条件-图是无向图。)
图拉普拉斯矩阵的特征值分解:
L=UΛUTL=U\Lambda U^TL=UΛUT
U=(u1,u2,...,un)U = (u_1, u_2, ... , u_n)U=(u1​,u2​,...,un​)
Λ=diag(λ1,λ2,...,λn)\Lambda = diag(\lambda_1, \lambda_2, ... , \lambda_n)Λ=diag(λ1​,λ2​,...,λn​)

图结点数据傅立叶变换:(^f)(t)=∑n=1Nf(n)ut(n)\hat(f)(t) = \sum_{n=1}^Nf(n)u_t(n)(^​f)(t)=∑n=1N​f(n)ut​(n) 这个叠加的n是个什么东西?N个结点的信息

整张图的傅立叶变换:f^=[f^(1)...f^(N)]=UTf\hat{f}= \left[ \begin{array}{ccc} \hat{f}(1)\\ ... \\ \hat{f}(N)\\ \end{array} \right]= U^Tf f^​=⎣⎡​f^​(1)...f^​(N)​⎦⎤​=UTf
用神经网络建模卷积核傅立叶变化后的函数,用gθg_\thetagθ​表示,那么频域卷积可以表示为:
gθ⊙UTfg_\theta\odot U^Tfgθ​⊙UTf

再通过傅立叶逆变换可以求得,最终图上的卷积。(逆变换算子为exp⁡2πixt\exp^{2\pi ixt}exp2πixt,类比图中的逆变换算子为U):
o=(f∗g)θ=UgθUTfo=(f*g)_\theta=Ug_\theta U^Tfo=(f∗g)θ​=Ugθ​UTf

图上频域卷积的工作,都聚焦于gθg_\thetagθ​的设计。频域卷积,隐状态更新涉及:

  1. lll层隐状态hl∈RN∗dlh^l\in R^{N*d_l}hl∈RN∗dl​,每一行为该层一个结点的隐藏状态:
    hl=[h11lh12l...h1dll...hN1lhN2l...hNdll]h^l= \left[ \begin{array}{ccc} h^l_{11}&h^l_{12}&...&h^l_{1d_l}\\ ... \\ h^l_{N1}&h^l_{N2}&...&h^l_{Nd_l}\\ \end{array} \right] hl=⎣⎡​h11l​...hN1l​​h12l​hN2l​​......​h1dl​l​hNdl​l​​⎦⎤​
  2. 傅立叶变换算子UTU^TUT,每一行是拉普拉斯矩阵的一个特征向量:
    UT=[u11u12...u1N...uN1uN2...uNN]U^T= \left[ \begin{array}{ccc} u_{11}&u_{12}&...&u_{1N}\\ ... \\ u_{N1}&u_{N2}&...&u_{NN}\\ \end{array} \right] UT=⎣⎡​u11​...uN1​​u12​uN2​​......​u1N​uNN​​⎦⎤​
  3. 卷积核频域形式gθ:dl+1∗Ng_\theta:d_{l+1}*Ngθ​:dl+1​∗N,参数化呗,还就是一个权重呀(没说明白怎么作用的呀,后面再看看吧):
    gθ=[θ1...0.........0...θN]g_\theta= \left[ \begin{array}{ccc} \theta_1&...&0\\ ...&...&... \\ 0&...&\theta_N\\ \end{array} \right] gθ​=⎣⎡​θ1​...0​.........​0...θN​​⎦⎤​

频域卷积,隐状态更新公式,{:i}表示第i列,(i=1,...,dl),(j=1,...,dl+1)(i=1,...,d_l),(j=1,...,d_{l+1})(i=1,...,dl​),(j=1,...,dl+1​):
h:,jl+1=σ(U∑i=1dL)gθUTh:,ilh^{l+1}_{:,j}=\sigma(U\sum_{i=1}^{d_L})g_\theta U^Th^l_{:,i}h:,jl+1​=σ(Ui=1∑dL​​)gθ​UTh:,il​

切比雪夫网络用来加速特征矩阵的求解。

5.图结构的序列化-Patch-SAN

Patch-SAN:将图转化成序列结构,然后利用卷积神经网络在序列化结构上作卷积。
Patch-SAN原文中主要涉及图分类任务。

图结构的特点:

  1. 同构
  2. 邻居结点的连接关系

图结构-》序列化结构要求
3. 同构图产生的序列应当是相似的
4. 保持邻居结点和目标结点的距离关系

Patch-SAN 通过三个规则来将图转化成一个长度为w∗(k+1)w*(k+1)w∗(k+1)的序列,然后直接使用1D卷积对该序列进行操作。

PaperNotes(17)-图卷积神经网络GCN-笔记相关推荐

  1. GCN图卷积神经网络总结笔记

    参考文章:一文读懂图卷积GCN - 知乎 Graph Neural Network(GNN) 图神经网络(Graph Neural Network, GNN)是指神经网络在图上应用的模型的统称.根据采 ...

  2. 图卷积神经网络GCN大白话解读!

    何时能懂你的心--图卷积神经网络(GCN) https://zhuanlan.zhihu.com/p/71200936 蝈蝈 把知道的讲清楚.公众号SimpleAI,欢迎来逛逛. 已关注 天雨粟 . ...

  3. (21) 出行需求预测新视角---基于图卷积神经网络GCN的出租车OD需求预测

    交通预见未来(21): 出行需求预测新视角---基于图卷积神经网络GCN的出租车OD需求预测 1.文章信息 <Origin-Destination Matrix Prediction via G ...

  4. 图卷积神经网络(GCN)综述与实现(PyTorch版)

    图卷积神经网络(GCN)综述与实现(PyTorch版) 本文的实验环境为PyTorch = 1.11.0 + cu113,PyG = 2.0.4,相关依赖库和数据集的下载请见链接. 一.图卷积神经网络 ...

  5. 深入理解图卷积神经网络(GCN)原理

    深入理解图卷积神经网络(GCN)原理 文章目录 深入理解图卷积神经网络(GCN)原理 前言 一.为什么需要GCN 二.GCN的原理 1.图的定义 2.GCN来了 2.1 矩阵计算公式 2.2 以小规模 ...

  6. DeepLearning | 图卷积神经网络(GCN)解析(论文、算法、代码)

    本篇博客主要讲述三种图卷积网络(Graph Convolutional Network, GCN)的算法原理及python实现,全文阅读时间约10分钟. 博主关于图神经网络的文章 DeepLearni ...

  7. 图卷积神经网络GCN中的关键公式推导---干货

    GCN推导(比较关键的部分) GCN公式推导的时候,需要用到线性代数和傅里叶变换的一些定理, 比如拉普拉斯矩阵是实对称矩阵,其标准化都的数值分布在[0,2]之间 比如傅里叶变换的原理就是多个正弦余弦函 ...

  8. 图卷积神经网络(GCN)入门

    GCN是从CNN来的 CNN成功在欧式数据上:图像,文本,音频,视频 图像分类,对象检测,机器翻译 CNN基本能力:能学到一些局部的.稳定的结构,通过局部化的卷积核,再通过层级堆叠,将这些局部的结构变 ...

  9. tensorflow lstm 预测_图卷积神经网络GCN与递归结构RNN相结合的时间序列预测

    时间序列预测任务可以按照不同的方法执行.最经典的是基于统计和自回归的方法.更准确的是基于增强和集成的算法,我们必须使用滚动周期生成大量有用的手工特性.另一方面,我们可以使用在开发过程中提供更多自由的神 ...

最新文章

  1. wxWidgets:stream流类概述
  2. ZJOI2019赛季回顾
  3. Nginx 基础(一)
  4. 嵌入式Linux系统之I.MX6触摸屏驱动程序TSC2007.C的分析、移植与校准
  5. jQuery 的一个自动向上翻页的效果
  6. UserWarning: Matplotlib is currently using agg,which is a non-GUI backend, so cannot show the figure
  7. urlconnection.connect()和url.openconnection()的区别
  8. bzoj-1079 着色方案(dp)
  9. VirtualBox不能共享剪贴板,有两种情形
  10. 软件著作权算法软件设计说明书_软件著作权说明书模板
  11. 学习强国---Android逆向及JS逆向
  12. 基于auto.js的安卓抢购软件---可实现毫秒级
  13. Java实现阿里云域名动态解析,DDNS功能
  14. 泰克Tektronix示波器软件TDS1012|TDS2002|TDS2004上位机软件NS-Scope
  15. EDM初级:什么是EDM邮件营销?EDM营销的定义
  16. xposed hook之360加固的APP过模拟器检测
  17. 不会聊天?不会撩妹?宅男如何走出自闭的循环圈
  18. html中banner属性,banner是什么
  19. 身为在软件测试摸爬滚打多年工程师的感悟,写给正在迷茫的你!
  20. uni-app自定义组件

热门文章

  1. 用VS2005开发WinCE程序调试图文教程
  2. mysql+ubunt+绿色安装_Mysql在ubuntu18上的安装及简单使用
  3. 广义典型相关分析_重复测量数据分析及结果详解(之二)——广义估计方程
  4. 【转】在windows上安装VTK
  5. 【转】Castle中AdditionalInterfaces用法介绍
  6. C#多线程之旅(七)——终止线程
  7. 第十节:进一步扩展两种安全校验方式
  8. [你必须知道的.NET]第三十五回,判断dll是debug还是release,这是个问题
  9. ELK学习总结(1-1)ELK是什么
  10. MOSS/Sharepoint RBS概念以及运用