图神经网络的计算过程


因为需要研究基于图网络的漏洞检测的可解释性需要熟悉图神经网络,故需要总结以下常见的图网络的前向传播过程。

1.GCN

GCN目前看到的基于结点分类的示例比较多,不过对图分类的还没见过,欢迎大佬补充。

GCN的输入为

  • 图的邻接矩阵 A ∈ R n × n A \in R^{ n \times n} ARn×n
  • 图的结点特征矩阵 X ∈ R n × d X \in R^{n \times d} XRn×d

其中,图 G = ( V , E ) G = (V,E) G=(V,E) 中,结点数量 ∣ V ∣ = n |V| = n V=n, 结点特征向量维度为 d d d

计算过程:
关于图卷积过程有好多版本,这里列举其中之一。

层间传播过程如下:
H l + 1 = σ ( D − 1 2 . A ~ . D − 1 2 . H l . W l ) H^{l + 1} = \sigma(D^{-\frac{1}{2}}.\widetilde{A}.D^{-\frac{1}{2}}.H^l.W^l) Hl+1=σ(D21.A .D21.Hl.Wl)

  • A ~ = A + I ∈ R n × n \widetilde{A} = A + I \in R^{n \times n} A =A+IRn×n, I I I 为单位矩阵
  • D ∈ R n × n D \in R^{n \times n} DRn×n 为图的度矩阵
  • H ∈ R n × d H \in R^{n \times d} HRn×d 为图的隐层向量,其中 H 0 = X H^0 = X H0=X
  • W l ∈ R d × d W^l \in R^{d \times d} WlRd×d 为GCN的参数
  • σ \sigma σ 为激活函数,比如 s i g m o i d , R e l u sigmoid, Relu sigmoid,Relu

结点分类结果计算为
Z = s o f t m a x ( H L . W ) Z = softmax(H^L.W) Z=softmax(HL.W)

  • W ∈ R d × c W \in R^{d \times c} WRd×c 为最终全连接分类层
  • Z ∈ R n × c Z \in R^{n \times c} ZRn×c n n n 个结点在 c c c 个类别上的概率分布
  • L L L 为GCN的网络层数

2.Gated Graph Sequence Neural Network

对于有向图 G = ( V , E ) G = (V,E) G=(V,E)

  • C o ( v ) , v ∈ V Co(v), v \in V Co(v),vV 表示结点 v v v 的入边和出边集合(与 v v v 相连的边集合)。
  • N B R ( v ) , v ∈ V NBR(v), v \in V NBR(v),vV 表示结点 v v v邻居结点集合(包括入边连接和出边连接的)

这里

  • 图的邻接矩阵 A = [ A o u t , A i n ] ∈ R D . ∣ V ∣ × 2. D . ∣ V ∣ A = [A_{out}, A_{in}] \in R^{ D.|V| \times2.D.|V|} A=[Aout,Ain]RD.V×2.D.V
  • 图的结点特征矩阵 X ∈ R n × d X \in R^{n \times d} XRn×d

其中,图 G = ( V , E ) G = (V,E) G=(V,E) 中, 结点特征向量维度为 d d d,这里邻接矩阵也很特别,每个元素不是数字而是边的特征,用 D × D D \times D D×D 向量表示。

论文提到了2种结构

2.1. Gated Graph Neural Networks(GG-NNs)

模型隐层向量输入为, v v v下标表示结点 v v v 的向量(论文中的维度标记确实挺乱)
h v 1 = [ x v , 0 ] ∈ R D , 对 x v 进 行 补 0 h^1_v = [x_v, 0] \in R^D, 对x_v进行补0 hv1=[xv,0]RD,xv0

前向传播过程类似GRU,如下:
a v t = A v T . [ h 1 ( t − 1 ) . . . h ∣ V ∣ ( t − 1 ) ] T + b a^t_v = A_v^T .[h^{(t−1)}_1 ... h^{(t−1)}_{|V|}]^T +b avt=AvT.[h1(t1)...hV(t1)]T+b

