1. 概述

前面讲了 Spatial-GNN Graph Neural Networks (GNN)(一):Spatial - GNN 的基本原理和一些典型的实现。这一篇主要介绍一下另外一大类:Spectral-GNN。这一类一开始理解起来会比较抽象,因为涉及太多数学、信号处理等方面的内容,我一开始也陷入了这些困境里面。但是通过阅读了几位大牛的知乎或者博客之后,发现其实本质和 Spatial-GNN 是差不多的,只是理解的角度和出发点有些差异。
参考链接:
如何理解 Graph Convolutional Network(GCN)?-- Johnny Richards 的回答
如何理解 Graph Convolutional Network(GCN)?-- superbrother 的回答

本质:图中的每个结点无时无刻不因为邻居和更远的点的影响而在改变着自己的状态直到最终的平衡,关系越亲近的邻居影响越大。

要想理解这一系列的 GNN,最重要的是理解 Laplacian 矩阵的作用和原理。这样这一类的方法无非就是解法的不同 – 傅里叶变换只是将问题从顶点域(空间域)转换到频谱域去处理。上一篇的 Spatial-GNN 其实就是直接在顶点域(空间域)解。

2. 引入 – 热传导

众所周知,没有外接干预的情况下,热量从温度高传播到温度低的地方并且不可逆,根据著名的牛顿冷却定律(Newton Cool’s Law),热量传递的速度正比于温度梯度,直观上也就是某个地方A温度高,另外一个B地方温度低,这两个地方接触,那么温度高的地方的热量会以正比于他们俩温度差的速度从A流向B。

2.1 从一维空间开始

从一维空间开始我们先建立一个一维的温度传播的模型,假设有一个均匀的铁棒,不同位置温度不一样,现在我们刻画这个铁棒上面温度的热传播随着时间变化的关系。预先说明一下,一个连续的铁棒的热传播模型需要列 温度对时间和坐标的偏微分方程 来解决,我们不想把问题搞这么复杂,我们把空间离散化,假设铁棒是一个一维链条,链条上每一个单元拥有一致的温度,温度在相邻的不同的单元之间传播,如下图:


对于第 i 个单元,它只和 i − 1 与 i + 1 两个单元相邻,接受它们传来的热量(或者向它们传递热量,只是正负号的差异而已),假设它当前的温度为 \phi_{i},那么就有:

\frac{d \phi_{i}}{d t}=k\left(\phi_{i+1}-\phi_{i}\right)-k\left(\phi_{i}-\phi_{i-1}\right)

k 和单元的比热容、质量有关是个常数。右边第一项是下一个单元向本单元的热量流入导致温度升高,第二项是本单元向上一个单元的热量流出导致温度降低。做一点微小的数学变换可以得到:

\frac{d \phi_{i}}{d t}-k\left[\left(\phi_{i+1}-\phi_{i}\right)-\left(\phi_{i}-\phi_{i-1}\right)\right]=0

注意观察第二项,它是两个差分的差分,在离散空间中,相邻位置的差分推广到连续空间就是导数,那么差分的差分,就是二阶导数!所以,我们可以反推出铁棒这样的连续一维空间的热传导方程就是:

\frac{\partial \phi}{\partial t}-k \frac{\partial^{2} \phi}{\partial x^{2}}=0

同理,在高维的欧氏空间中,一阶导数就推广到梯度,二阶导数就是我们今天讨论的主角——拉普拉斯算子

\frac{\partial \phi}{\partial t}-k \Delta \phi=0

其中 \Delta这个符号代表的是对各个坐标二阶导数的加和,现在的主流写法也可以写作 \nabla^{2}

综上所述,我们发现这样几个事实:

  1. 在欧氏空间中,某个点温度升高的速度正比于该点周围的温度分布,用拉普拉斯算子衡量。
  2. 拉普拉斯算子,是二阶导数对高维空间的推广。

2.2 图(Graph)上热传播模型的推广

