GNN学习—递归图神经网络

第1篇—递归图神经网络

  • RNN简介
    • RNN (Recurrent Neural Networks)
    • LSTM(Long-Short Term Memory)
    • GRU(Gate Recurrent Unit)
  • RecGNN模型简介
    • GNN*
    • GraphESN
    • GGNN
    • SSE

GNN学习—综述根据一篇GNN综述的论文对GNN进行了大概简要的总结,接下来的一系列文章会对RecGNNs(递归图神经网络 )、ConvGNNs(卷积图神经网络)、GAEs(图自编码器)、STGNNs(时空图神经网络)分别进行介绍,并列举相应的论文以及模型。
首先,本篇介绍RecGNNs(递归图神经网络 ),从循环神经网络(RNN)说起,再引出递归图神经网络。

RNN简介

RNN (Recurrent Neural Networks)

  • 产生原因
    神经网络非常强大,只要训练数据足够,给定特定的x,就能得到希望的y。但是神经网络只能单独的处理每个的输入数据,也就是一个输入得到一个输出。不同的输入之间是没有联系的。而某些任务需要能够更好的处理序列的信息,即前面的输入和后面的输入是有关系的。例如说当在理解一句话时,不能孤立的理解这句话的每个词,而是需要处理这些词连接起来的整个序列;当处理视频的时候,我们也不能只单独的去分析每一帧,而要分析这些帧连接起来的整个序列。针对这类需要先前的知识与当前信息共同决定输出结果的任务,提出了循环神经网络RNN。
  • 模型
    RNN的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。权重矩阵 W就是隐藏层上一次的值作为这一次的输入的权重。
    GNN学习—递归图神经网络_第1张图片
    正向传播&反向传播:正向传播得到输出值,将输出与真实标签值比较得到误差,误差反向传播更新权重值,训练网络。
    优化算法:BPTT,同时考虑了层级间的纵向传播以及时间上的横轴传播。
  • 应用:NLP中的分词任务、实体识别,词性标注都是序列标注问题。

LSTM(Long-Short Term Memory)

  • 产生原因
    RNN 有短期记忆问题,如下图,无法处理很长的输入序列,因此提出LSTM 学习长期依赖性。
    GNN学习—递归图神经网络_第2张图片

  • 模型
    原始 RNN 的隐藏层只有一个状态,即h,它对于短期的输入非常敏感。再增加一个状态,即c,让它来保存长期的状态,称为单元状态(cell state)。
    GNN学习—递归图神经网络_第3张图片
    将上图按照时间维度展开如下图,则在 t 时刻,LSTM 的输入有三个:当前时刻网络的输入值 xt、上一时刻 LSTM 的输出值 ht-1、以及上一时刻的单元状态 ct-1;LSTM 的输出有两个:当前时刻 LSTM 输出值 ht、和当前时刻的单元状态 ct
    GNN学习—递归图神经网络_第4张图片
    具体重复模块的实现如下图所示。
    在标准的RNN中,该重复模块将具有非常简单的结构,例如单个tanh层。
    LSTMs也具有这种链式结构,但它的重复单元不同于标准RNN网络里的单元只有一个网络层,它的内部有四个网络层。LSTM网络能通过一种被称为门的结构对单元状态进行删除或者添加信息,门能够有选择性的决定让哪些信息通过。其实门的结构很简单,就是一个sigmoid层和一个点乘操作的组合。因为sigmoid层的输出是0-1的值,这代表有多少信息能够流过sigmoid层。0表示都不能通过,1表示都能通过。
    GNN学习—递归图神经网络_第5张图片
    具体过程为:
    1、决定cell state需要丢弃哪些信息
    定义遗忘门(forget gate)ft
    在这里插入图片描述
    2、决定给cell state添加哪些新的信息
    定义输入门(input gate)it
    在这里插入图片描述
    3、更新旧的cell信息Ct-1为新的cell Ct
    在这里插入图片描述
    4、输出:控制长期记忆对当前输出的影响
    定义输出门(output gate)ot
    在这里插入图片描述
    最后ht即为t时刻该次循环的输出。

关于RNN以及LSTM的设计思想可以参考这篇文章,深度解析LSTM神经网络的设计原理,里面详细介绍了为什么定义这么些个公式就能做到遗忘和更新的过程。