z v t = σ ( W z . a v t + U z . h v t − 1 ) z^t_v= \sigma(W^z.a^t_v + U_z.h^{t−1}_v) zvt=σ(Wz.avt+Uz.hvt1)

r v t = σ ( W r . a v t + U r . h v t − 1 ) r^t_v = \sigma(W^r. a^t_v + U^r.h^{t−1}_v) rvt=σ(Wr.avt+Ur.hvt1)

h v t ~ = t a n h ( W . a v t + U . ( r v t ⊙ h v t − 1 ) ) \widetilde{h^t_v} = tanh(W.a^t_v + U.(r^t_v \odot h^{t−1}_v)) hvt =tanh(W.avt+U.(rvthvt1))

h v t = ( 1 − z v t ) ⊙ h v t − 1 + z v t ⊙ h v t ~ h^t_v = (1 − z^t_v) \odot h^{t−1}_v + z^t_v \odot \widetilde{h^t_v} hvt=(1zvt)hvt1+zvthvt

可以看到模型有 W z , W r , W , U z , U r , U W^z, W^r, W, U_z, U^r, U Wz,Wr,W,Uz,Ur,U 这些参数,并且这个聚合算法中每个结点的向量聚合了整个图的表示。

其中(由于没看代码,有些向量维度是自己推测的,可能有误):

  • A v ∈ R D . ∣ V ∣ × 2. D A_v \in R^{D.|V| \times 2.D} AvRD.V×2.D
  • a v t ∈ R 2. D a^t_v \in R^{2.D} avtR2.D
  • σ 为 s i g m o i d \sigma为sigmoid σsigmoid
  • [ h 1 ( t − 1 ) . . . h ∣ V ∣ ( t − 1 ) ] T [h^{(t−1)}_1 ... h^{(t−1)}_{|V|}]^T [h1(t1)...hV(t1)]T 表示将 t t t 时刻所有结点向量append形成一个 R D . ∣ V ∣ R^{D.|V|} RD.V 向量
  • z v t , r v t z^t_v, r^t_v zvt,rvt 分别为update gate和reset gate

输出为
h G = t a n h ( ∑ v ∈ V . σ ( [ h v T , x v ] ) ⊙ t a n h ( [ h v T , x v ] ) ) h_\mathcal{G}= tanh(\sum\limits_{v \in V}.σ([h^T_v,x_v]) \odot tanh([h^T_v,x_v])) hG=tanh(vV.σ([hvT,xv])tanh([hvT,xv]))

2.2. Gated Graph Sequence Neural Networks(GGS-NNs)

架构如下
在这里插入图片描述其中 F o ( 1 ) , F o ( 2 ) , . . . , F x ( 1 ) , F x ( 2 ) , . . . F_o^{(1)},F_o^{(2)},...,F_x^{(1)},F_x^{(2)}, ... Fo(1),Fo(2),...,Fx(1),Fx(2),... 为普通GG-NNs网络。可以看到GGS-NNs本身是多个GG-NNs组合成的复杂网络。

模型输出为 o ( 1 ) , o ( 2 ) , . . . o^{(1)}, o^{(2)},... o(1),o(2),...

3.Graph Attention Networks(GAT)

GAT和普通的attention一样,是一种机制而不是一个模型。

