ML(12)-图卷积神经网络GCN-笔记


从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (二)(https://www.cnblogs.com/SivilTaram/p/graph_neural_network_2.html)
该文详细写明了设涉及的参考材料,是一个很棒的综述性材料。本文仅作为阅读该系列文章的笔记,详情请参考原文。
参考博文2:稍微简略一些,建议看完《漫谈图神经网络模型 (二)》再去看此文,最终讲到不需要做特征值分解的GCN,有点神奇。
https://blog.csdn.net/qq_41727666/article/details/84622965

此前的图神经网络是基于循环结构,此篇主要介绍基于图卷积神经网络中的卷积操作。

1.卷积是什么

卷积本身是一种数学算子,对两个函数f和g操作,生成第三个函数h。
h ( t ) = ∫ − ∞ ∞ f ( τ ) g ( t − τ ) d τ h(t)=\int_{-\infty}^{\infty}f(\tau)g(t-\tau)d\tau h(t)=f(τ)g(tτ)dτ

即:新函数在t处的值=f 和g 关于t对称处函数值成绩的和。简单(抽象)地说就是一个加权求和的过程。了解加权求和的核心之后,可以建模出图像上的卷积操作。每一层的卷积核就是一个权重可学习的权值函数 g ( ⋅ ) g(\cdot) g()

卷积核的权重可以依据任务确定:实现边缘提取laplacian算子、可依据损失函数学习特定特征提取的权重。

卷积操作的作用:通过结点和周围结点的信息,提取/聚合结点的特征。

小结:在机器学习领域,卷积的具体操作是加权求和,卷积的效果是特征聚合/提取。

2.图卷积的源起

图像卷积操作要求规整的数据结构,图上结点的邻居结点数量不固定。

衍生了两种特征聚合图结点的特征的操作:

  1. 把图转换成规整的结构–少数
  2. 处理变长邻居结点的卷积核–主流,主要焦点

图卷积又分为空域卷积和频域卷积:

  1. 空域卷积–卷积核直接在原图上卷积操作
  2. 频域卷积–图做了傅立叶变换之后再进行卷积操作

启发:一种最简单的无参卷积–将所有的邻居结点的隐藏状态加和,以更新当前结点的隐藏状态。

3.空域卷积

3.1消息传递网络MPNN

Massage Passing Neural Network–MPNN,空域卷积的形式化框架。他将空域卷积分解为两个过程:消息传递 M l ( ⋅ ) M_l(\cdot) Ml()和状态更新 U l ( ⋅ ) U_l(\cdot) Ul()
h v l + 1 = U l + 1 ( h v , ∑ u ∈ n e [ v ] M l + 1 ( h v l , h u l , x u v ) ) h_v^{l+1}=U_{l+1}(h_v, \sum_{u\in ne[v]}M_{l+1}(h^l_v,h_u^l,x_{uv})) hvl+1=Ul+1(hv,une[v]Ml+1(hvl,hul,xuv))
即本结点与邻居结点的信息通过 M l ( ⋅ ) M_l(\cdot) Ml()形成消息,将所有的消息类和后,然后通过状态更新函数 U l ( ⋅ ) U_l(\cdot) Ul()更新自己的隐状态。

GCN:每一层包含所有结点,每层的MU参数并不共享,层数由设计确定
GNN:按更新时间序列展开成,各层的MU参数共享,每一次更新所有的结点,按不动点理论,时间序列的长度不定。

MPNN主要缺陷:卷积操作针对整张图,所有结点都要进内存。大规模图上的全图卷积操作并不现实。

3.2 图采样与聚合GraphSage

采样部分结点进行学习,

  1. 每一层的消息传递和状态更新不涉及所有结点,随机采样若干个结点。
  2. 针对每个结点,随机选取固定数目的邻居结点,(1阶/2阶均可)
  3. 定义aggregate函数聚合邻居结点的信息
  4. 计算采样点处的损失

GraphSage状态更新公式:
h v l + 1 = σ ( W l + 1 ∗ a g g r e g a t e ( h v l , { h u l } ) , ∀ u ∈ n e [ v ] ) h_v^{l+1}=\sigma(W^{l+1}*aggregate(h_v^l,\{h_u^l\}),\forall u \in ne[v]) hvl+1=σ(Wl+1aggregate(hvl,{hul}),une[v])

GraphSage的设计重点在于aggregate函数的设计上。

4.频域卷积

(理解起来稍微有一点抽象)–利用傅立叶变换在图上的抽象来实现图上卷积操作。
傅立叶变换:将一个在空域上定义的函数分解成频域上的若干频率成分。
f ^ ( t ) = ∫ f ( x ) exp ⁡ − 2 π i x t d x \hat{f}(t)=\int f(x)\exp^{-2\pi ixt}dx f^(t)=f(x)exp2πixtdx

傅立叶变换恒等式:两个函数在空域上的卷积的效果,等于两函数在频域上的乘积。
( f ∗ g ) ( t ) = F − 1 [ F [ f ( t ) ] ⊙ F [ g ( t ) ] ] (f*g)(t)=F^{-1}[F[f(t)]\odot F[g(t)]] (fg)(t)=F1[F[f(t)]F[g(t)]]

所以:可以利用傅立叶变换,得到频域表示后,进行哈达玛乘积,再傅立叶逆变换回去,即可得到空域卷积的结果。

傅立叶变换的作用:

  1. 去规律的噪点
  2. 加速卷积操作(卷积核比较小时没啥加速效果)

利用傅立叶变换实现图上卷积的核心点:如何找到变换算子 exp ⁡ − 2 π i x t \exp^{-2\pi ixt} exp2πixt

依据变换算子是拉普拉斯算子的特征函数这一重要特性,找到图数据拉普拉斯变换算子–拉普拉斯矩阵对应的特征向量。

(频域卷积的前提条件-图是无向图。)
图拉普拉斯矩阵的特征值分解:
L = U Λ U T L=U\Lambda U^T L=UΛUT
U = ( u 1 , u 2 , . . . , u n ) U = (u_1, u_2, ... , u_n) U=(u1,u2,...,un)
Λ = d i a g ( λ 1 , λ 2 , . . . , λ n ) \Lambda = diag(\lambda_1, \lambda_2, ... , \lambda_n) Λ=diag(λ1,λ2,...,λn)

图结点数据傅立叶变换: ( ^ f ) ( t ) = ∑ n = 1 N f ( n ) u t ( n ) \hat(f)(t) = \sum_{n=1}^Nf(n)u_t(n) (^f)(t)=n=1Nf(n)ut(n) 这个叠加的n是个什么东西?N个结点的信息

整张图的傅立叶变换: f ^ = [ f ^ ( 1 ) . . . f ^ ( N ) ] = U T f \hat{f}= \left[ \begin{array}{ccc} \hat{f}(1)\\ ... \\ \hat{f}(N)\\ \end{array} \right]= U^Tf f^= f^(1)...f^(N) =UTf
用神经网络建模卷积核傅立叶变化后的函数,用 g θ g_\theta gθ表示,那么频域卷积可以表示为:
g θ ⊙ U T f g_\theta\odot U^Tf gθUTf

再通过傅立叶逆变换可以求得,最终图上的卷积。(逆变换算子为 exp ⁡ 2 π i x t \exp^{2\pi ixt} exp2πixt,类比图中的逆变换算子为U):
o = ( f ∗ g ) θ = U g θ U T f o=(f*g)_\theta=Ug_\theta U^Tf o=(fg)θ=UgθUTf

图上频域卷积的工作,都聚焦于 g θ g_\theta gθ的设计。频域卷积,隐状态更新涉及:

  1. l l l层隐状态 h l ∈ R N ∗ d l h^l\in R^{N*d_l} hlRNdl,每一行为该层一个结点的隐藏状态:
    h l = [ h 11 l h 12 l . . . h 1 d l l . . . h N 1 l h N 2 l . . . h N d l l ] h^l= \left[ \begin{array}{ccc} h^l_{11}&h^l_{12}&...&h^l_{1d_l}\\ ... \\ h^l_{N1}&h^l_{N2}&...&h^l_{Nd_l}\\ \end{array} \right] hl= h11l...hN1lh12lhN2l......h1dllhNdll
  2. 傅立叶变换算子 U T U^T UT,每一行是拉普拉斯矩阵的一个特征向量:
    U T = [ u 11 u 12 . . . u 1 N . . . u N 1 u N 2 . . . u N N ] U^T= \left[ \begin{array}{ccc} u_{11}&u_{12}&...&u_{1N}\\ ... \\ u_{N1}&u_{N2}&...&u_{NN}\\ \end{array} \right] UT= u11...uN1u12uN2......u1NuNN
  3. 卷积核频域形式 g θ : d l + 1 ∗ N g_\theta:d_{l+1}*N gθ:dl+1N,参数化呗,还就是一个权重呀(没说明白怎么作用的呀,后面再看看吧):
    g θ = [ θ 1 . . . 0 . . . . . . . . . 0 . . . θ N ] g_\theta= \left[ \begin{array}{ccc} \theta_1&...&0\\ ...&...&... \\ 0&...&\theta_N\\ \end{array} \right] gθ= θ1...0.........0...θN

频域卷积,隐状态更新公式,{:i}表示第i列, ( i = 1 , . . . , d l ) , ( j = 1 , . . . , d l + 1 ) (i=1,...,d_l),(j=1,...,d_{l+1}) (i=1,...,dl),(j=1,...,dl+1)
h : , j l + 1 = σ ( U ∑ i = 1 d L ) g θ U T h : , i l h^{l+1}_{:,j}=\sigma(U\sum_{i=1}^{d_L})g_\theta U^Th^l_{:,i} h:,jl+1=σ(Ui=1dL)gθUTh:,il

切比雪夫网络用来加速特征矩阵的求解。

5.图结构的序列化-Patch-SAN

Patch-SAN:将图转化成序列结构,然后利用卷积神经网络在序列化结构上作卷积。
Patch-SAN原文中主要涉及图分类任务。

图结构的特点:

  1. 同构
  2. 邻居结点的连接关系

图结构-》序列化结构要求
3. 同构图产生的序列应当是相似的
4. 保持邻居结点和目标结点的距离关系

Patch-SAN 通过三个规则来将图转化成一个长度为 w ∗ ( k + 1 ) w*(k+1) w(k+1)的序列,然后直接使用1D卷积对该序列进行操作。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值