/GCN_demo

A small GCN demo on Cora dataset

Primary LanguagePython

背景知识:

  • 拉普拉斯矩阵L = D-A(L = 度矩阵-邻接矩阵)

  • 图傅立叶变换

    • 由于L是实对称矩阵,它可以被正交对角化,$L=U \Lambda U^{T}$
    • $U=[u_1, u_2, .., u_N]$代表L的N个特征向量
    • $\hat{x}=U^{T} x$ ($x$是图信号,$\hat{x}$是傅立叶系数,即图信号再傅立叶基上的投影,衡量了图信号与傅立叶基之间的相似度)
    • $\Lambda = diag(\lambda_1, \lambda_2, ..., \lambda_N)$这些特征值等价于频率。特征值越低,频率越低,对应的傅立叶基就变化得越缓慢,相近节点上的信号趋于一致
    • 傅立叶系数等价于幅值,图信号在低频分量上的强度越大,该信号的平滑程度越高。
    • 所有的傅立叶系数合在一起称为该信号的频谱。图信号频谱上的任意一个傅立叶系数,都是对图信号的某种低频或者高频特征的定量描述,这种描述即考虑了图信号本身值的大小,也考虑了图的结构信息。
  • 逆图傅立叶变换

    • $x=U \hat{x}=\left[u_{1}, \ldots, u_{N}\right]\left[\hat{x}{1}, \ldots, \hat{x}{N}\right]^{T}$
  • 图滤波器

    • 定义:对给定图信号的频谱中各个频率分量的强度进行增强或者衰减的操作。$L=U \Lambda_h U^{T}, \Lambda_h = diag(h(\lambda_1), h(\lambda_2), ..., h(lambda_N))$
    • $\Lambda_h$是图滤波器H的频率响应矩阵,$h(\lambda)$被称为H的频率响应函数,不同的频率响应函数可以实现不同的效果,
    • 输出图信号为y,则$y=Hx$
    • 我们希望实现任意性质的图滤波器,也就是实现任意类型函数曲线的频率响应函数
  • 图卷积神经网络

    • 给定两组G上的图信号$x_1, x_2$, 其图卷积运算定义如下:
      • $x_1*x_2=IGFT(GFT(x_1)\circ GFT(x_2))$,$\circ$表示哈达玛积,对应位置元素相乘。
      • $x_1*x_2=U((U^Tx_1)\circ(U^Tx_2))=U(\hat{x_1}\circ(U^Tx_2))=U(diag(\hat{x_1})U^T)x_2=H_{\hat{x_1}}x_2$
      • 两组图信号的图卷积运算总能转化为对应形式的滤波运算,从这个层面来看,图卷积等价于图滤波。
    • 设计固定的图滤波器
      • 为了加强网络的拟合能力,作者设计了一个参数化的权重矩阵W对输入的图信号矩阵进行仿射变换:$X^`=\sigma(\hat{L}_{sym}XW)$,这就是卷积层
      • $\hat{L}_{sym}X$等价于对邻居节点的特征向量进行聚合操作。
      • GCN层是由对频率响应函数对线性近似推导得来的,堆叠多层GCN,在某种程度上,可以达到高阶多项式形式的频率响应函数的滤波能力/

References