图机器学习——5.10 图神经网络:预测任务

首先回顾一下整个GNN的结构,前面我们所介绍的都是红色框内所解决的任务。

图机器学习——5.10 图神经网络:预测任务

最终得到的节点嵌入结果,是一个关于每个在L L L层节点嵌入的集合:

{ h v ( L ) , ∀ v ∈ G } \left{\mathbf{h}_{v}^{(L)}, \forall v \in G\right}{h v (L )​,∀v ∈G }

下面来我们来介绍图网络里,蓝色框中的预测任务(prediction head),其中包括:节点水平、边水平、图水平的三种预测:

图机器学习——5.10 图神经网络:预测任务

; ① 节点水平预测

节点水平的预测我们可以直接采用最终的嵌入结果。也可以再进行一个线性变换最终得到所需要的结果。这里假设在经过 GNN 的计算后,我们可以得到一个 d d d 维的嵌入向量:{ h v ( L ) ∈ R d , ∀ v ∈ G } \left{\mathbf{h}_{v}^{(L)} \in \mathbb{R}^{d}, \forall v \in G\right}{h v (L )​∈R d ,∀v ∈G }。

假设我们需要的实际结果是 k k k 个目标的(可以为 k k k 维的分类问题;或者是 k k k 个目标的回归问题),那么最终的预测结果如下:

y ^ v = Head ⁡ node ( h v ( L ) ) = W ( H ) h v ( L ) \widehat{y}{v}=\operatorname{Head}{\text {node }}\left(\mathbf{h}{v}^{(L)}\right)=\mathbf{W}^{(H)} \mathbf{h}{v}^{(L)}y ​v ​=H e a d node ​(h v (L )​)=W (H )h v (L )​

其中 W ( H ) ∈ R k ∗ d \mathbf{W}^{(H)} \in \mathbb{R}^{k * d}W (H )∈R k ∗d,为权重矩阵。

② 边水平预测

假设边水平的预测也同样需要输出k k k个预测结果,需要预测u , v u, v u ,v两个节点之间的边嵌入结果。

图机器学习——5.10 图神经网络:预测任务

预测公式如下:

y ^ u v = Head ⁡ edge ( h u ( L ) , h v ( L ) ) \widehat{\boldsymbol{y}}{u v}=\operatorname{Head}{\text {edge }}\left(\mathbf{h}{u}^{(L)}, \mathbf{h}{v}^{(L)}\right)y ​u v ​=H e a d edge ​(h u (L )​,h v (L )​)

  • *方式一:拼接+线性变换

这种方式之前在 attention 机制中出现过:

具体操作方式是先拼接,再进行线性变换。

y ^ u v = Linear ⁡ ( Concat ⁡ ( h u ( L ) , h v ( L ) ) ) \widehat{\boldsymbol{y}}{u v}=\operatorname{Linear}\left(\operatorname{Concat}\left(\mathbf{h}{u}^{(L)}, \mathbf{h}_{v}^{(L)}\right)\right)y ​u v ​=L i n e a r (C o n c a t (h u (L )​,h v (L )​))

  • *方式二:内积

要求输出的边嵌入为一维时,可以直接通过如下内积方式得到:

y ^ u v = ( h u ( L ) ) T h v ( L ) \widehat{y}{u v}=\left(\mathbf{h}{u}^{(L)}\right)^{T} \mathbf{h}_{v}^{(L)}y ​u v ​=(h u (L )​)T h v (L )​

要求为k k k维时,参考多头注意力机制,构建一系列可训练的权重矩阵:W ( 1 ) , … , W ( k ) \mathbf{W}^{(1)}, \ldots, \mathbf{W}^{(k)}W (1 ),…,W (k )。具体k k k个维度的构造如下:

y ^ u v ( 1 ) = ( h u ( L ) ) T W ( 1 ) h v ( L ) y ^ u v ( k ) = ( h u ( L ) ) T W ( k ) h v ( L ) y ^ u v = Concat ⁡ ( y ^ u v ( 1 ) , … , y ^ u v ( k ) ) ∈ R k \begin{gathered} \widehat{y}{u v}^{(1)}=\left(\mathbf{h}{u}^{(L)}\right)^{T} \mathbf{W}^{(1)} \mathbf{h}{v}^{(L)} \ \widehat{y}{u v}^{(k)}=\left(\mathbf{h}{u}^{(L)}\right)^{T} \mathbf{W}^{(k)} \mathbf{h}{v}^{(L)} \ \widehat{\boldsymbol{y}}{u v}=\operatorname{Concat}\left(\widehat{y}{u v}^{(1)}, \ldots, \widehat{y}_{u v}^{(k)}\right) \in \mathbb{R}^{k} \end{gathered}y ​u v (1 )​=(h u (L )​)T W (1 )h v (L )​y ​u v (k )​=(h u (L )​)T W (k )h v (L )​y ​u v ​=C o n c a t (y ​u v (1 )​,…,y ​u v (k )​)∈R k ​

; ③ 图水平预测

图水平的预测其实非常类似GNN中的聚合操作:

图机器学习——5.10 图神经网络:预测任务

y ^ G = AGG ⁡ ( { h v ( L ) ∈ R d , ∀ v ∈ G } ) \widehat{\boldsymbol{y}}{G} = \operatorname{AGG}\left( \left{\mathbf{h}{v}^{(L)} \in \mathbb{R}^{d}, \forall v \in G\right}\right)y ​G ​=A G G ({h v (L )​∈R d ,∀v ∈G })