现在,我们依然考虑热传导模型,只是这个事情不发生在欧氏空间了,发生在一个Graph上面。这个图上的每个结点(Node)是一个单元,且这个单元只和与这个结点相连的单元,也就是有边(Edge)连接的单元发生热交换。例如下图中,结点1只和结点0、2、4发生热交换,更远的例如结点5的热量要通过4间接的传播过来而没有直接热交换。

我们假设热量流动的速度依然满足牛顿冷却定律,研究任一结点 i ,它的温度随着时间的变化可以用下式来刻画:

\frac{d \phi_{i}}{d t}=-k \sum_{j} A_{i j}\left(\phi_{i}-\phi_{j}\right)

其中 A 是这个图的邻接矩阵(Adjacency Matrix),定义非常直观: 对于这个矩阵中的每一个元素 A_{i j},如果结点 i 和 j 相邻,那么 A_{i j}=1 ,否则 A_{i j}=0。在这里,我们只讨论简单情况:

  1. 这张图是无向图, i 和 j 相邻那么 j 和 i 也相邻,所以A_{i j}=A_{j i}​,这是个对称阵。
  2. 结点自己到自己没有回环边,也就是 A 对角线上元素都是 0 。

所以不难理解上面这个公式恰好表示了只有相邻的边才能和本结点发生热交换且热量输入(输出)正比于温度差。我们不妨用乘法分配律稍微对上式做一个推导:

先看右边括号里面第一项, \operatorname{deg}(\cdot)代表对这个顶点求度(degree),一个顶点的度被定义为这个顶点有多少条边连接出去,很显然,根据邻接矩阵的定义,第一项的求和正是在计算顶点 i 的度。再看右边括号里面的第二项,这可以认为是邻接矩阵的第 i 行对所有顶点的温度组成的向量做了个内积。

为什么要作上述变化呢,我们只看一个点的温度不太好看出来,我们把所有点的温度写成向量形式再描述上述关系就一目了然了。首先可以写成这样:

然后我们定义向量 \boldsymbol{\phi}=\left[\phi_{1}, \phi_{2}, \ldots, \phi_{n}\right]^{T},那么就有:

\frac{d \phi}{d t}=-k D \phi+k A \phi=-k(D-A) \phi

其中 D=\operatorname{diag}(\operatorname{deg}(1), \operatorname{deg}(2), \ldots, \operatorname{deg}(n))被称为度矩阵,只有对角线上有值,且这个值表示对应的顶点度的大小。整理整理,我们得到:

\frac{d \phi}{d t}+k L \phi=0

回顾刚才在连续欧氏空间的那个微分方程:

\frac{\partial \phi}{\partial t}-k \Delta \phi=0

二者具有一样的形式!我们来对比一下二者之间的关系:

  • 相同点:刻画空间温度分布随时间的变化,且这个变化满足一个相同形式的微分方程。
  • 不同点:前者刻画拓扑空间有限结点,用向量\boldsymbol{\phi}来刻画当前状态,单位时间状态的变化正比于线性变换 − L 算子作用在状态 \phi上。后者刻画欧氏空间的连续分布,用函数 \phi(\boldsymbol{x}, t)来刻画当前状态,单位时间状态变化正比于拉普拉斯算子\Delta作用在状态 \phi 上。

不难发现,这就是同一种变换、同一种关系在不同空间上面的体现,实质上是一回事!

于是我们自然而然,可以把连续空间中的热传导,推广到图(Graph)上面去,我们把图上面和欧氏空间地位相同变换,以矩阵形式体现的 L 叫做拉普拉斯(Laplacian)矩阵。这正是原始形式的拉普拉斯矩阵 L = D − A

需要多嘴一句的是,本文开头所说的离散链条上的热传导,如果你把链条看成一个图,结点从左到右编号 1,2,3… 的话,也可以用图的热传导方程刻画,此时 D 除了头尾两个结点是 1 其他值都是 2(收尾只和一个节点相连), A 的主对角线上下两条线上值是 1,其他地方是 0。

