接触的第一篇GCN的内容,整理一些笔记。
原文链接: https://www.zhihu.com/question/54504471/answer/332657604
一、区别CNN
CNN仅针对Euclidean Structure,要求图像或者视频的像素点都排列成整齐的矩阵。
GCN可以扩充到Non Euclidean Structure(NES)中,社交、信息中的网络结构、拓扑结构。
二、Why GCN?
1、CNN在NES中无法保持平移不变性。拓扑结构中,节点并非整齐矩阵,邻居数可能不同。
2、NES结构中有效提取空间特征进行机器学习。
3、任何数据在赋范空间内都可建立拓扑关联,拓扑连接是一种广义数据结构。
三、提取空间特征两种方式
spatial domain空间域,spectral domain 光谱域。
1、spatial domain:把顶点的邻居都找出来。
两个问题:按什么条件找中心点的邻居;找到了不同数目的邻居后,怎么表示这些邻居的特征。
解决办法:参考Learning Convolutional Neural Networks for Graphs
存在缺陷:每个顶点的情况不一样,计算必须针对每一个顶点;提取特征效果没有卷积好。
2、spectral domain:借助图谱理论实现拓扑图的卷积操作。
研究进程:GSP(Graph signal processing)→Graph Fourier Transformation→ Graph Convolution→GCN
Spectral Graph Theory:借助于拉普拉斯矩阵的特征值和特征向量研究图的性质
四、What is 拉普拉斯矩阵?why 拉普拉斯矩阵?
Graph Fourier Transformation和Graph Convolution的定义都用到了拉普拉斯矩阵。以前好像学过,,,忘了……
1、拉普拉斯矩阵
图G=(V,E),拉普拉斯矩阵定义为L=D-A,D是顶点的度矩阵(对角阵),对角线上元素依次为各个顶点的度, A是图的邻接矩阵。
2、三种拉普拉斯矩阵
Combinatorial Laplacian:L=D-A
Symmetric normalized Laplacian: ,在GCN中使用较多
Random walk normalized Laplacian:
3、why GCN用到拉普拉斯矩阵?
L是对称阵,可进行特征分解(谱分解)。
L只在中心顶点和一阶相连的顶点(1-hop neighbor)上有非0元素,其余均为o
L算子和L矩阵进行类比。
五、L的特征分解(谱分解)
GCN的核心基于拉普拉斯矩阵的谱分解,矩阵的谱分解=特征分解=对角化,不是所有的矩阵都可以特征分解(充要条件为n阶方阵存在n个线性无关的特征向量)。L矩阵是半正定对称矩阵。
拉普拉斯矩阵其谱分解为:
其中 ,是列向量为单位特征向量的矩阵,也就说 是列向量。 是n个特征值构成的对角阵。
由于 是正交矩阵,即 ,转置=逆,所以特征分解又可以写成:
六、Graph上的傅里叶变换、卷积
把传统的傅里叶变换以及卷积迁移到Graph上来,核心工作其实就是把拉普拉斯算子的特征函数 变为Graph对应的拉普拉斯矩阵的特征向量。
1、传统的傅里叶变换定义为:,信号 与基函数 的积分,基函数 是拉普拉斯算子的特征函数(满足特征方程), 就和特征值有关。
广义的特征方程定义为:,其中 是一种变换, 是特征向量或者特征函数(无穷维的向量), 是特征值。 满足:, 就是变换 的特征函数, 和特征值密切相关。
是拉普拉斯矩阵, 是其特征向量,满足。
Graph上的傅里叶变换:,是Graph上的 维向量, 与Graph的顶点一一对应, 表示第 个特征向量的第 个分量。
特征值(频率) 下, 的Graph 傅里叶变换就是与 对应的特征向量 进行内积运算。
是复数空间中,也就是特征向量 的共轭
将Graph上的傅里叶变换改为矩阵乘法:
在Graph上傅里叶变换的矩阵形式为:
2、传统的傅里叶逆变换是对频率 求积分:
迁移到Graph上变为对特征值 求和:
将Graph上的傅里叶逆变换推广到矩阵形式:
即 在Graph上傅里叶逆变换的矩阵形式为:
3、卷积。函数卷积的傅里叶变换 函数傅里叶变换的乘积,例如函数 与 两者的卷积是二者傅立叶变换的乘积的逆变换:
类比到Graph上, 与卷积核 在Graph上的卷积:f和h的傅里叶变换→相乘→逆变换。
的傅里叶变换为 ,
卷积核 的傅里叶变换写成对角矩阵的形式即为: ,卷积核 在Graph上的傅里叶变换:。
两者的傅立叶变换乘积即为:
再乘以 求两者傅立叶变换乘积的逆变换,则求出卷积:
另一种写法:, 表示hadamard product(哈达马积),向量内积或者同维度矩阵的对应元素的乘积运算。
七、Deep Learning中的GCN
Deep learning 中的Convolution就是要设计含有trainable共享参数的kernel,在Graph中,卷积参数是。
第一代GCN:,是激活函数,是权重参数,
待优化。就是graph上对应于每个顶点的feature vector,从数据集中提取特征构成向量。
第二代GCN:换成了 ,卷积为,
推导公式,得到,
α是参数,待更新。