图卷积神经网络GCN---递归GCN代表作
Recurrent Graph Neural Networks
递归图神经网络(RecGNN)大多是图神经网络的开创性作品。 RecGNN旨在学习具有递归神经体系结构的节点表示。 他们假设图中的节点不断与其邻居交换信息/消息,直到达到稳定的平衡。 RecGNNs在概念上很重要,并启发了后来对卷积图神经网络的研究。 特别地,消息传递的思想被基于空间的卷积图神经网络所继承。[1]
1 A New Model for earning in raph Domains
[Marco Gori, 2005, 2] 最早提出了GCN的概念。
记nnn为图上一顶点,x⃗n\vec{x}_nxn是顶点nnn的状态(state),l⃗n\vec{l}_nln是顶点nnn的标签。相应的,x⃗ne[n],l⃗ne[n]\vec{x}_{\text{ne}[n]}, \vec{l}_{\text{ne}[n]}xne[n],lne[n]是是顶点nnn的邻居顶点的状态和标签。
transition function :
x⃗n=fw(l⃗n,x⃗ne[n],l⃗ne[n]),n∈N(1.1)\vec{x}_n = f_w \left( \vec{l}_n, \vec{x}_{\text{ne}[n]}, \vec{l}_{\text{ne}[n]} \right), \qquad n \in \mathcal{N} \tag{1.1} xn=fw(ln,xne[n],lne[n]),n∈N(1.1)output function :
o⃗n=gw(x⃗n,l⃗n),n∈N(1.2)\vec{o}_n = g_w \left( \vec{x}_n, \vec{l}_n \right), \qquad n \in \mathcal{N} \tag{1.2} on=gw(xn,ln),n∈N(1.2)
将式(1.1)替换成下式:
x⃗n=∑u∈Nhw(l⃗n,x⃗u,l⃗u),n∈N(1.3)\vec{x}_n = \sum_{u \in \mathcal{N}} h_w \left( \vec{l}_n, \vec{x}_u, \vec{l}_u \right), \qquad n \in \mathcal{N} \tag{1.3} xn=u∈N∑hw(ln,xu,lu),n∈N(1.3)
其中hwh_whw可以用显式线性函数或者神经网络。
Linear GNN:
hw(l⃗n,x⃗u,l⃗u)=An,ux⃗u+bnAn,u=μs⋅∣ne[u]∣⋅Resize(ϕw(l⃗n,l⃗u))b⃗n=ρw(l⃗n)ϕw:R2q×1→Rs2×1ρw:Rq→Rsμ∈(0,1)(1.4)\begin{aligned} h_w \left( \vec{l}_n, \vec{x}_u, \vec{l}_u \right) &= A_{n,u} \vec{x}_u + b_n \\ A_{n,u} &= \frac{\mu}{s \cdot |\text{ne}[u]|} \cdot Resize\left( \phi_w (\vec{l}_n, \vec{l}_u) \right) \\ \vec{b}_n &= \rho_w (\vec{l}_n)\\ \phi_w &: \reals^{2q \times 1} \rightarrow \reals^{s^2 \times 1} \\ \rho_w &: \reals^{q} \rightarrow \reals^{s} \\ \mu & \in (0, 1) \tag{1.4} \end{aligned} hw(ln,xu,lu)An,ubnϕwρwμ=An,uxu+bn=s⋅∣ne[u]∣μ⋅Resize(ϕw(ln,lu))=ρw(ln):R2q×1→Rs2×1:Rq→Rs∈(0,1)(1.4)Neural GNN:
hwh_whw使用神经网络。
2 The Graph Neural Network Model
[Franco Scarselli, 2009, 3] 与 [Marco Gori, 2005, 2]相比多了边上的信息l⃗co[n]\vec{l}_{\text{co}[n]}lco[n]。
x⃗n=fw(l⃗n,l⃗co[n],x⃗ne[n],l⃗ne[n])o⃗n=gw(x⃗n,l⃗n),n∈N(2.1)\begin{aligned} \vec{x}_n &= f_w \left( \vec{l}_n, \vec{l}_{\text{co}[n]}, \vec{x}_{\text{ne}[n]}, \vec{l}_{\text{ne}[n]} \right) \\ \vec{o}_n &= g_w \left( \vec{x}_n, \vec{l}_n \right), \qquad n \in \mathcal{N} \end{aligned} \tag{2.1} xnon=fw(ln,lco[n],xne[n],lne[n])=gw(xn,ln),n∈N(2.1)
相应的,
x⃗n=∑u∈Nhw(l⃗n,l⃗(n,u),x⃗u,l⃗u),n∈N(2.2)\vec{x}_n = \sum_{u \in \mathcal{N}} h_w \left( \vec{l}_n, \vec{l}_{(n,u)}, \vec{x}_u, \vec{l}_u \right), \qquad n \in \mathcal{N} \tag{2.2} xn=u∈N∑hw(ln,l(n,u),xu,lu),n∈N(2.2)
在训练上,先循环式(2.2)直到∥x⃗n(t)−x⃗n(t−1)∥≤ϵ\|\vec{x}_n(t) - \vec{x}_n(t-1)\| \leq \epsilon∥xn(t)−xn(t−1)∥≤ϵ,即达到稳定点,然后再经行BP反向传播,更新参数,接着继续循环式(2.2)。
3 Graph Echo State Networks
[Claudio Gallicchio, 2010, 4] 将transition function分成了:
local state transition function :
xt(v)=τ(u⃗(v),xt−1(N(v)))=f(Winu⃗(v),W^Nxt−1(N(v)))(3.1)\begin{aligned} x_t(v) &= \tau \left( \vec{u}(v), x_{t-1}\left( \mathcal{N}(v) \right)\right) \\ &= f \left( W_{\text{in}} \vec{u}(v), \hat{W}_{\mathcal{N}} x_{t-1}\left( \mathcal{N}(v) \right) \right) \end{aligned} \tag{3.1} xt(v)=τ(u(v),xt−1(N(v)))=f(Winu(v),W^Nxt−1(N(v)))(3.1)global state transition function :
xt(g)=τ^(g,xt−1(g))=(f(Winu⃗(v1)+W^v1xt−1(g))⋮f(Winu⃗(v∣V∣)+W^v∣V∣xt−1(g))).(3.2)\begin{aligned} x_t(g) &= \hat{\tau} \left( g, x_{t-1}(g) \right) \\ &= \begin{pmatrix} f \left( W_{\text{in}} \vec{u}(v_1) + \hat{W}_{v_1} x_{t-1}(g) \right) \\ \vdots \\ f \left( W_{\text{in}} \vec{u}(v_{|\mathcal{V}|}) + \hat{W}_{v_{|\mathcal{V}|}} x_{t-1}(g) \right) \end{pmatrix}. \end{aligned} \tag{3.2} xt(g)=τ^(g,xt−1(g))=⎝⎜⎜⎜⎛f(Winu(v1)+W^v1xt−1(g))⋮f(Winu(v∣V∣)+W^v∣V∣xt−1(g))⎠⎟⎟⎟⎞.(3.2)
output function根据任务不同选择的函数也不一样:
- structure-to-structure:
y⃗(v)=gout(x⃗(v))=Woutx⃗(v).(3.3)\vec{y}(v) = g_{\text{out}}(\vec{x}(v)) = W_{\text{out}} \vec{x}(v). \tag{3.3} y(v)=gout(x(v))=Woutx(v).(3.3)
- structure-to-element:
y⃗(v)=gout(1∣V∣∑v∈Vx⃗(v))=Wout(1∣V∣∑v∈Vx⃗(v)).(3.4)\vec{y}(v) = g_{\text{out}} \left( \frac{1}{|\mathcal{V}|} \sum_{v \in \mathcal{V}} \vec{x}(v) \right) = W_{\text{out}} \left( \frac{1}{|\mathcal{V}|} \sum_{v \in \mathcal{V}} \vec{x}(v) \right). \tag{3.4} y(v)=gout(∣V∣1v∈V∑x(v))=Wout(∣V∣1v∈V∑x(v)).(3.4)
4 Gated Graph Sequence Neural Networks
[Yujia Li, 2015, 5] 在[Franco Scarselli, 2009, 3]基础上,将l⃗co[n]\vec{l}_{\text{co}[n]}lco[n]分成出边和入边:
h⃗v(t)=f∗(l⃗v,l⃗co[v],l⃗ne[v],h⃗ne[v](t−1))=∑v′∈IN[v]f(l⃗v,l⃗(v′,v),l⃗v′,h⃗v′(t−1))+∑v′∈OUT[v]f(l⃗v,l⃗(v,v′),l⃗v′,h⃗v′(t−1))(4.1)\begin{aligned} \vec{h}_{v}^{(t)} &= f^{*}\left( \vec{l}_v, \vec{l}_{\text{co}[v]}, \vec{l}_{\text{ne}[v]}, \vec{h}_{\text{ne}[v]}^{(t-1)} \right) \\ &= \sum_{v^{'} \in \text{IN}[v]} f \left( \vec{l}_v, \vec{l}_{(v^{'}, v)}, \vec{l}_{v^{'}}, \vec{h}_{v^{'}}^{(t-1)} \right) +\sum_{v^{'} \in \text{OUT}[v]} f \left( \vec{l}_v, \vec{l}_{(v, v^{'})}, \vec{l}_{v^{'}}, \vec{h}_{v^{'}}^{(t-1)} \right) \end{aligned} \tag{4.1} hv(t)=f∗(lv,lco[v],lne[v],hne[v](t−1))=v′∈IN[v]∑f(lv,l(v′,v),lv′,hv′(t−1))+v′∈OUT[v]∑f(lv,l(v,v′),lv′,hv′(t−1))(4.1)
h⃗v\vec{h}_vhv使用GRU单元:
h⃗v(1)=[x⃗vT,0⃗]TA=[A(out),A(in)]a⃗v(t)=Av:T[h⃗1(t−1),⋯,h⃗∣V∣(t−1)]T+b⃗z⃗v(t)=σ(Wza⃗v(t)+Uzh⃗v(t−1))r⃗v(t)=σ(Wra⃗v(t)+Urh⃗v(t−1))h⃗v(t)~=tanh(Wa⃗v(t)+U(r⃗v(t)⊙h⃗v(t−1)))h⃗v(t)=(1−z⃗v(t))⊙h⃗v(t−1)+z⃗v(t)⊙h⃗v(t)~.(4.2)\begin{aligned} \vec{h}_v^{(1)} &= \left[\vec{x}_v^T, \vec{0} \right]^T \\ A &= \left[A^{\text{(out)}}, A^{\text{(in)}} \right] \\ \vec{a}_v^{(t)} &= A_{v:}^T\left [\vec{h}_{1}^{(t-1)}, \cdots, \vec{h}_{|\mathcal{V}|}^{(t-1)} \right]^T + \vec{b} \\ \vec{z}_v^{(t)} &= \sigma \left( W^{z} \vec{a}_v^{(t)} + U^{z} \vec{h}_v^{(t-1)} \right) \\ \vec{r}_v^{(t)} &= \sigma \left( W^{r} \vec{a}_v^{(t)} + U^{r} \vec{h}_v^{(t-1)} \right) \\ \widetilde{\vec{h}_v^{(t)}} &= \tanh \left( W \vec{a}_v^{(t)} + U \left( \vec{r}_v^{(t)} \odot \vec{h}_v^{(t-1)} \right) \right) \\ \vec{h}_v^{(t)} &= \left( 1 - \vec{z}_v^{(t)} \right) \odot \vec{h}_v^{(t-1)} + \vec{z}_v^{(t)} \odot \widetilde{\vec{h}_v^{(t)}}. \end{aligned} \tag{4.2} hv(1)Aav(t)zv(t)rv(t)hv(t)hv(t)=[xvT,0]T=[A(out),A(in)]=Av:T[h1(t−1),⋯,h∣V∣(t−1)]T+b=σ(Wzav(t)+Uzhv(t−1))=σ(Wrav(t)+Urhv(t−1))=tanh(Wav(t)+U(rv(t)⊙hv(t−1)))=(1−zv(t))⊙hv(t−1)+zv(t)⊙hv(t).(4.2)
output function :
h⃗G=tanh(∑v∈Vσ(i([h⃗v(T),x⃗v]))⊙tanhj([h⃗v(T),x⃗v]))\vec{h}_{\mathcal{G}} = \tanh \left( \sum_{v \in \mathcal{V}} \sigma \left( i\left( [\vec{h}_v^{(T)}, \vec{x}_v]\right) \right) \odot \tanh j\left( [\vec{h}_v^{(T)}, \vec{x}_v]\right) \right) hG=tanh(v∈V∑σ(i([hv(T),xv]))⊙tanhj([hv(T),xv]))
其中i(.),j(.)i(.),j(.)i(.),j(.)都是神经网络,以[h⃗v(T),x⃗v][\vec{h}_v^{(T)}, \vec{x}_v][hv(T),xv]做输入。
输出序列o⃗(1),⋯,o⃗(K)\vec{o}^{(1)}, \cdots, \vec{o}^{(K)}o(1),⋯,o(K),对于第kkk个输出,记X(k)=[x⃗1(k),⋯,x⃗∣V∣(k)]∈R∣V∣×LV\mathcal{X}^{(k)} = \left[ \vec{x}_{1}^{(k)}, \cdots, \vec{x}_{|\mathcal{V}|}^{(k)} \right] \in \reals^{|\mathcal{V}| \times L_{\mathcal{V}}}X(k)=[x1(k),⋯,x∣V∣(k)]∈R∣V∣×LV,在第ttt步为H(k,t)=[h⃗1(k,t),⋯,h⃗∣V∣(k,t)]∈R∣V∣×D\mathcal{H}^{(k,t)} = \left[ \vec{h}_{1}^{(k,t)}, \cdots, \vec{h}_{|\mathcal{V}|}^{(k,t)} \right] \in \reals^{|\mathcal{V}| \times D }H(k,t)=[h1(k,t),⋯,h∣V∣(k,t)]∈R∣V∣×D。结构如下图:
在使用H(k,T)\mathcal{H}^{(k,T)}H(k,T)预测Xk+1)\mathcal{X}^{k+1)}Xk+1)时,我们向模型当中引入了节点标注。每个节点的预测都是相互独立的,使用神经网络j([h⃗v(k,T),x⃗v(k)])j\left( [\vec{h}_v^{(k,T)}, \vec{x}_v^{(k)}]\right)j([hv(k,T),xv(k)])来完成:
x⃗v(k+1)=σ(j([h⃗v(k,T),x⃗v(k)]))\vec{x}_v^{(k+1)} = \sigma \left( j\left( [\vec{h}_v^{(k,T)}, \vec{x}_v^{(k)}]\right) \right) xv(k+1)=σ(j([hv(k,T),xv(k)]))
训练上也与[Franco Scarselli, 2009, 3]不同,而是采用随时间步逐步BP。
5 Learning Steady-States of Iterative Algorithms over Graphs
[Hanjun Dai, 2018, 6] 同样是采用了不动点的原理,中间迭代过程为:
h⃗v(0)←constant,∀v∈Vh⃗v(t+1)←T({h⃗u(t)}u∈N(v)),∀t≥1.(5.1)\begin{aligned} \vec{h}_v^{(0)} &\leftarrow \text{constant} , &\forall v \in \mathcal{V} \\ \vec{h}_v^{(t+1)} &\leftarrow \mathcal{T} \left( \{ \vec{h}_u^{(t)} \}_{u \in \mathcal{N}(v) } \right), &\forall t \geq 1. \end{aligned} \tag{5.1} hv(0)hv(t+1)←constant,←T({hu(t)}u∈N(v)),∀v∈V∀t≥1.(5.1)
稳定状态为:
h⃗v∗=T({h⃗u∗}u∈N(v)),∀v∈V.(5.2)\vec{h}_v^{*} = \mathcal{T} \left( \{ \vec{h}_u^{*} \}_{u \in \mathcal{N}(v) } \right), \quad \forall v \in \mathcal{V}. \tag{5.2} hv∗=T({hu∗}u∈N(v)),∀v∈V.(5.2)
式(5.1)的T\mathcal{T}T其实就是transition function。
transition function :
TΘ[{hu^}u∈N(v)]=W1σ(W2[x⃗v,∑u∈N(v)[h^u,x⃗u]]).(5.3)\mathcal{T}_{\Theta} \left[ \{ \widehat{ h_u } \}_{u \in \mathcal{N}(v) } \right] = W_1 \sigma \left( W_2 \left[ \vec{x}_v, \sum_{u \in \mathcal{N}(v)} \left[ \widehat{h}_u , \vec{x}_u \right] \right] \right). \tag{5.3} TΘ[{hu}u∈N(v)]=W1σ⎝⎛W2⎣⎡xv,u∈N(v)∑[hu,xu]⎦⎤⎠⎞.(5.3)output function :
g(h^v)=σ(V2TReLU(V1Th^v)).(5.4)g(\widehat{h}_v) = \sigma \left( V_2^T \text{ReLU} \left( V_1^T \widehat{h}_v \right) \right). \tag{5.4} g(hv)=σ(V2TReLU(V1Thv)).(5.4)
在训练过程中,使用了采样的操作,取V~={v1,⋯,vN}∈V\widetilde{\mathcal{V}} = \{ v_1, \cdots, v_N \} \in \mathcal{V}V={v1,⋯,vN}∈V,则h^vi\hat{h}_{v_i}h^vi的更新过程为:
h^vi←(1−α)h^vi+αTΘ[{hu^}u∈N(v)],∀vi∈V~.(5.5)\hat{h}_{v_i} \leftarrow (1 - \alpha)\hat{h}_{v_i} + \alpha \mathcal{T}_{\Theta} \left[ \{ \widehat{ h_u } \}_{u \in \mathcal{N}(v) } \right], \quad \forall v_i \in \widetilde{\mathcal{V}}. \tag{5.5} h^vi←(1−α)h^vi+αTΘ[{hu}u∈N(v)],∀vi∈V.(5.5)
参考文献
- 1 Wu Z, Pan S, Chen F, et al. A Comprehensive Survey on Graph Neural Networks.[J]. arXiv: Learning, 2019.
- 2 M. Gori, G. Monfardini and F. Scarselli, “A new model for learning in graph domains,” Proceedings. 2005 IEEE International Joint Conference on Neural Networks, 2005., Montreal, Que., 2005, pp. 729-734 vol. 2.
- 3 Scarselli F, Gori M, Tsoi A C, et al. The Graph Neural Network Model[J]. IEEE Transactions on Neural Networks, 2009, 20(1): 61-80.
- 4 Gallicchio C, Micheli A. Graph Echo State Networks[C]. international joint conference on neural network, 2010: 1-8.
- 5 Li Y, Tarlow D, Brockschmidt M, et al. Gated Graph Sequence Neural Networks[J]. arXiv: Learning, 2016.
- 6 Dai H, Kozareva Z, Dai B, et al. Learning Steady-States of Iterative Algorithms over Graphs[C]. international conference on machine learning, 2018: 1106-1114.
图卷积神经网络GCN---递归GCN代表作相关推荐
- GCN—图卷积神经网络理解
文章目录 一.CNN卷积 二.GCN 图卷积神经网络 2.1 GCN优点 2.3 提取拓扑图空间特征的两种方式 三.拉普拉斯矩阵 3.1 拉普拉斯矩阵的谱分解(特征分解) 3.2 傅里叶变换.卷积类比 ...
- tensorflow lstm 预测_图卷积神经网络GCN与递归结构RNN相结合的时间序列预测
时间序列预测任务可以按照不同的方法执行.最经典的是基于统计和自回归的方法.更准确的是基于增强和集成的算法,我们必须使用滚动周期生成大量有用的手工特性.另一方面,我们可以使用在开发过程中提供更多自由的神 ...
- 深度学习:GCN(图卷积神经网络)理论学习总结
目录 来源 作用 原理 解释 核心 两种理解 空间域的缺点 图的概念 学习新特征 目标 提出 步骤 图卷积 分类 特点 常见问题 缺点 改进 残差结构与扩张卷积 图注意力网络GAT 邻接矩阵的探索 A ...
- DeepLearning | 图卷积神经网络(GCN)解析(论文、算法、代码)
本篇博客主要讲述三种图卷积网络(Graph Convolutional Network, GCN)的算法原理及python实现,全文阅读时间约10分钟. 博主关于图神经网络的文章 DeepLearni ...
- GCN图卷积神经网络综述
文章目录 一.GNN简史 二.GCN的常用方法及分类 2.1 基于频域的方法 2.2 基于空间域的方法 2.3 图池化模块 三. GCN常用的基准数据集 四.GCN的主要应用 4.1 计算机视觉 4. ...
- 图卷积神经网络(GCN)入门
GCN是从CNN来的 CNN成功在欧式数据上:图像,文本,音频,视频 图像分类,对象检测,机器翻译 CNN基本能力:能学到一些局部的.稳定的结构,通过局部化的卷积核,再通过层级堆叠,将这些局部的结构变 ...
- 举个例子,如何用GCN图卷积神经网络实现摔倒监测?
作者 | 李秋键 责编 | 寇雪芹 头图 | 下载于视觉中国 引言 近几年来深度学习的发展越来越火热,其中最为典型的就是半监督学习的新研究进展GCN.由Kipf和Welling提出的GCN被证明是一种 ...
- Chemistry.AI | 基于图卷积神经网络(GCN)预测分子性质
GCN: Graph Convolutional Network(图卷积网络) 环境准备 Python版本:Python 3.6.8 PyTorch版本:PyTorch1.1.0 RDKit版本:RD ...
- 图卷积神经网络(GCN)理解与tensorflow2.0代码实现
图(Graph),一般用 G=(V,E)G=(V,E)G=(V,E) 表示,这里的VVV是图中节点的集合,EEE 为边的集合,节点的个数用NNN表示.在一个图中,有三个比较重要的矩阵: 特征矩阵XXX ...
最新文章
- android调用web接口,Android调用webservice 接口
- 关闭子页面刷新父页面,不需要弹出确认窗口
- java设计模式--观察者模式(Observer)
- LeetCode算法入门- Longest Valid Parentheses -day12
- 【华为云技术分享】如何度量前端项目研发效率与质量(上)
- nested exception is java.io.FileNotFoundException: class path resource [spring/spring-datasource-mog
- 技嘉服务器主板是什么型号,技嘉主板小型号字母代表什么意思?
- 《少有人走的路-心智成熟的旅程》读书分享
- ept技术_EPT与VPID
- 用python实现相声、评书自动下载(四)
- Python:python镜像源汇总及使用
- 【python】之pymysql模块,操作mysql数据库!
- cocosCreator日历插件
- 吴思里:PCG腾讯文档前端面试经历
- 少年歌行游戏一直显示连接服务器,少年歌行出现第三方登陆失败怎么办 解决方案一览...
- iOS微信第三方登录
- 单片机自定义延时函数Delay取值详解
- 如何在不泄露私人信息的情况下共享屏幕
- windows10映射网络驱动器教程、步骤(出现网络错误、浏览不能选择的解决办法)
- zabbix自定义监控项-统计AP在线、离线数量(AC:H3C WX5540H)