2.3 推广到GCN

现在问题已经很明朗了,只要你给定了一个空间,给定了空间中存在一种东西可以在这个空间上流动,两邻点之间流动的强度正比于它们之间的状态差异,那么何止是热量可以在这个空间流动,任何东西都可以!

自然而然,假设在图中各个结点流动的东西不是热量,而是特征(Feature)或者消息(Message),那么问题自然而然就被推广到了 GCN。所以 GCN 的实质是什么,是在一张 Graph Network 中特征(Feature)和消息(Message)中的流动和传播!这个传播最原始的形态就是状态的变化正比于相应空间(这里是Graph空间)拉普拉斯算子作用在当前的状态。

抓住了这个实质,剩下的问题就是怎么去更加好的建模和解决这个问题。

建模方面就衍生出了各种不同的算法,你可以在这个问题上面复杂化这个模型,不一定要遵从牛顿冷却定律,你可以引入核函数、引入神经网络等方法把模型建得更非线性更能刻画复杂关系。解决方面,因为很多问题在频域解决更加好算,你可以通过 Fourier 变换把空域问题转化为频域问题,解完了再变换回来,于是便有了所有 Fourier 变换中的那些故事。

总结一下,问题的本质就是:

  1. 我们有张图,图上每个结点刻画一个实体,物理学场景下这个实体是某个有温度的单元,它的状态是温度,Graph 中就是一个 embedding 表示的特征向量。
  2. 相邻的结点具有比不相邻结点更密切的关系。
  3. 结点可以传播热量/消息到邻居,使得相邻的结点在温度/特征上面更接近。

本质上,这是一种Message Passing,卷积、傅立叶都是表象和解法。

实际解决的过程中,可以发挥机器学习搬砖工懂得举一反三的优良精神,首先,不一定要全局操作,我们可以 batchify 操作一部分结点,大家轮着来,其次,我们可以只考察这个点的一阶和二阶邻居对当前点作 Message Passing,这个思想就是对拉普拉斯算子作特征分解,然后只取低阶的向量,因为矩阵的谱上面能量一般具有长尾效应,头几个特征值 dominate 几乎所有能量。

2.3.1 Laplacian算子的另一个性质

Laplacian 算子的另一个性质:Laplacian 矩阵/算子不仅表现的是一种二阶导数的运算,另一方面,它表现了一种加和性,这个从图上热/消息传播方程最原始的形态就能一目了然:

\frac{d \phi_{i}}{d t}=-k \sum_{j} A_{i j}\left(\phi_{i}-\phi_{j}\right)

可见,每个结点每个时刻的状态变化,就是所有邻居对本结点差异的总和,也就是所有的邻居把message pass 过来,然后再 Aggregate 一下,这正是 GraphSage 等空域算法的关键步骤 Aggregate 思想的滥觞。

在实际建模中,我们的 Aggregate 不一定是加和,作为一个熟练的机器学习搬砖工,我们懂得可以把 Aggregate 推广成各种操作例如 Sum Pooling,例如 LSTM,例如 Attention,以求刷效果,发 paper