GRU(Gate Recurrent Unit)

和LSTM一样,GRU也是为了解决长期记忆和反向传播中的梯度消失等问题而提出来的。GRU的实验效果与LSTM相似,但是更易于计算。它去除了LSTM中cell state的设计,只采用了一个隐层单元,如下图。
GNN学习—递归图神经网络_第6张图片
它只设计了两个门来更新遗忘信息:

  • 重置门(reset gate)rt:决定了如何将新的输入信息与前面的记忆相结合
  • 更新门(update gate)zt:定义了前面记忆保存到当前时间步的量

具体实现如下图:
GNN学习—递归图神经网络_第7张图片
1、通过上一个传输下来的状态ht-1和当前节点的输入xt来获取两个门控状态。更新门用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门的值越大说明前一时刻的状态信息带入越多。重置门控制前一状态有多少信息被写入到当前的候选集 h~t 上,重置门越小,前一状态的信息被写入的越少。
2、使用重置门得到“重置”之后的数据 rt*ht-1,再将其与输入xt进行拼接,通过一个tanh激活函数来将数据放缩到-1~1的范围内。这里的 ht主要是包含了当前输入的xt数据。有针对性地对 ht 添加到当前的隐藏状态,相当于”记忆了当前时刻的状态“。类似于LSTM的选择记忆阶段。
3、最后是GRU最关键的一个步骤:”更新记忆“阶段。门控信号(这里的 z )的范围为0~1。门控信号越接近1,代表”记忆“下来的数据越多;而越接近0则代表”遗忘“的越多。
zt 控制当前的内部状态 ht 中有多少来自于上一时刻的 ht-1

RecGNN模型简介

RNN (Recurrent Neural Networks)翻译为循环神经网络,RecGNNs(Recurrent Graph Neural Networks)翻译为递归图神经网络,虽然后者仅多了一个Graph单词,但是前后对于Recurrent 的翻译不一样。网上解释为:“递归神经网络分为结构递归神经网络和时间递归神经网络,结构递归神经网络是通常说的递归神经网络,而时间递归神经网络则称为循环神经网络,所以循环神经网络可以归类到递归神经网络。”由此,可以论证RNN在时间维度上展开,而RecGNNs在空间维度上展开。

  • 递归图神经网络(RecGNNs)是GNN的先驱。它在概念上很重要,并启发了后来对卷积图神经网络的研究。
  • RecGNN 主要继承RNN的思想是在图中的节点上递归应用相同的参数集,以提取高级节点表示。受计算能力的限制,早期的研究主要集中在有向无环图上。
  • 旨在通过循环神经体系结构学习节点表示。假设图中的节点不断与其邻居交换信息/消息,直到达到稳定的平衡。因此对于RecGNN 系列的模型,重要的是如何定义以下两个过程:传播过程(transition function)输出过程(output function)

下面介绍四篇RecGNN 系列的模型:
GNN学习—递归图神经网络_第8张图片

GNN*

论文:The Graph Neural Network Model

  • Motivation
    传统的算法往往将图结构的数据压缩为链式结构,或树状结构,然后再使用神经网络(如RNN)去处理。但是,图中的拓扑结构信息往往会有一定的损失,比如信息对每个节点的拓扑依赖性,模型的性能也会受到压缩的影响。因此在预处理阶段可能会丢失重要信息,最终的结果可能不可预测地依赖于预处理算法的细节。
  • Contribution
    提出GNN*,它扩展了RNN模型,基于信息扩散机制,通过递归交换邻域信息来更新节点状态,直到达到稳定平衡。它可处理一般类型的图,如无环图、循环图、有向图和无向图,无需预处理阶段。GNN*是有监督模型,适用于图任务和结点类型任务。
  • Model
    传播过程xn:节点n此刻的状态表示由节点n的label,n邻边的label,上一时刻n的邻节点的状态表示输出以及n邻节点的label迭代更新得到。
    输出过程On:节点n的输出。
    在这里插入图片描述
    传播过程对应于从t0 到T的更新过程(注意,T并不是确定的,而是对应于整个图的状态到达不动点的时刻),然后根据最终节点表示得到目标输出(如每个节点的类别,对于graph-focused的任务,增加一个特殊的节点super node,并通过特殊类型的边连接所有节点。以该节点来作为目标节点,这样graph-focused和node-focused任务都能统一到节点预测任务上)。