其中的 AGG ⁡ \operatorname{AGG}A G G 可以为 Mean ⁡ , Max ⁡ , Sum ⁡ \operatorname{Mean}, \operatorname{Max}, \operatorname{Sum}M e a n ,M a x ,S u m 等。

但这样的嵌入可能会损失一些信息,特别是针对一些比较大的图结构时。例如两个完全不同的图,节点嵌入分别为:
G 1 : { − 1 , − 2 , 0 , 1 , 2 } G_{1}:{-1,-2,0,1,2}G 1 ​:{−1 ,−2 ,0 ,1 ,2 }
G 2 : { − 10 , − 20 , 0 , 10 , 20 } G_{2}:{-10,-20,0,10,20}G 2 ​:{−1 0 ,−2 0 ,0 ,1 0 ,2 0 }

如果聚合函数选择为Sum ⁡ \operatorname{Sum}S u m时,图嵌入为:
G 1 : y ^ G = Sum ⁡ ( { − 1 , − 2 , 0 , 1 , 2 } ) = 0 G_{1}: \hat{y}{G}=\operatorname{Sum}({-1,-2,0,1,2})=0 G 1 ​:y ^​G ​=S u m ({−1 ,−2 ,0 ,1 ,2 })=0
G 2 : y ^ G = Sum ⁡ ( { − 10 , − 20 , 0 , 10 , 20 } ) = 0 G
{2}: \hat{y}_{G}=\operatorname{Sum}({-10,-20,0,10,20})=0 G 2 ​:y ^​G ​=S u m ({−1 0 ,−2 0 ,0 ,1 0 ,2 0 })=0

两者结果完全一致。因此我们考虑一种层级全局池化方法(hierarchical global pooling),进行聚合操作,得到最终的图嵌入。

我们的GNN网络分别用于两种操作,第一种就是前面介绍的节点嵌入。第二种就是构建一个聚类网络,对原始网络中的每个节点进行聚类,而后在根据层级聚类结果进行一层一层的池化聚合操作,最终得到我们需要的整个图的嵌入结果。整个流程如下:

图机器学习——5.10 图神经网络:预测任务

以前面的方法举例,假设我们根据 G 1 , G 2 G_{1}, G_{2}G 1 ​,G 2 ​ 由五个节点组成的图最终被聚成了两类(前两个节点一类,后两个节点一类),那么我们逐层进行聚合:

  • G 1 G_{1}G 1 ​ 的节点嵌入:{ − 1 , − 2 , 0 , 1 , 2 } {-1,-2,0,1,2}{−1 ,−2 ,0 ,1 ,2 }
    第一轮: y ^ a = ReLU ⁡ ( Sum ⁡ ( { − 1 , − 2 } ) ) = 0 , y ^ b = ReLU ⁡ ( Sum ⁡ ( { 0 , 1 , 2 } ) ) = 3 第二轮: y ^ G = ReLU ⁡ ( Sum ⁡ ( { y a , y b } ) ) = 3 \begin{aligned} &\text { 第一轮:} \hat{y}{a}=\operatorname{ReLU}(\operatorname{Sum}({-1,-2}))=0, \quad \hat{y}{b}= \operatorname{ReLU}(\operatorname{Sum}({0,1,2}))=3 \ &\text { 第二轮:} \hat{y}{G}=\operatorname{ReLU}\left(\operatorname{Sum}\left(\left{y{a}, y_{b}\right}\right)\right)=3 \end{aligned}​第一轮:y ^​a ​=R e L U (S u m ({−1 ,−2 }))=0 ,y ^​b ​=R e L U (S u m ({0 ,1 ,2 }))=3 第二轮:y ^​G ​=R e L U (S u m ({y a ​,y b ​}))=3 ​
  • G 2 G_{2}G 2 ​ 的节点嵌入:{ − 10 , − 20 , 0 , 10 , 20 } {-10,-20,0,10,20}{−1 0 ,−2 0 ,0 ,1 0 ,2 0 }
    第一轮: y ^ a = ReLU ⁡ ( Sum ⁡ ( { − 10 , − 20 } ) ) = 0 , y ^ b = ReLU ⁡ ( Sum ⁡ ( { 0 , 10 , 20 } ) ) = 30 第二轮: y ^ G = ReLU ⁡ ( Sum ⁡ ( { y a , y b } ) ) = 30 \begin{aligned} &\text { 第一轮:} \hat{y}{a}=\operatorname{ReLU}(\operatorname{Sum}({-10,-20}))=0, \quad \hat{y}{b}= \operatorname{ReLU}(\operatorname{Sum}({0,10,20}))=30 \ &\text { 第二轮:} \hat{y}{G}=\operatorname{ReLU}\left(\operatorname{Sum}\left(\left{y{a}, y_{b}\right}\right)\right)=30 \end{aligned}​第一轮:y ^​a ​=R e L U (S u m ({−1 0 ,−2 0 }))=0 ,y ^​b ​=R e L U (S u m ({0 ,1 0 ,2 0 }))=3 0 第二轮:y ^​G ​=R e L U (S u m ({y a ​,y b ​}))=3 0 ​

两个图会得到不一样的结果,因此这种方式是能够有效区分这种情形。

Original: https://blog.csdn.net/weixin_41929524/article/details/124931093
Author: Kanny广小隶
Title: 图机器学习——5.10 图神经网络:预测任务

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/622925/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球