Graph Neural Networks (GNN)(二):Spectral-GNN 引言和导入相关推荐

  1. [论文翻译]-A Comprehensive Survey on Graph Neural Networks《图神经网络GNN综述》

    文章目录 摘要 1 简介 1.1 GNN简史 1.2 Related surveys on graph neural networks 1.3 Graph neural networks vs. ne ...

  2. 论文翻译-A Comprehensive Survey on Graph Neural Networks《图神经网络GNN综述》

    文章目录 1 简介 1.1 GNN简史 1.2 GNN的相关研究 1.3 GNN vs 网络嵌入 1.4 文章的创新性 2 基本的图概念的定义 3 GNN分类和框架 3.1 GNNs分类 3.2 框架 ...

  3. Graph Neural Networks (GNN)(三):Spectral-GNN 之 GCN

    1. 概述 前面讲了 Spectral-GNN Graph Neural Networks (GNN)(二):Spectral-GNN 引言和导入 的引言和导入.这一篇主要介绍这一类最经典的一条模型主 ...

  4. 图神经网络(Graph Neural Networks,GNN)综述

    鼠年大吉 HAPPY 2020'S NEW YEAR 作者:苏一 https://zhuanlan.zhihu.com/p/75307407 本文仅供学术交流.如有侵权,可联系删除. 本篇文章是对论文 ...

  5. 【阅读】A Comprehensive Survey on Electronic Design Automation and Graph Neural Networks——EDA+GNN综述翻译

    转载请注明出处:小锋学长生活大爆炸[xfxuezhang.blog.csdn.net] Paper原文:https://dl.acm.org/doi/pdf/10.1145/3543853​​​​​​ ...

  6. TNNLS | GNN综述:A Comprehensive Survey on Graph Neural Networks

    目录 前言 Abstract I. Introduction II. Background And Definition A. Background B. Definition III. Catego ...

  7. Node Classification with Graph Neural Networks(使用GNN进行节点分类)

    文章目录 Setup 准备数据集 处理和可视化数据集 拆分数据集为分层训练集和测试集 训练和评估的实现 Feedforward Network(FFN) 构建一个Baseline神经网络模型 为bas ...

  8. 图神经网络 | (2) 图神经网络(Graph Neural Networks,GNN)综述

    原文地址 本篇文章是对论文"Wu Z , Pan S , Chen F , et al. A Comprehensive Survey on Graph Neural Networks[J] ...

  9. 图解GNN:A Gentle Introduction to Graph Neural Networks

    目录 前言 1.图是什么? 2.数据如何表示成图? 2.1 图像 2.2 文本 2.3 其他数据 2.3.1 分子 2.3.2 社交网络 2.3.3 引文图 3.图中的任务 3.1 图级任务 3.2 ...

最新文章

  1. power designer 设计数据库生成到oracle数据库
  2. typedef函数指针使用方法
  3. HDU5706 GirlCat
  4. 饥荒海难机器人怎么用_饥荒开发商又一款神作,难到吐血的生存游戏!
  5. boost::spirit模块从不同序列中元素的解析输入填充单个融合序列
  6. 过多提交(Over Posting)
  7. SQL Server 数据库管理常用的SQL和T-SQL语句
  8. java applet鼠标点击事件_Swing 鼠标单击事件?
  9. Java 使用阿里云短信的API接口
  10. caffe运行问题(持续更新),sublime设置
  11. android模拟点击webview,的Android的WebView点击模拟
  12. js与jQuery操作select大全
  13. 软件优先级优先于硬件优先级_一切都是必须有优先级的
  14. paypal tp 对接_PayPal支付接入
  15. 基于Neo4j计算网络节点中心性(Closeness、betweenness Centrality)
  16. android设备登录是什么手机_Android手机丢失或被盗?现在就告诉你如何找回它
  17. 网页地址栏?和的意义
  18. 3月23日—3月27日四年级课程表
  19. Linux--基础知识点--4.1--vim寄存器
  20. 使用winfrom制作KTV排行榜点歌

热门文章

  1. Java学习(二)----java实现在线翻译
  2. 校园无线广播-河北赵县职业中心校园无线广播系统方案
  3. android手机刷ios6,管你iOS6还是WP8 市场Android强机盘点
  4. windows下的广告病毒
  5. 游戏修改器、外挂原理
  6. 【Taip】Java快速开发腾讯人工智能AI接入
  7. MySQL监控(三):Grafana入门
  8. 计蒜客——草药的价值——背包问题
  9. 汽车内部生命监测系统
  10. 雷达系统 学习笔记(十)——合成孔径雷达3