图卷积网络(GCN)简单理解
1. 预备知识
1.1 图网络的种类、区别和联系
Graph Embedding
Graph Embedding指图嵌入,属于表示学习的范畴,也可以称为网络嵌入、图表示学习、网络表示学习等等。
具体可以参考博主之前整理的关于图嵌入相关内容的资料:链接。
Graph Neural Network (GNN)
GNN指神经网络在图上应用的模型的统称,根据采用的技术不同和分类方法的不同,又可以分为很多不同种类。如从传播的方式来看,图神经网络可以分为图卷积网络(GCN),图注意力网络(GAT)等。
具体来说GNN指的是神经网络模型在图领域所用到的方法的统称。
Graph Convolutional Network
GCN属于GNN的一类,是采用卷积操作的图神经网络。这种方法属于一类采用图卷积的神经网络,可以应用于图嵌入的方法中。
上述三者的关系可以用下图来表示:
1.2 离散卷积
离散卷积本质就是一种加权求和。如下图所示,CNN中的卷积本质上就是一个共享参数的过滤器,通过计算中心像素点及相邻像素点的加权来构成feature map实现空间特征的提取。
其中卷积核的系数,通过随机化初值,然后根据loss反向传播梯度下降迭代优化。卷积核的函数通过优化求出才能实现特征提取的作用,GCN的理论很大一部分工作就是为了引入可以优化的卷积参数。
1.3 为什么要研究GCN
CNN是计算机视觉领域的法宝,究其原因,是因为1.2中提到的,卷积核可以有效地提取出图像或视频数据中排列整齐的像素点矩阵,如下图所示。
相对应的,在科学研究中存在非欧式模型的数据,如下图所示,这是一个社交网络的数据结构。
实际上,这样的网络结构就是图论中抽象意义上的拓扑图。所以,GCN中G代表用顶点和边建立相应关系的拓扑图。
研究GCN的主要原因有以下几点:
- CNN无法处理Non Euclidean Structure的数据,学术上的表达是传统的离散卷积在这类数据上无法保持平移不变性。通俗讲就是在拓扑图中每个顶点的相邻顶点数目都可能不同,无法使用同样尺寸的卷积核来进行运算。
- 我们希望在这种类似于拓扑图的结构上有效地提取空间特征来进行机器学习。
- 广义上来说任何问题在赋范空间内都可以建立拓扑关联,谱聚类就是应用了这样的思想。这句话意思就是我们熟知的CV/NLP等问题实际上都可以通过建立拓扑关联转化为拓扑图的形式。所以说拓扑连接是一种广义的数据结构,GCN有很大的应用空间。
1.4 谱聚类
谱聚类(Spectral Clustering)是一种针对图结构的聚类方法,它跟其他聚类算法的区别在于,他将每个点都看作是一个图结构上的点,所以判断两个点是否属于同一类的依据就是,两个点在图结构上是否有边相连,可以是直接相连也可以是间接相连。举个例子,一个紧凑的子图(完全图)一定比一个松散的子图更容易聚成一类。
如上图,在k-means算法中会把空间分布距离较近的归为一类,而谱聚类则会把更紧凑的点聚为一类。
2. 图卷积预备定理
2.1 Motivation
图嵌入理论中我们说明了如果想把拓扑图转化为模型的输入,就必须将每个节点用其特征进行向量表示。而在试图得到节点表示的时候,容易想到的最方便的手段就是利用它周围的节点,也就是他的邻居节点等。
主要问题
- 我们需要按照什么条件去找neighbors?
- 确定感受野之后,按照什么方式处理包含不同数目的节点特征?
2.2 傅里叶变换
为了解决在拓扑图上无法有效地进行卷积计算的问题,我们需要了解Fourier变换的作用。
首先GCN中C(Convolution)的数学定义:
(f∗g)(t)=∫ℜf(x)g(t−x)dx(f*g)(t)=\int_{\Re}f(x)g(t-x)dx (f∗g)(t)=∫ℜf(x)g(t−x)dx
一般称g为作用在f上的filter或kernel
根据卷积定理,卷积公式还可以写成: f∗g=F−1{F{f}⋅F{g}}f*g=\mathcal{F}^{-1}\{\mathcal{F}\{f\}\cdot\mathcal{F}\{g\}\} f∗g=F−1{F{f}⋅F{g}}
这样我们只需要定义图上的傅里叶变换,就可以定义出图上的卷积变换。
到这里,我们首先需要推导上面的定理。
首先看看傅里叶变换的定义:
F{f}(v)=∫ℜf(x)e−2πix⋅vdx\mathcal{F}\{f\}(v) = \int_{\Re}f(x)e^{-2\pi ix\cdot v}dx F{f}(v)=∫ℜf(x)e−2πix⋅vdx
其逆变换(Inverse Fourier)则是:
F−1{f}(x)=∫ℜf(v)e2πix⋅vdx\mathcal{F}^{-1}\{f\}(x) = \int_{\Re}f(v)e^{2\pi ix\cdot v}dx F−1{f}(x)=∫ℜf(v)e2πix⋅vdx
根据Fourier变换及其逆变换的定义,我们可以证明卷积定理。定义h是f和g的卷积,那么:
h(z)=∫ℜf(x)g(z−x)dxh(z)=\int_{\Re}f(x)g(z-x)dx h(z)=∫ℜf(x)g(z−x)dx
有:
F{f∗g}(v)=F{h}(v)=∫ℜh(z)e−2πiz⋅vdz=∫ℜ∫ℜf(x)g(z−x)e−2πiz⋅vdxdz=∫ℜf(x)(∫ℜg(z−x)e−2πiz⋅vdz)dz\begin{aligned} \mathcal{F}\{f*g\}(v) &= \mathcal{F}\{h\}(v) \\ &= \int_{\Re}h(z)e^{-2\pi iz\cdot v}dz \\ &= \int_{\Re}\int_{\Re}f(x)g(z-x)e^{-2\pi iz\cdot v}dxdz \\ & =\int_{\Re}f(x)(\int_{\Re}g(z-x)e^{-2\pi iz\cdot v}dz)dz \end{aligned} F{f∗g}(v)=F{h}(v)=∫ℜh(z)e−2πiz⋅vdz=∫ℜ∫ℜf(x)g(z−x)e−2πiz⋅vdxdz=∫ℜf(x)(∫ℜg(z−x)e−2πiz⋅vdz)dz
可以令y=z−x;dy=dzy=z-x; dy=dzy=z−x;dy=dz,得到:
F{f∗g}(v)=∫ℜf(x)(∫ℜg(y)e−2πi(y+x)⋅vdy)dx=∫ℜf(x)e−2πix⋅v(∫ℜg(y)e−2πiy⋅vdy)dx=∫ℜf(x)e−2πix⋅vdx∫ℜg(y)e−2πiy⋅vdy=F{f}(v)⋅F{g}(v)\begin{aligned} \mathcal{F}\{f*g\}(v) &= \int_{\Re}f(x)(\int_{\Re}g(y)e^{-2\pi i(y+x)\cdot v}dy)dx \\ &= \int_{\Re}f(x)e^{-2\pi ix\cdot v}(\int_{\Re}g(y)e^{-2\pi iy\cdot v}dy)dx \\ &= \int_{\Re}f(x)e^{-2\pi ix\cdot v}dx \int_{\Re}g(y)e^{-2\pi iy\cdot v}dy \\ &= \mathcal{F}\{f\}(v) \cdot \mathcal{F}\{g\}(v) \end{aligned} F{f∗g}(v)=∫ℜf(x)(∫ℜg(y)e−2πi(y+x)⋅vdy)dx=∫ℜf(x)e−2πix⋅v(∫ℜg(y)e−2πiy⋅vdy)dx=∫ℜf(x)e−2πix⋅vdx∫ℜg(y)e−2πiy⋅vdy=F{f}(v)⋅F{g}(v)
最后等式两边同时作用F−1\mathcal{F}^{-1}F−1,得到:
f∗g=F−1{F{f}⋅F{g}}f*g=\mathcal{F}^{-1}\{\mathcal{F}\{f\}\cdot\mathcal{F}\{g\}\} f∗g=F−1{F{f}⋅F{g}}
2.3 Laplacian算子
一阶导数定义为:
f′(x)=limh→0f(x+h)−f(x)hf'(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h} f′(x)=h→0limhf(x+h)−f(x)
laplacian算子简单来说就是二阶导数:
Δf(x)=limh→0f(x+h)−2f(x)+f(x−h)h2\Delta f(x)=\lim_{h\to 0}\frac{f(x+h)-2f(x)+f(x-h)}{h^{2}} Δf(x)=h→0limh2f(x+h)−2f(x)+f(x−h)
在graph上,我们可以定义一阶导数为:
f∗g′(x)=f(x)−f(y)f'_{*g}(x)=f(x)-f(y) f∗g′(x)=f(x)−f(y)
其中y是x的邻居节点
那么对应的Laplacian算子可以定义为:
Δ∗gf′(x)=∑y∼xf(x)−f(y)\Delta_{*g}f'(x)=\sum_{y\sim x}f(x)-f(y) Δ∗gf′(x)=y∼x∑f(x)−f(y)
定义DDD是N×NN \times NN×N的度数矩阵(degree matrix)
D(i,j)={diifi=j0otherwiseD(i,j)=\left\{ \begin{aligned} d_{i} \quad & if \quad i=j \\ 0 \quad & otherwise \end{aligned} \right. D(i,j)={di0ifi=jotherwise
定义AAA为N×NN\times NN×N的邻接矩阵(adjacency matrix)
A(i,j)={1ifxi∼xj0otherwiseA(i,j)=\left\{ \begin{aligned} 1 \quad & if \quad x_{i}\sim x_{j} \\ 0 \quad & otherwise \end{aligned} \right. A(i,j)={10ifxi∼xjotherwise
这里的两个矩阵定义都可以参考2.4中的例子来理解。
那么拉普拉斯算子可以写成:
L=D−AL=D-A L=D−A
标准化之后可以得到:
L=IN−D−1/2AD−1/2L=I_{N}-D^{-1/2}AD^{-1/2} L=IN−D−1/2AD−1/2
定义Laplacian算子的目的是为了找到Fourier变换的基,比如传统的Fourier变换的基e2πix⋅ve^{2\pi ix\cdot v}e2πix⋅v就是Laplacian算法的一组特征向量:
Δe2πix⋅v=λe2πix⋅v\Delta e^{2\pi ix\cdot v}=\lambda e^{2\pi ix\cdot v} Δe2πix⋅v=λe2πix⋅v
其中λ\lambdaλ是一个常数。
那么上面的Fourier基就是LLL矩阵的n个特征向量U=[u1,...,un]U=[u_{1},...,u_{n}]U=[u1,...,un],LLL可以分解为:
L=UΛUTL=U\Lambda U^{T} L=UΛUT
其中Λ\LambdaΛ是特征值组成的对角矩阵
传统Fourier变换 | Graph Fourier变换 | |
---|---|---|
Fourier变换基 | e−2πixve^{-2\pi i xv}e−2πixv | UTU^{T}UT |
逆Fourier变换基 | e2πixve^{2\pi ixv}e2πixv | UUU |
维度 | ∞\infin∞ | 点的个数nnn |
那么Graph Fourier变换可以定义为:
GF{f}(λl)=∑i=1nf(i)ul∗(i)\mathcal{GF}\{f\}(\lambda_{l})=\sum_{i=1}^{n}f(i)u_{l}^{*}(i) GF{f}(λl)=i=1∑nf(i)ul∗(i)
其中fif{i}fi可以看做是作用在第iii个点上的signal,用向量x=(f(1)…f(n))∈ℜnx=(f(1)\dots f(n)) \in \Re^{n}x=(f(1)…f(n))∈ℜn来表示。ul∗u_{l}^{*}ul∗是ulu_{l}ul的对偶向量,ul∗u_{l}^{*}ul∗是矩阵UTU^{T}UT的第lll行,ulu_{l}ul是矩阵UUU的第lll行。
那么我们可以用矩阵形式来表示Graph Fourier变换:
GF{x}=UTx\mathcal{GF}\{x\}=U^{T}x GF{x}=UTx
类似的,Inverse Graph Fourier变换定义为:
IGFf^(i)=∑l=0n−1f^(λl)ul(i)\mathcal{IGF} \hat{f}(i)=\sum_{l=0}^{n-1}\hat{f}(\lambda_{l})u_{l}(i) IGFf^(i)=l=0∑n−1f^(λl)ul(i)
它的矩阵形式表达为:
IGF{x}=Ux\mathcal{IGF}\{x\} = Ux IGF{x}=Ux
2.4 相关矩阵定义
图中拉普拉斯矩阵就是由度矩阵D-邻接矩阵A构造出的。
3. 推导Graph Convolution
首先我们可以根据2中推导的卷积定理:
f∗g=F−1{F{f}⋅F{g}}f*g=\mathcal{F}^{-1}\{\mathcal{F}\{f\}\cdot\mathcal{F}\{g\}\} f∗g=F−1{F{f}⋅F{g}}
那么图的卷积公式可以表示为:
g∗x=U(UTg⋅UTx)g*x=U(U^{T}g\cdot U^{T}x) g∗x=U(UTg⋅UTx)
作为图卷积的filter函数ggg,我们希望具有很好的局部性。就像CNN模型里的filter一样,只影响到一个像素附近的像素。那么我们可以把ggg定义成一个laplacian矩阵的函数g(L)g(L)g(L)。
作用一次laplacian矩阵相当于在图上传播了一次邻居节点。进一步我们可以把UTgU^{T}gUTg看做是gθ(Λ)g_{\theta}(\Lambda)gθ(Λ)一个laplacian特征值的函数。
改写上面的图卷积公式,我们就可以得到论文SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS(链接)的公式:
gθ∗x=UgθUTx=Ugθ′(Λ)UTxg_{\theta}*x=Ug_{\theta}U^{T}x=Ug_{\theta'}(\Lambda)U^{T}x gθ∗x=UgθUTx=Ugθ′(Λ)UTx
可以看到这个卷积计算的复杂度非常高,涉及到求Laplacian矩阵的特征向量,和大量的矩阵计算。下面我们考虑对filter函数做近似,目标是省去特征向量的求解:
gθ′(Λ)≈∑k=0Kθk′Tk(Λ~)g_{\theta'}(\Lambda)\approx\sum_{k=0}^{K}\theta_{k}'T_{k}(\tilde{\Lambda}) gθ′(Λ)≈k=0∑Kθk′Tk(Λ~)
其中TkT_{k}Tk是Chebyshev多项式。这里可以把简单gθ(Λ)g_{\theta}(\Lambda)gθ(Λ)简单看成是Λ\LambdaΛ的多项式。
因为:
UΛkUT=(UΛUT)k=LkU\Lambda^{k}U^{T}=(U\Lambda U^{T})^{k}=L^{k} UΛkUT=(UΛUT)k=Lk
所以上面filter函数可以写成LLL的函数:
gθ′(Λ)≈∑k=0Kθk′Tk(L~)g_{\theta'}(\Lambda) \approx \sum_{k=0}^{K}\theta_{k}'T_{k}(\tilde{L}) gθ′(Λ)≈k=0∑Kθk′Tk(L~)
设定K=1K=1K=1,卷积公式可以简化为:
gθ′∗x≈θ(IN+L)x=θ(IN+D−1/2AD−1/2)x\begin{aligned} g_{\theta'}*x & \approx \theta(I_{N}+L)x \\ & = \theta (I_{N}+D^{-1/2}AD^{-1/2})x \end{aligned} gθ′∗x≈θ(IN+L)x=θ(IN+D−1/2AD−1/2)x
令A~=A+IN\tilde{A}=A+I_{N}A~=A+IN,D~ii=∑jA~ij\tilde{D}_{ii}=\sum_{j}\tilde{A}_{ij}D~ii=∑jA~ij可以得到:
gθ′∗x=θ(D~−1/2A~D~−1/2)xg_{\theta'}*x=\theta(\tilde{D}^{-1/2}\tilde{A}\tilde{D}^{-1/2})x gθ′∗x=θ(D~−1/2A~D~−1/2)x
那么再加上激活层,我们就可以得到最终的GCN公式:
Hl+1=σ(D~−1/2A~D~−1/2H(l)W(l))H^{l+1}=\sigma(\tilde{D}^{-1/2}\tilde{A}\tilde{D}^{-1/2}H^{(l)}W^{(l)}) Hl+1=σ(D~−1/2A~D~−1/2H(l)W(l))
以上。
图卷积网络(GCN)简单理解相关推荐
- 图卷积网络 GCN Graph Convolutional Network(谱域GCN)的理解和详细推导
文章目录 1. 为什么会出现图卷积神经网络? 2. 图卷积网络的两种理解方式 2.1 vertex domain(spatial domain):顶点域(空间域) 2.2 spectral domai ...
- 图神经网络之图卷积网络——GCN
图卷积网络--GCN 一.前置基础知识回顾 图的基本概念 构造图神经网络的目的 训练方式 二.回顾卷积神经网络在图像及文本上的发展 图像上的卷积网络 文本上的卷积网络 图卷积网络的必要性 三.图卷积网 ...
- 一文读懂简化的图卷积网络GCN(SGC)| ICML 2019
作者 | yyl424525 来源 | CSDN博客 文章目录 1 相关介绍 1.1 Simple Graph Convolution (SGC)提出的背景 1.2 SGC效果 2 Simple Gr ...
- 图卷积网络GCN(Graph Convolution Network)(一)研究背景和空域卷积
文章首发于个人站点: 图卷积网络GCN(Graph Convolution Network)(一)研究背景和空域图卷积 | 隐舍 公众号:[DreamHub] 由于文章篇幅较长,因此将其分解为三部分: ...
- 图卷积网络GCN的简单理解
GCN ( Graph Convolutional Networks ),图卷积网络 Hl+1=σ(D~−12A~D~−12Hlwl)(1)H^{l+1}=\sigma\left(\widetilde ...
- 图卷积网络GCN简介
翻译自GRAPH CONVOLUTIONAL NETWORKS, THOMAS KIPF, 30 SEPTEMBER 2016,原文作者是semi-Supervised Classification ...
- 解读:CVPR1903_图卷积网络GCN无监督人脸聚类
Linkage Based Face Clustering via Graph Convolution Network https://arxiv.org/pdf/1903.11306.pdf 1简述 ...
- 图卷积网络GCN数学原理
Math of GCN 参考视频 目录 Math of GCN 1 Basic of GCN 2 Spectral Graph Theory 2.1 Properties of matrixes re ...
- GCN图卷积网络 | 介绍
目录 0 前言 1 基于空间域的GCN[2] 2 基于谱域的GCN 2.1拉普拉斯矩阵 2.2为什么GCN要用拉普拉斯矩阵? 2.3 拉普拉斯矩阵的谱分解(特征分解) 2.4卷积的定义 2.5傅里叶变 ...
最新文章
- 【并发编程】Future模式及JDK中的实现
- python中try except处理程序异常的三种常用方法
- Android中的Parcelable接口和Serializable用法和区别
- sun服务器清理内存日志_sun服务器系统日志
- linux安装mysql 5.6_linux 安装mysql5.6
- nginx配置 vue打包后的项目 解决刷新页面404问题|nginx配置多端访问
- 看了5种分布式事务方案,最终选择了Seata,真香!
- 2-27 最短路径《啊哈算法》2-28完成四种算法
- python 列表推导_Python 列表推导式使用的注意事项
- php1108脱机使用,电脑打印机脱机怎么重新连接
- javascript 替换
- Matlab fspecial滤波函数
- 揭秘3D游戏模型贴图师
- 黑程序员黑的最好的段子是什么?
- HC05蓝牙模块(主从一体)简单使用
- Amazon SPAPI PII权限申请问题汇总
- java跟python哪个好找工作-短期找工作,编程语言是学习Python还是Java好呢?
- 计算机微课论文参考文献,教学教师论文,关于新计算机技术在微课领域的应用相关参考文献资料-免费论文范文...
- 区块链-什么是闪电网络?
- 云安全和传统安全有什么区别?又有什么关系?