RNN的时间序列预测
在本文中,我想向您概述为预测时间序列数据而构建的RNN模型。这项工作的主要目标是设计一个模型,该模型不仅可以预测下一时间步长,而且可以生成一系列预测,并利用多个行驶时间序列以及一组静态(标量)特征作为输入。
模型架构
在较高的层次上,该模型利用了相当标准的序列到序列递归
神经网络架构。它的输入是预测时间序列的过去值与其他驾驶时间序列值(可选)和时间戳嵌入(可选)的组合。如果静态特征可用,则模型也可以利用它们来调节预测。
编码器
编码器用于将时间序列输入及其各自的时间戳嵌入到固定大小的矢量表示中。它还为各个时间步生成潜在向量,稍后将其用于引起解码器注意。为此,我利用了多层单向递归神经网络,其中除第一个以外的所有层都是残留的。
在某些情况下,您输入序列过长,可能会由于GPU内存问题而导致训练失败或使训练速度显着降低。为了解决这个问题,模型将输入序列与一维卷积进行卷积 ,该卷积具有相同的内核大小和跨度,然后再将其馈送到RNN编码器。这将RNN输入减少了n倍,其中n是卷积核大小。
语境
上下文层位于输入编码器和解码器层之间。它将编码器的最终状态与静态特征和静态嵌入连接起来,并生成固定大小的向量,然后将其用作解码器的初始状态。
解码器
解码器层实现为自回归递归神经网络。每个步骤的输入是先前序列值和该步骤的时间戳嵌入的串联。将时间戳嵌入提供给解码器有助于模型学习季节性数据中的模式。
在第一步,编码器将上下文作为初始单元格值,并将初始序列值和嵌入的第一时间戳的串联作为单元格输入。然后,第一层发出关注查询,该查询被馈送到关注模块,该模块输出一个状态,该状态随后在下一步中用作单元状态。解码器的较低层不引起注意。解码器的输出是原始预测值,然后将原始预测值与该步骤的时间戳嵌入一起馈入下一步骤。
注意
注意允许解码器在解码期间选择性地访问编码器信息。它是通过学习一个加权函数来实现的,该函数将先前的单元状态和编码器输出列表作为输入,并为每个编码器输出输出标量权重。然后,它获取编码器输出的加权总和,将其与查询连接,并将非线性投影作为下一个单元状态。
题库