多元时间序列预测之(三)基于图神经网络的Graph-Wavenet与MTGNN

文章目录

本文作为系列第三讲,将正式介绍基于图神经网络的多元时间预测方法。
本文所讲解的Graph-Wavenet与MTGNN是Wu等人先后于2019年和2020年提出的模型,可以认为前者是后者的前身,我认为MTGNN的提出正式开创了基于图网络进行多元时间序列预测的先河。

相关论文(按知识点先后顺序排列):

  • Deep Residual Learning for Image Recognition (深度残差学习,Wavenet模型基于此框架)
  • WAVENET: A GENERATIVE MODEL FOR RAW AUDIO (Wavenet模型,Graph-Wavenet基于此模型)
  • An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling (TCN,时间卷积网络,Wavenet模型的正式版)
  • Graph WaveNet for Deep Spatial-Temporal Graph Modeling (Graph-Wavenet模型)
  • Connecting the Dots: Multivariate Time Series Forecasting with Graph Neural Networks (MTGNN模型)

也就是,想完全搞懂MTGNN的内容至少要完全读懂以上五篇前置论文,本文就带大家一起来深入解读一下。而本系列论文的代码,也是延续了LSTNet模型的代码框架,基于Pytorch,在github上很容易找到。

1.关于深度残差学习

首先说一下深度残差学习,深度残差学习的思想是后文模型的根基。作者认为,一个更深层次的神经网络往往比浅层的网络更难被训练。若对一个层数原本已经相对合适的深度学习网络模型再添加更深的网络层,则会导致学习效果下降。一个例子如下图所示,拥有56层的模型,训练效果明显差于20层的模型。

多元时间序列预测之(三)基于图神经网络的Graph-Wavenet与MTGNN
但这种退化并不是由过拟合引起的,其可以理解为增加模型结构本应有助于拟合数据的映射关系,但当模型结构过深时,大量的多余参数会形成冗余的、未训练充分的随机变量来影响模型的整体。此外,也会出现臭名昭著的梯度消失/爆炸的问题。而深度残差学习中的残差连接可以很好地改善这种情况,其结构如下图所示,该结构层中输入为 X X X,输出为 R E L U ( F ( X ) + X ) RELU(F(X)+X)R E L U (F (X )+X )。

多元时间序列预测之(三)基于图神经网络的Graph-Wavenet与MTGNN

在残差连接模块中,新的网络层并不会直接串联到原有的网络层中去,而是独特地让这些新网络层匹配原有网络层的残差映射。假设模型输入为 X X X,所需拟合的真实映射函数为 H H H,网络层拟合的残差映射为 F F F,我们希望有 F ( X ) = H ( x ) − X F(X)=H(x)-X F (X )=H (x )−X(假设映射前后的维度不变)。也就是说,我们希望每一层网络层新得到的输出 Y = F ( X ) + X Y=F(X)+X Y =F (X )+X 可以尽可能得接近 H ( x ) H(x)H (x )。(此时先忽略激活函数)

通过残差学习模型,如果第 t t t 层网络层映射是最优的,即 Y t = H ( x ) Y_t=H(x)Y t ​=H (x ),模型可以简单地将新增网络层的权值置为零,即 F t + 1 ( X ) = 0 F_{t+1}(X)=0 F t +1 ​(X )=0,从而不影响原网络层映射,保持 Y t + 1 = Y t + 0 Y_{t+1}=Y_t+0 Y t +1 ​=Y t ​+0;而如果不是最优的,新增的网络层也只注重于原网络层未拟合成功的残差部分,从而起到加速收敛的作用。这种框架思路,有点类似于Xgboost的集成学习提升树模型。

; 2.Wavenet与TCN

有了残差学习的思想基础,我们可以开始介绍Graph-Wavenet 模型的前任模型——Wavenet模型。Wavenet模型本是用于探索原始音频生成技术,因此才有了这个名字,但现在看来这个名字似乎有些狭隘。因为他可以广泛应用于时间序列分析领域,用于时间序列特征的提取。而我们所熟知的TCN(时间卷积网络)的提出,相当于是正式将这种方法推广到时间序列领域,网络内容虽然稍有改变,但本质上无太大差别。本文下面主要以介绍Wavenet的模型思路为主(因为后面的图模型,主要还是基于此思路)。

