本周学习情况
本周学习任务:
- 学习图神经网络相关内容
图基本知识(连通分量、度中心性、特征向量中心性、中介中心性、接近中心性、PageRank、HITS)并使用networkx包简单实践。
学习了相关数学知识(谱图理论和图的傅里叶变换),并进行了公式和性质的推导。
图卷积的数学推导利用了谱图理论和傅里叶变换。卷积核用的是切比雪夫多项式,通过将谱图卷积中的切比雪夫多项式的K设定为1,该模型复杂性是线性的。并利用了trick处理过拟合和减少操作的数量:
1. 限制参数的数量,共享参数 θ = θ0 = θ1 。
2. renormalization trick,将单位矩阵放入邻接矩阵和度矩阵中,以便防止使用在更深的神经网络模型中出现数值不稳定或者梯度爆炸/消失而且预测准确度是最好的。
- 在知乎学习了《万字长文带你入门 GCN》
CNN 之所以能成为图像领域的明珠却很少应用于其他领域原因是:「图片是一个规整的二维矩阵」,无论卷积核平移到图片中的哪个位置都可以保证其运算结果的一致性,这就是我们所说的「局部平移不变性」。CNN 的卷积本质就是利用这种平移不变性来对扫描的区域进行卷积操作,从而实现了图像特征的提取。由于图结构不存在平移不变性,所以 CNN 无法直接在图上进行卷积。
图信号处理(Graph Signal Processing,以下简称 GSP)用来处理那些定义在图上的非规则域的信号,这句话有点拗口,拆开说就是处理图上定义的信号,但信号所在域是非规则的。
以上便是一个简单的是图信号处理过程,其大致为:
测量点构成节点(图 a),节点间的连通性和相关性构成边;
节点和边构成图(图 b),该图是信号域,表示测量信号的点以及它们之间的关系,并使用该图进行分析和处理;
测量温度是图的信号(图 e),这里的信号由真实温度和测量噪声所组成;
考虑测量位置,我们提出了局部平均和加权平均,这是最简单的图信号处理方式(Linear fist-order)。
学习了文中提到的傅立叶变换 拉普拉斯谱分解的基本知识对于公式进行了简单的推导有些地方还没弄懂。
GCN 的入门文章就致思路为:CNN 中的卷积无法直接应用于网络图中,所以引出了图信号处理(Graph Signal Processing)中的 Graph Fourier Transformation,进而定义 Graph Convolution,最后结合深度学习发展出来 GCN。
- 学习了模型GCN、GAT、GraphSAGE。
GCN:
近似,是一个多层的图卷积神经网络,一个卷积层仅处理一阶邻域信息,通过叠加若干卷积层可以实现多阶邻域的信息传递。
A~ = A+IN:A是邻接矩阵,IN是单位阵。目的是节点i不仅可以看到邻居结点(行),也可以看到自己(邻接矩阵[i,i])。
D~是A~的度矩阵,D~ii = ∑ j A~ij。
H(l)是第i层的激活单元矩阵,H(0) = X。
W(l)是第i层的参数矩阵。
GCN的每一层通过邻接矩阵A~和特征矩阵H(l)相乘得到每个顶点邻居特征和本身节点的汇总,然后乘上参数矩阵W(l),再加上激活函数sigmoid做一次非线性变化得到聚合邻接顶点和本身结点特征的矩阵W(l+1) 。
对于A~进行归一化的操作是D~-1/2 A~ D~-1/2 。
通过反向传播可以学习到GCN的参数W。
GAT:
在GCN的前向传播中我们可以看出,由于GCN的用到了邻接矩阵,所以GCN的局限性是它不能快速识别新的节点或一张新的图。
GAT引入了注意力机制,就是节点i的所有邻居处理过程中会有一个权重,这样如果有新的节点来我们也可以快速处理这个局部的问题。
αij表示i节点与邻居节点的注意力系数,hi是节点i的所有邻居的加权和。
运用了多头注意力,对于一个节点做了多次注意力权重,最终concat起来,通过模型内部的集成,可以捕捉到更丰富的特征。
GraphSAGE:
跟GAN一样,需要一种可以直接泛化到未知节点的一种算法,需要归纳学习而不是直推式学习,GtaphSAGE就是一种归纳学习算法,通过训练聚合节点邻居的函数,对未知节点也可以起到泛化作用。
GtaphSAGE主要做了两件事情:1.采样 2.聚合
采样:为了降低计算复杂度,对邻居节点进行采样操作。如果邻居节点大于设定的采样数k,随机选取k个邻居节点;如果邻居节点小于等于设定的采样数k,先把所有邻居节点加入,然后在从所有邻居节点随机选取剩余的采样数。
聚合:对于选取的邻居节点,通过聚合函数对邻居节点进行聚合,聚合函数有Mean aggregaor 、LSTM aggregator 、Pooling aggregator。
Mean aggregaor 就是对所有邻居节点取均值。LSTM 本身是有顺序的,但是通过将输入节点随机排列,使得LSTM可以适用于无序的集合。Pooling aggregator是把所有邻居节点放入一个全连接层计算出Pooling后的结果,对所有邻居Pooling后的结果进行操作(max、mean)。
GCN、GAT、GraphSAGE应用:
GCN、GAT、GraphSAGE适用于节点的半监督学习。
GAT、GraphSAGE适用于推理学习任务。
下一阶段计划学习任务:
继续相关领域学习,对于从CNN到GCN中的一些公式推导还没弄懂,下阶段继续学习。