输入为图 n n n 个顶点的向量 h = { h 1 , h 2 , . . . , h n } , h i ∈ R F \mathcal{h} = \{h_1, h_ 2, ... , h_n\}, h_i \in R^F h={h1,h2,...,hn},hiRF
输出新的向量 h ′ = { h 1 ′ , . . . , h n ′ } , h i ′ ∈ R F ′ h^{'} = \{h_1^{'}, ..., h_n^{'} \}, h_i^{'} \in R^{F^{'}} h={h1,...,hn},hiRF

这里定义 N i N_i Ni 为结点 i i i 的邻居结点集合。

3.1. attention层因子 α \alpha α 的计算

这里定义

  • a a a 函数: a : R F ′ × R F ′ → R a: R^{F^{'}} \times R^{F^{'}} \rightarrow R a:RF×RFR
    即:输入2个 F ′ F^{'} F 维向量,输出一个标量, a a a 函数可以有不同的实现过程,向量内积为其中一种。
  • attention层参数矩阵 W ∈ R F ′ × F W \in R^{F^{'} \times F} WRF×F

通常的计算过程如下:
e i j = a ( W . h i , W . h j ) e_{ij} = a(W.h_i, W.h_j) eij=a(W.hi,W.hj)

α i j = s o f t m a x j ( e i j ) = e x p ( e i j ) ∑ k ∈ N i e x p ( e i k ) \alpha_{ij} = softmax_j(e_{ij}) = \frac{exp(e_{ij})}{\sum_{k \in N_i} exp(e_{ik})} αij=softmaxj(eij)=kNiexp(eik)exp(eij)

这里,作者定义
e i j = a ( W . h i , W . h j ) = L e a k y R e L U ( a → T . ( W . h i ∣ ∣ W . h j ) ) e_{ij} = a(W.h_i, W.h_j) = LeakyReLU(\overset\rightarrow{a}^T.(W.h_i || W.h_j)) eij=a(W.hi,W.hj)=LeakyReLU(aT.(W.hiW.hj))

  • a → ∈ R 2. F ′ \overset\rightarrow{a} \in R^{2.F^{'}} aR2.F
  • . T .^T .T 表示转置
  • ∣ ∣ || 表示concatenation

3.2. 输出向量的计算

一开始
h i ′ = σ ( ∑ j ∈ N i α i j . W . h i ) h_i^{'} = \sigma(\sum\limits_{j \in N_i}\alpha_{ij}.W.h_i) hi=σ(jNiαij.W.hi)

其中

  • W ∈ R F ′ × F W \in R^{F^{'} \times F} WRF×F 为graph attention layer的参数矩阵
  • σ \sigma σ 为非线性激活函数

而作者在计算 α \alpha α 时定义了 K K K 个不同的 a a a 函数(不同的 a → \overset\rightarrow{a} a 参数), 计算了 K K K 个不同的 α \alpha α 因子,同时模型的参数矩阵也从1个变成 K K K 个,改进后的计算公式为

h i ′ = σ ( 1 K ∑ k = 1 K ∑ j ∈ N i α i j k . W k . h i ) h_i^{'} = \sigma(\frac{1}{K}\sum\limits_{k = 1}^K \sum\limits_{j \in N_i}\alpha_{ij}^k.W^k.h_i) hi=σ(K1k=1KjNiαijk.Wk.hi)

4.GraphSAGE

GraphSAGE类似word2vec是一个无监督的预训练任务,并不是特定的分类任务

这里定义

  • G = ( V , E ) G = (V, E) G=(V,E) 及特征矩阵 X ∈ R ∣ V ∣ × d X \in R^{|V| \times d} XRV×d
  • x v ∈ X x_v \in X xvX 表示结点 v v v 的向量。
  • 图的网络层数 K K K (也可以理解为时间步),每层对应一个参数矩阵 W k , 1 ≤ k ≤ K W^k, 1 \leq k \leq K Wk,1kK K K K 也代表着每个顶点能够聚合的邻接点的跳数,如 K = 2 K=2 K=2 的时候每个顶点可以最多根据其 2 跳邻接点的信息学习其自身的embedding表示
  • N ( v ) N(v) N(v) 表示 v v v 的邻居结点

4.1.embedding的计算

结点 v v v 的embedding z v z_v zv 计算过程如下:

隐层向量初始化
h v 0 = x v , v ∈ V h^0_v = x_v, v \in V hv0=xv,vV

层间传递
h N ( v ) k = A g g r e g a t o r k ( { h u k − 1 } ) , u ∈ N ( v ) , h v k = σ ( W k . C o n c a t ( h v k ,    h N ( v ) k ) ) , ∀ v ∈ V , h_{N(v)}^k = Aggregator_k(\{h_u^{k - 1}\}) , u \in N(v), \\ h_v^k = \sigma(W^k.Concat(h_v^k, \; h_{N(v)}^k)), \\ \forall v \in V, hN(v)k=Aggregatork({huk1}),uN(v)hvk=σ(Wk.Concat(hvk,hN(v)k)),vV

h v k = h v k ∣ ∣ h v k ∣ ∣ 2 , ∀ v ∈ V , h_v^k = \frac{h_v^k}{||h_v^k||_2}, \forall v \in V, hvk=hvk2hvk,vV,

z v = h v K , ∀ v ∈ V z_v = h_v^K, \forall v \in V zv=hvK,vV

其中:

  • A g g r e g a t o r k Aggregator_k Aggregatork 表示网络第 k k k 层采用的可微分聚合函数
  • 这里作者设置 K = ∣ V ∣ K = |V| K=V, 意思是每个结点都可以聚合到整个图所有结点的向量表示
  • 出于对计算效率的考虑。这里作者定义 N ( v ) N(v) N(v) 并不是 v v v 的所有邻居结点,而是做了固定尺寸的采样。对每个顶点采样一定数量的邻居顶点作为待聚合信息的顶点。设采样数量为 k k k,若顶点邻居数少于 k k k,则采用有放回的抽样方法,直到采样出 k k k个顶点。若顶点邻居数大于 k k k,则采用无放回的抽样。

4.2.Loss Function

作者给出的是无监督损失,相邻节点有相似的embedding,无关节点的embedding有明显差别。

这里loss定义如下:
J G ( z u ) = − l o g ( σ ( z u T . z v ) ) − Q . E v v ∼ P n ( v ) l o g ( σ ( − z u T . z v n ) ) J_{\mathcal{G}}(z_u) = -log(\sigma(z_u^T.z_v)) - Q.E_{v_v \sim P_n(v)}log(\sigma(-z_u^T.z_{v_n})) JG(zu)=log(σ(zuT.zv))Q.EvvPn(v)log(σ(zuT.zvn))

其中:

  • z u ​ , ∀ u ∈ V z_u​,\forall u \in V zu,uV 表示图中任意节点的embedding
  • v v v 表示在一个固定长度的随机游走上的结点 u u u 的邻居结点
  • P n P_n Pn 为负采样分布
  • Q Q Q 为负采样数量

4.3.聚合函数的选择

聚合函数(aggregator function) 的作用是把一个向量的集合转换成向量,,也就是聚合。和其他机器学习任务中的数据(如图像,文本等)不同,图中的节点是没有顺序的。

aggregator function有两个性质:

  • 可微
  • 对称

作者使用过的aggregator有

  • Mean Aggregator(平均值)
  • LSTM Aggregator:和mean aggregator相比,LSTM有更大的表达能力。但是LSTM不符合对称的性质,输入是有顺序的。所以把相邻节点的向量集合随机打乱顺序,然后作为LSTM的输入。
  • Pooling aggregator:pooling做aggregator, 所有相邻节点的向量共享权重,先经过一个非线性全连接层,然后做max-pooling

A g g r e g a t o r k p o o l ( . ) = m a x ( { σ ( W p o o l . h u i k + b ) } ) , u i ∈ N ( v ) Aggregator_k^{pool}(.) = max(\{\sigma(W_{pool}.h_{u_i}^k + b)\}), u_i \in N(v) Aggregatorkpool(.)=max({σ(Wpool.huik+b)}),uiN(v)

实验结果表明,LSTM或者Pooling效果比较好

参考文献

[1] Kip F T N , Welling M . Semi-Supervised Classification with Graph Convolutional Networks[J]. 2016.

[2] Li Y , Tarlow D , Brockschmidt M , et al. Gated Graph Sequence Neural Networks[J]. Computer Science, 2015.

[3] Velikovi P , Cucurull G , Casanova A , et al. Graph Attention Networks[J]. 2017.

[4] Hamilton W, Ying Z, Leskovec J. Inductive representation learning on large graphs[C]//Advances in Neural Information Processing Systems. 2017: 1024-1034.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值