因果卷积与膨胀因果卷积

基于时序的卷积基本就是普通的1维卷积,但又稍有不同。因为,对于时序数据,在卷积时应考虑到不能泄露未来信息,因此TCN使用需要使用因果卷积,即时刻t t t的输出只是时刻t t t与时刻t t t之前的数据进行卷积的结果。因果卷积层可视化如下图所示:

多元时间序列预测之(三)基于图神经网络的Graph-Wavenet与MTGNN
对于一个核大小为 c c c、深度为 m m m 的因果卷积网络,其感受野大小为 R = m ( c − 1 ) + 1 R=m(c-1)+1 R =m (c −1 )+1。为了提取长时间序列特征,需要非常大的卷积核或非常深的网络,然而大的卷积核将难以分辨短期的局部特征,深的网络将导致庞大的计算量。针对这种情况,可以使用膨胀卷积。

膨胀卷积对具有一定频率的下采样输入应用一个标准卷积核。例如,当膨胀因子为 2 2 2 时,它对每两步采样一次的输入应用标准卷积。让每一层的膨胀因子以 d ( d > 1 ) d(d>1)d (d >1 ) 的速率呈指数增长。假设初始膨胀因子为1 1 1,则核大小为 c c c、深度为 m m m 的膨胀卷积网络的感受野为 R = ( c − 1 ) ( d m − 1 ) / ( d − 1 ) + 1 R=(c-1)(d^m-1)/(d-1)+1 R =(c −1 )(d m −1 )/(d −1 )+1。这表明,网络的感受野大小将随着网络层数的增加而呈指数级增长。因此,使用这种膨胀方法,在相同的卷积核及网络层数下,可以获得更大的感受野,从而捕获更长的时间序列。膨胀因果卷积层可视化如下图所示。膨胀因果卷积用数学公式,可以表达为:
z ∗ f 1 × k = ∑ s = 0 k − 1 f 1 × k ( x ) z ( t − d × x ) z \ast f_{1 \times k}=\sum^{k-1}{s=0}f{1 \times k}(x)z(t-d \times x)z ∗f 1 ×k ​=s =0 ∑k −1 ​f 1 ×k ​(x )z (t −d ×x )
其中,z ∈ R T z \in{R^T}z ∈R T 为输入序列,f 1 × k ∈ R k f_{1 \times k}\in{R^k}f 1 ×k ​∈R k 为卷积核,d d d 为膨胀因子。

多元时间序列预测之(三)基于图神经网络的Graph-Wavenet与MTGNN
但其实,对于较短的时间序列,膨胀卷积也不是特别必要,需要自行根据问题调整膨胀因子。

; 残差连接与跳过连接

由于TCN的感受野依赖于网络深度 、卷积核大小和膨胀因子。一般情况下,为了提取时间序列叫短期的调整,卷积核都较小,而膨胀因子虽然可以减少计算,但其实际上也在一定程度上减少了信息量,一般也不会设置过高。因此,对于一条较长的时间序列,若想提取其不同维度的特征,就需要堆叠较深的卷积层。此时,Wavenet采用了残差连接的思想,以加速收敛,并使训练更深层的模型成为可能。

该模型的整体结构如下图所示:

多元时间序列预测之(三)基于图神经网络的Graph-Wavenet与MTGNN

其方框内的模块便是残差连接与跳过连接,我们先介绍这部分。图中的多个方框,是一个循环迭代的残差连接层,除第一层外,每层的输入都为前一层的输出,第一层的输入为初始的时间序列经过一次 1 × 1 1 \times 1 1 ×1 卷积处理的结果。

方框中的残差连接思路与之前介绍的相同,即 Y t = Y t − 1 + F t Y_t = Y_{t-1} + F_t Y t ​=Y t −1 ​+F t ​。其中 F t F_t F t ​ 是对输入序列进行膨胀因果卷积后的序列,这里使用了 σ \sigma σ 和 t a n h tanh t a n h 的门控机制,一个用于提取信息,另一个用与控制信息的传递量,图中的绿色叉指矩阵的元素乘。

