图神经网络笔记(二)——卷积图神经网络概述
文章目录
- 基于谱分解的方法
- Spectral Network
- ChebNet
- GCN
- AGCN(Adaptive GCN)
- 基于空间结构的方法
- Neural FP
- PATCHY-SAN
- DGCN
- LGCN
- GraphSAGE
- 卷积图神经网络主要分为两类:
- 1)基于谱分解的方法;
- 2)基于空间结构的方法;
基于谱分解的方法
- 四种经典模型:Spectral Network, ChebNet, GCN, AGCN
Spectral Network
- Joan Bruna等人14年提出,通过计算图的拉普拉斯矩阵的特征分解,在傅里叶域中定义卷积运算。该运算可以定义为信号xxx与一个卷积核gθg_{\theta}gθ的乘积:
- gθ★x=Ugθ(Λ)UTxg_{\theta}\bigstar x = Ug_{\theta}(\Lambda )U^{T}xgθ★x=Ugθ(Λ)UTx
- UUU是归一化拉普拉斯矩阵的特征向量组成的矩阵,即L=IN−D12AD−12=UΛUTL=I_{N}-D^{\frac{1}{2}}AD^{- \frac{1}{2}}=U\Lambda U^{T}L=IN−D21AD−21=UΛUT。
- DDD表示图的度矩阵,AAA表示邻接矩阵,Λ\LambdaΛ表示特征值的对角矩阵。
ChebNet
11年David Hammond等人提出用切比雪夫多项式的前K阶Tk(x)T_{k}(x)Tk(x)逼近gθ(Λ)g_{\theta}(\Lambda)gθ(Λ):
- gθ★x≈∑k=0KθkTk(L~)xg_{\theta}\bigstar x \approx \sum_{k=0}^{K}\theta_{k}T_{k}(\tilde{L})xgθ★x≈∑k=0KθkTk(L~)x
- 切比雪夫多项式:Tk(x)=2xTk−1(x)−Tk−2(x)T_{k}(x)=2xT_{k-1}(x)-T_{k-2}(x)Tk(x)=2xTk−1(x)−Tk−2(x),其中T0(x)=1,T1(x)=xT_{0}(x)=1, T_{1}(x)=xT0(x)=1,T1(x)=x
- L~=2λmaxL−IN\tilde{L}=\frac{2}{\lambda_{max}}L-I_{N}L~=λmax2L−IN,λmax\lambda_{max}λmax是LLL的最大特征值,θ\thetaθ是切比雪夫多项式系数组成的向量。
16年Michael Defferrard等人用上述的K跳卷积定义图上的卷积,提出ChebNet,省去了计算拉普拉斯矩阵特征向量的过程。
GCN
17年,Thomas Kipf和Max Welling在ChebNet的基础上将层级运算的K限制为1,以此缓解模型在节点的度分布范围较大的图上存在的局部结构过拟合的问题。不仅如此, 假定λmax≈2\lambda_{max}\approx 2λmax≈2,公式可简化为:
- gθ′★x≈θ0′x+θ1′(L−IN)x=θ0′x−θ1′D−12AD−12xg_{\theta^{'}}\bigstar x \approx \theta_{0}^{'}x+\theta_{1}^{'}(L-I_{N})x=\theta_{0}^{'}x-\theta_{1}^{'}D^{-\frac{1}{2}}AD^{-\frac{1}{2}}xgθ′★x≈θ0′x+θ1′(L−IN)x=θ0′x−θ1′D−21AD−21x
- 其中θ0′\theta_{0}^{'}θ0′,θ1′\theta_{1}^{'}θ1′可调节,将其限制为θ=θ0′=−θ1′\theta=\theta_{0}^{'}=-\theta_{1}^{'}θ=θ0′=−θ1′,公式最终简化为:gθ★x≈θ(IN+D−12AD−12)xg_{\theta} \bigstar x \approx \theta(I_{N}+D^{-\frac{1}{2}}AD^{-\frac{1}{2}})xgθ★x≈θ(IN+D−21AD−21)x
若使用上述方法在节点上迭代执行,运算可能会导致数值的不稳定以及梯度消失或爆炸问题。因此,Renormalization(重归一化)被引入。
- IN+D−12AD−12→D~−12A~D~−12I_{N}+D^{-\frac{1}{2}}AD^{-\frac{1}{2}}\rightarrow \tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}IN+D−21AD−21→D~−21A~D~−21
- A~=A+IN\tilde{A}=A+I_{N}A~=A+IN,D~ii=∑jA~jj\tilde{D}_{ii}=\sum_{j}\tilde{A}_{jj}D~ii=∑jA~jj
- Z=D~−12A~D~−12XΘZ=\tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}X\ThetaZ=D~−21A~D~−21XΘ
AGCN(Adaptive GCN)
为学习不同节点之间可能存在的隐式关系,AGCN被提出。AGCN可以学习“残差”图拉普拉斯矩阵LresL_{res}Lres并将其添加到原始的拉普拉斯矩阵中:L^=L+αLres\hat{L}=L+\alpha L_{res}L^=L+αLres
- Lres=I−D^−12A^D^−12L_{res}=I-\hat{D}^{-\frac{1}{2}}\hat{A}\hat{D}^{-\frac{1}{2}}Lres=I−D^−21A^D^−21
- D^=degree(A^)\hat{D}=degree(\hat{A})D^=degree(A^),A^\hat{A}A^是通过一个学习获得的度量指标计算得到的。
AGCN使用广义的Mahalanobis distance(马哈诺比斯距离)计算节点距离:
- D(xi,xj=(xi−xj)TM(xi−xj))D(x_{i}, x_{j}=\sqrt{(x_{i}-x_{j})^{T}M(x_{i}-x_{j})})D(xi,xj=(xi−xj)TM(xi−xj))
- M=WdWdTM=W_{d}W_{d}^{T}M=WdWdT,是一个学习得到的矩阵。WdW_{d}Wd是自适应空间的转换基础。
AGCN计算高斯核并将其归一化,以获得密集邻接矩阵A^\hat{A}A^:
- Gxi,xj=exp(−D(xi,xj/(2σ2))G_{x_{i},x_{j}}=exp(-D(x_{i},x_{j}/(2\sigma^{2}))Gxi,xj=exp(−D(xi,xj/(2σ2))
基于空间结构的方法
- 谱方法的卷积核都依赖于拉普拉斯矩阵的特征基向量,而后者取决于图的结构。这意味着针对特定结构训练的模型不能直接用于具有不同结构的图,即模型泛化性较差。基于空间结构的方法则直接在图上定义卷积运算,从而针对在空间上相邻的邻域进行运算。这种方法的主要挑战是针对大小不同的邻域卷积运算并保持CNN的局部不变性。
Neural FP
David Duvenaud等人15年提出针对具有不同度的节点使用不同的权重矩阵:
- x=hvt−1+∑i=1∣Nv∣hit−1x=h_{v}^{t-1}+\sum_{i=1}^{|N_{v}|}h_{i}^{t-1}x=hvt−1+∑i=1∣Nv∣hit−1
- hvt=σ(xWt∣Nv∣)h_{v}^{t}=\sigma(xW_{t}^{|N_{v}|})hvt=σ(xWt∣Nv∣)
- Wt∣Nv∣W_{t}^{|N_{v}|}Wt∣Nv∣是第ttt层、度为∣Nv∣|N_{v}|∣Nv∣的节点的权重矩阵,NvN_{v}Nv表示节点vvv的相邻节点集合,hvth_{v}^{t}hvt是节点vvv在第ttt层的嵌入表示。
Neural FP首先将相邻节点连同本身的嵌入表示累加,然后使用权重矩阵进行转换。但在节点具有多种度的大规模图上,会由于参数量太大而难以应用。
PATCHY-SAN
- 该模型首先为每个节点选择k个相邻节点并归一化,然后将这些经过归一化的相邻节点作为感受野进行卷积。主要步骤如下:
- 选择节点序列 模型并不会处理途中所有的节点,而会先通过节点标注来获得节点的顺序,然后使用s大小的步长在序列中选择节点,直到选中w个节点为止。
- 选择相邻节点 对选中的每一个节点进行宽度优先搜索,以选取k个相邻节点。首先选取1跳的相邻节点,然后再考虑更远的节点,直到选取的相邻节点数达到k为止。
- 图归一化 为感受野中的节点排序,以便从无序的图空间映射到矢量空间。为不同的图中的两个具有相似结构地位的节点分配相似的相对位置。
- 应用卷积架构 在归一化后,使用CNN进行卷积。
DGCN
- 模型使用两个卷积网络来捕获图的局部一致性和全局一致性,并采用无监督损失函数来聚合两部分。
- 第一部分对局部一致性建模(相邻的节点可能有相似的标签):Z=D~−12A~D~−12XΘZ=\tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}X\ThetaZ=D~−21A~D~−21XΘ
- 第二部分对全局一致性建模(具有相似上下文的节点可能具有相似的标签):使用positive pointwise mutual information matrix(PPMI)正向点互信息矩阵替换邻接矩阵。H′=σ(Dp−12XpDp−12HΘ)H^{'}=\sigma(D_{p}^{-\frac{1}{2}}X_{p}D_{p}^{-\frac{1}{2}}H\Theta)H′=σ(Dp−21XpDp−21HΘ)。XpX_{p}Xp表示PPMI矩阵,DpD_{p}Dp是XpX_{p}Xp的对角度矩阵,σ\sigmaσ是非线性激活函数。
- 损失函数聚合两个卷积结果:L=L0(ConvA)+λ(t)Lreg(ConvA,ConvP)L=L_{0}(Conv_{A})+\lambda(t)L_{reg}(Conv_{A},Conv_{P})L=L0(ConvA)+λ(t)Lreg(ConvA,ConvP)。其中,ConvAConv_{A}ConvA表局部一致性卷积,ConvPConv_{P}ConvP表全局一致性卷积。λ(t)\lambda(t)λ(t)是调节两部分损失的动态权重。
- L0(ConvA)L_{0}(Conv_{A})L0(ConvA)是结合节点标签的监督损失函数。假设有ccc类标签,那么ZAZ^{A}ZA是局部一致性卷积的输出矩阵,Z^A\hat{Z}^{A}Z^A是该输出矩阵经过softmax运算后的结果。yLy_{L}yL和YYY分别是训练数据下标和样本标签。
- L0(ConvA)=−1∣yL∣∑l∈yL∑i=1cYl,iln(Z^l,iA))L_{0}(Conv_{A})=-\frac{1}{|y_{L}|}\sum_{l\in y_{L}}\sum_{i=1}^{c}Y_{l,i}ln(\hat{Z}_{l,i}^{A}))L0(ConvA)=−∣yL∣1∑l∈yL∑i=1cYl,iln(Z^l,iA))
- Lreg(ConvA,ConvP)L_{reg}(Conv_{A},Conv_{P})Lreg(ConvA,ConvP)是衡量Z^P,Z^A\hat{Z}^{P}, \hat{Z}^{A}Z^P,Z^A之间差异的无监督损失函数。Z^P\hat{Z}^{P}Z^P是局部一致性卷积输出经过softmax的运算结果。
- Lreg(ConvA,ConvP)=1n∑i=1n∥Z^i,:P−Z^i,:A∥L_{reg}(Conv_{A},Conv_{P})=\frac{1}{n}\sum_{i=1}^{n}\left \| \hat{Z}_{i,:}^{P}-\hat{Z}_{i,:}^{A} \right \|Lreg(ConvA,ConvP)=n1∑i=1n∥∥∥Z^i,:P−Z^i,:A∥∥∥
LGCN
网络基于可学习得图卷积网络层(learnable graph convolutinal layer, LGCL)和子图训练策略。LGCL使用CNN作为聚合器,他对节点的邻域矩阵进行最大池化获取前k个特征元素,然后应用一维CNN计算隐表示。计算过程如下:
- H^t=g(Ht,A,k)\hat{H}_{t}=g(H_{t},A,k)H^t=g(Ht,A,k)
- Ht+1=c(H^t)H_{t+1}=c(\hat{H}_{t})Ht+1=c(H^t)
- AAA为邻接矩阵,g(⋅)g(\cdot)g(⋅)是对前k个节点的选取操作,c(⋅)c(\cdot)c(⋅)是常规的一维CNN。
模型使用对前k个节点的选取操作来收集每个节点的信息。对给定的节点,首先收集其相邻节点的特征。然后,选择每一维最大的k个节点值,也就是将没一列中的值排序并选择前k个值。之后将自身的节点嵌入表示插入到第一行得到矩阵,并用一维CNN来聚合特征。
GraphSAGE
- 一个通用的归纳推理框架,通过采样和聚合相邻节点的特征来生成节点的嵌入表示。传播过程为:
- hNvt=AGGREGATEt({hut−1,∀u∈Nv})h_{N_{v}}^{t}=AGGREGATE_{t}(\left \{ h_{u}^{t-1}, \forall u \in N_{v} \right \})hNvt=AGGREGATEt({hut−1,∀u∈Nv})
- hvt=σ(Wt⋅[hvt−1∣∣hNvt])h_{v}^{t}=\sigma(W^{t}\cdot [h_{v}^{t-1}||h_{N_{v}}^{t}])hvt=σ(Wt⋅[hvt−1∣∣hNvt])
- 不使用所有的相邻节点,而是均匀采样固定数量的相邻节点。Hamilton等人提出了以下三种聚合函数的具体实现:
- 均值聚合器:hvt=σ(W⋅MEAN({hvt−1}∪{hvt−1}))h_{v}^{t}=\sigma(W\cdot MEAN(\left \{ h_{v}^{t-1} \right \} \cup \left \{ h_{v}^{t-1} \right \}))hvt=σ(W⋅MEAN({hvt−1}∪{hvt−1}))
- LSTM聚合器:基于LSTM实现,具有更强的表达能力,但由于LSTM的输入是有序的,因此不同的排列会产生不同的结果。
- 池化聚合器:将相邻节点的隐状态输入一个全连接层并进行最大池化,hNvt=max({σ(Wpoolhut−1+b),∀u∈Nv})h_{N_{v}}^{t}=max(\left \{ \sigma (W_{pool}h_{u}^{t-1}+b), \forall u \in N_{v} \right \})hNvt=max({σ(Wpoolhut−1+b),∀u∈Nv})
注:笔记参考自书籍《图神经网络导论》,刘志远,周界,李泺秋。如有侵权,联系即删。
图神经网络笔记(二)——卷积图神经网络概述相关推荐
- 神经网络笔记1-三层BP神经网络
神经网络笔记1-三层BP神经网络 神经网络性质简介 信息正向传输 预期神经网络的获得 误差反向更新(输出层→隐藏层) 误差反向更新(隐藏层→输入层) 伪代码实现 训练函数 测试函数,用训练好的神经网络 ...
- 利用OpenCV和C++实现由RGB图像转化为灰度图,再将灰度图转化为二值图的程序
#include<opencv2\opencv.hpp> #include<opencv2/imgproc/imgproc.hpp> #include<opencv2\i ...
- 如何将三维图转化成二维图
下面以某一构件为例,讲解三维图转换二维图的步骤 1.先打开要转换的三维图,再点击新建,选择工程图,确定.选择图纸格式的时候你可以随便选,或者是取消 2.在左侧就出现了那个三维图形的名称,你可以双击这个 ...
- 运用SolidWorks三维图型转二维图时的三视图倾斜问题(三维图的基准面不正确)
用solidworks转二维工程图的二维图倾斜问题 问题简介 解决方法 问题简介 目前三维建模有很多软件,在不同软件之间可以通过把文件转换为中性文件(.igs,.stp等格式),实现不同软件之间的建模 ...
- 论文笔记——扩散卷积循环神经网络进行交通预测
这是在ICLR 2018学术会议上发表的文章,其研究课题为交通网络的时空预测. 1.交通网络预测的具体问题描述如下: 在给定交通路网中有N个传感器实时监控该点的交通状况:根据其拓扑关系交通网络可表为一 ...
- 浙江大学机器学习(胡浩基)学习笔记二:人工神经网络、深度学习
一.人工神经网络 1.1 概念 仿生学: 人工智能模拟的是人类大脑对世界的认识.研究大脑认知机理,总结大脑处理信息的方式是实现人工智能的先决条件. 数理学派: 在现在及可预见的未来,人类无法完全了解人 ...
- matlab在三维图侧面添加二维图
文章目录 1效果图 2 实现方法 3. 参考文献 1效果图 红色为月均值.蓝线代表每年的月序列,浅红色代表区间. 2 实现方法 主要命令通过plot3实现,在画侧面图的时候,仍采用plot3命令,但是 ...
- 神经网络学习(二)——自适应线性神经网络
自适应线性神经网络(Adaline)和感知器的区别: 1.自适应线性神经网络的激活函数不再采用步调函数,而是直接将样本运算的结果(点乘)与实际结果相比较.(白话版:自适应线性神经网络的激活函数,是一个 ...
- CS224W 图机器学习(二)--图上的传统机器学习方法
图上的传统机器学习方法 一. Tradtion Feature-based Methods Node 一. Tradtion Feature-based Methods Node 传统机器学习方法,我 ...
- 从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (二)
本文属于图神经网络的系列文章,文章目录如下: 从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (一) 从图(Graph)到图卷积(Graph Convolutio ...
最新文章
- Sphinx武林秘籍(上)
- 讲解sed用法入门帖子
- jquery如何获取checkbox,并判断是否选中
- 挑选合适自己的一门编程语言
- 索尼首次展示其Airpeak电影摄制无人机
- Backpropagation Algorithm 的梯度
- 单片机零基础入门(8-5)模块化编程
- 除了深度学习,机器翻译还需要啥?
- 倾斜摄影技术发展与应用前景
- java三国演义_《三国演义》歌曲精品全集
- win10计算机管理中没有本地用户和组怎么办?
- C++ 高效位运算函数 之 __builtin_
- 北京周边自行车骑行线路大全
- java.sql.SQLException: 无效的列类型: getLong not implemented for class oracle.jdbc.driver.T4CRowidAccessor
- 功利性地去多读书(一年300本书)
- 参数传递是什么?参数传递的是什么?
- 外网怎么访问内网_神卓互联搭建远程桌面和web应用(很详细)
- 用POWELL法求极小值:Rosenbrock函数
- 19.0 vue3 ref,reactive请求后的赋值问题以及解决方法
- 26岁转行软件测试,目前34了,分享一些我的经历和感受