GraphESN

论文:Graph Echo State Networks
先来介绍下ESN(Echo State Networks),回声状态网络。

ESN是隐藏层具有稀疏连接(通常为1%的连通性)的RNN,它的输入层到隐藏层、隐藏层到隐藏层的连接权值是随机初始化,并且固定不变。训练中只需要训练隐藏层到输出层的连接权值。这就变成了一个线性回归问题,所以ESN训练起来非常快。
之所以叫回声状态网络,是因为前面时刻输入的信息会通过WW回回荡在储备池中,就像回声一样。
ESN通过随机地部署大规模系数链接的神经元构成网络隐层,一般称为"储备池"。
GNN学习—递归图神经网络_第9张图片
GNN学习—递归图神经网络_第10张图片

  • Model
    传播过程
    local state transition function :
    在这里插入图片描述
    global state transition function:
    GNN学习—递归图神经网络_第11张图片
    输出过程
    structure-to-structure
    在这里插入图片描述
    structure-to-element:
    在这里插入图片描述

GGNN

论文:GATED GRAPH SEQUENCE NEURAL NETWORKS

  • Contribution
    相比于GNN,GG-NN的特点在于使用了GRU单元,而且节点表示的更新次数被固定成了T 。也就是说,GG-NN并不能保证图的最终状态会到达不动点。
  • Model
    传播过程xn

在这里插入图片描述(1):初始化步骤。它将节点标注(node annotations)复制到隐藏状态中,并用零填充其余部分。
(2):用于在不同node之间传递信息。
A由图的出度邻接矩阵 A(out) 和入度邻接矩阵 A(in) 连接而成,
Av:为 A(out) 和 A(in) 中与节点 v 相对应的两列(V为节点数)。
(3) - (6):GRU单元的计算,z 和 r 分别为 update gate 和 reset gate。

输出过程On
node-focused任务:对于每个节点v都需要有一个输出:
在这里插入图片描述
graph-focused任务:定义一个图的表示向量:
在这里插入图片描述

 i, j是神经网络,输入是hv和xv的全连接,

SSE

论文:Learning Steady-States of Iterative Algorithms over Graphs

  • Motivation
    许多图分析问题可通过迭代算法到达稳态来解决,但是不同算法有不同的不动点约束集。 能否学习一种有效且可扩展的算法从实例中自动得到相同的稳态解?
  • Contribution
    提出一种迭代算法在图上的嵌入表示,并设计了一种在更新嵌入和将嵌入映射到稳态约束之间交替的学习方法。
  • Model
    输入数据集:
    在这里插入图片描述
    假设已经收集了一个迭代算法T在一个大图上的输出。hv*是该算法中满足稳态条件的量,f()为标签函数,获取该稳态量,为每个节点生成最终的标签。
    *目标:*学习一个参数化算法 Acita ,其输出fv^ 可以模拟原始算法的输出。
    则优化目标为:GNN学习—递归图神经网络_第12张图片
    模型的关键为学习稳态算子Tcita获得节点嵌入hv,以及连接预测函数f^(hv)
    传播过程:Tcita^
    在这里插入图片描述
    则稳态为:
    GNN学习—递归图神经网络_第13张图片
    特点是异步方式更新,每次更新只执行一跳,小批量更新。
    输出过程:f(hv)^
    在这里插入图片描述
    则模型的优化目标为
    GNN学习—递归图神经网络_第14张图片
    即寻找最优的参数W1,W2,V1,V2,使得本文提出的算法得到的输出与原算法的输出之间的loss值越小越好。
    在处理该优化目标时,作者提出了一种交替算法:以随机和异步的方式周期性更新节点的隐状态,它随机采样一批节点用于状态更新,随机采样一批节点用于梯度计算,具体算法如下:GNN学习—递归图神经网络_第15张图片
    算法中采用的传播函数如下,即式(12)
    在这里插入图片描述

你可能感兴趣的:(GNN,神经网络)