而所谓的跳过连接,则是将 [ F 0 , F 1 , . . . F t , . . . ] [F_0, F_1,…F_t, …][F 0 ​,F 1 ​,…F t ​,…] 拼接起来,作为整个模块的最终输出。这个框架,完美地将残差连接与序列卷积融合在了一起,每一层卷积核所提取出的特征只focus on前一层的残差部分。

有同学读到这里可能会疑惑,为什么要使用门控机制,他的作用到底如何?还有为什么不直接把最后一层的 Y t Y_t Y t ​ 作为输出,而是将每一层的特征序列组合 [ F 0 , F 1 , . . . F t , . . . ] [F_0, F_1,…F_t, …][F 0 ​,F 1 ​,…F t ​,…] 作为输出? 这些答案其实,仁者见仁智者见智,我们现在无法通过理论给出答案,而TCN模型中,的的确确舍弃了这做法,有兴趣的炼丹师可以自行比较两种做法在自己数据集上的差异。

至此为止,我们已经复习完了Graph-Wavenet和MTGNN所需要的所有前置知识,下面进入正文。

3.Graph-Wavenet 模型

一般来说,图神经网络只适用于图结构数据。而对多元时间序列的时空图建模是分析系统中组件的空间关系和时间趋势的重要任务。现有的方法大多捕获对固定图结构的空间依赖性,假设实体之间的潜在关系是预先确定的。比如,在城市交通网中对各个道路车流量的预测,在这里各个道路之间的关系我们是预先知道的。这就可以很容易的构建事先的图结构。

然而,大多数情况下,显式的图结构(关系)并不一定反映了真正的依赖关系,真正的关系可能由于数据中的不完整的连接而缺失。比如多股票的价格预测中,我们一般认为股票之间是存在联系的,但是这种联系我们往往很难事先人工构建。

为了克服这些限制,Graph-Wavenet 通过开发一种新的自适应依赖矩阵并通过节点嵌入学习,模型可以精确地捕获数据中隐藏的空间依赖。对于层叠扩张的一维卷积分量,其接受域随层数的增加呈指数增长,Graph-Wavenet 能够处理非常长的序列。这两个组件无缝地集成在一个统一的框架中,整个框架以端到端的方式学习。我们直接给出其结构图:

多元时间序列预测之(三)基于图神经网络的Graph-Wavenet与MTGNN
有没有发现什么问题?哈哈,整个框架和Wavenet没什么区别,只不过 1 × 1 1 \times 1 1 ×1 卷积模块变成了一个图卷积模块(GCN)。

; 图卷积层(GCN)

图结构相关知识这里不做多解释,我们可以直接简单地用图邻接矩阵表示图结构。而本模型直接提出了自适应依赖矩阵来自行构建图邻接矩阵,即自行发现多元时间序列两两之间的关系。其公式如下:
A ^ = S o f t M a x ( E 1 E 2 T ) \hat{A}=SoftMax(E_1E^T_2)A ^=S o f t M a x (E 1 ​E 2 T ​)
E1是源节点嵌入,E2是目标节点嵌入。A ^ i j \hat{A}_{ij}A ^i j ​ 表示了源节点 i i i 对目标节点 j j j 的信息传递量。而这里的节点嵌入方式,可以理解为对每条时间序列提取出特征向量,具体的特征向量提取方式也并不唯一。

图卷积结果为:
Z = ∑ k = 0 K A ^ k X W k Z = \sum^K_{k=0}\hat{A}^kXW_k Z =k =0 ∑K ​A ^k X W k ​
其中,K是扩散卷积层中的概念,代表了K个不同的扩散步长。(论文:Adaptive graph convolutional neural networks)不愿深究的同学,可以直观使用下式:
Z = A ^ X W Z = \hat{A}XW Z =A ^X W
其中,X X X 是 N ∗ F NF N ∗F 维的图信号矩阵,其中N是多元时间序列的个数,F是其特征维度。A ^ \hat{A}A ^ 是 N ∗ N NN N ∗N 维,代表多元时间序列两两直接的信息传递量。W W W 是参数矩阵。这个公式应该不难理解,如果实在想不通,可以自行带入矩阵元素,使用元素乘法来理解。

模型其他的地方,前面已经叙述了,这里便不再多说。

4.MTGNN 模型

在Graph-Wavenet 之后,Wu等人于2020年正式提出用于多元时间序列预测的图神经网络框架(MTGNN),开创了图神经网络在多元时间序列预测的先河。MTGNN具有三个核心组件模块——图形学习层、图卷积模块和时间卷积模块。其结构如下图:

多元时间序列预测之(三)基于图神经网络的Graph-Wavenet与MTGNN
其实仔细看一看,我们就能发现,这个图和Graph-Wavenet的框架图差距也并不大,只不过是将残差连接模块从堆叠的”方块”横向展开了。模型使用的仍然是残差连接和跳过连接架构。

; 图学习层

首先,图学习层用来学习多个变量之间的邻接矩阵,自适应地从时序数据中捕获变量之间的空间关系。与之前不同的是,该模型中考虑到在多元时间序列预测中,通常节点的变化之间存在单向的因果关系,即一个节点状态的变化会导致另一个节点状态的变化。因此,图形学习层被设计来专门提取单向关系:
M 1 = t a n h ( α E 1 θ 1 ) M 2 = t a n h ( α E 2 θ 2 ) A = R e L U ( t a n h ( α ( M 1 M 2 T − M 2 M 1 T ) ) ) \begin{aligned} M_1 &= tanh(\alpha E_1\theta_1) \ M_2 &= tanh(\alpha E_2\theta_2) \ A &= ReLU(tanh(\alpha(M_1M^T_2-M_2M^T_1))) \end{aligned}M 1 ​M 2 ​A ​=t a n h (αE 1 ​θ1 ​)=t a n h (αE 2 ​θ2 ​)=R e L U (t a n h (α(M 1 ​M 2 T ​−M 2 ​M 1 T ​)))​
其中,E 1 , E 2 E_1, E_2 E 1 ​,E 2 ​ 表示节点嵌入,θ 1 , θ 2 \theta_1,\theta_2 θ1 ​,θ2 ​ 是模型参数,α \alpha α 控制激活函数饱和速率的超参数。 论文中还提出了对每个时间序列变量只保留其前k个相邻关系变量的方法,这里不再详述。
这里的图学习层和上文的自适应图邻接矩阵 A ^ \hat{A}A ^,作用并不差别。但构建方法有所差别,这里被设计用来提取单向关系,即变量 i i i 与变量 j j j 之间只有一条单向信息传递的边,A A A 的计算过程中,最核心部分是计算【由源节点 i i i 向目标节点 j j j 的传递信息量】和【由目标节点 j j j 向源节点 i i i 传递的信息量】之间的差值,该差值越大说明节点间的单向关系越强。即,在Wavenet的模型中,如果计算出 i i i 向 j j j 传递的信息量为10,j j j 向 i i i 传递的信息量为8,则在MTGNN中,我们只取单向关系,认为 i i i 向 j j j 传递的信息量为2, j j j 向 i i i 传递的信息量为0。通常来说,这种构建思路是符合我们的认知的。比如两只走势相近的股票,突然有一只(因为新行情)价格上涨,接下来往往会出现的情况是另一只被带动上涨,而不是上涨的那一只又被拉下来。

图卷积模块

由于图学习层由常见的双向关系改为了单向关系,因此图卷积模块需要相应地分开考虑每个节点流入与流出的信息。这里,图卷积模块由两个混合跳(Mix-hop)传播层组成,一个处理节点的流入信息,一个处理节点的流出信息,相加后便得到净流入信息。下图显示了图卷积模块和混合跳传播层的体系结构。该模块结构如下图所示:

多元时间序列预测之(三)基于图神经网络的Graph-Wavenet与MTGNN
所谓的混合跳传播层,并不难理解,只是图节点的信息沿着单向传递方向进行多次传递而已。

; 时间卷积模块

时间卷积模块相必也不用多说了,只是使用了多个不同的卷积核,本质上和前面提到的也没有太大差别。

多元时间序列预测之(三)基于图神经网络的Graph-Wavenet与MTGNN

Original: https://blog.csdn.net/qq_37373209/article/details/124222355
Author: RicardoOzZ
Title: 多元时间序列预测之(三)基于图神经网络的Graph-Wavenet与MTGNN

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

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

(0)

大家都在看

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