基于并行神经网络模型LDformer的长时间序列预测方法

文档序号:32115243发布日期:2022-11-09 06:01阅读:246来源:国知局
基于并行神经网络模型LDformer的长时间序列预测方法
基于并行神经网络模型ldformer的长时间序列预测方法
技术领域
1.本发明涉及电力预测领域,是一种基于并行神经网络模型ldformer的长时间序列预测方法。


背景技术:

2.随着大数据时代的到来,数据已经渗透到每一个行业。各种类型的传感器和应用程序连续收集了大规模的时间序列,例如零售商店和超市的货品销量,铁路、航空部门的客流量,城市的交通流量,电力部门的负荷需求,金融领域的股票价格,气象领域的天气情况等。电力分配问题是电网根据顺序变化的需求管理电力分配到不同用户区域。但要预测特定用户区域的未来需求是困难的,因为它随工作日、假日、季节、天气、温度等的不同因素变化而变化。现有时序预测方法不能适用于长期真实世界数据的高精度长期预测,并且任何错误的预测都可能产生严重的后果。因此当前没有一种有效的方法来预测未来的用电量,管理人员就不得不根据经验值做出决策,而经验值的阈值通常远高于实际需求。保守的策略导致不必要的电力和设备折旧浪费。值得注意的是,变压器的油温可以有效反映电力变压器的工况。因此,长时间序列预测建模是解决该问题的关键。然而长时间序列预测因为其历史数据量大、计算复杂性高,预测精度要求高,大多数时间序列模型都针对于短期预测,对长期时间序列并不适用,一直以来并没有取得太好的结果,因此长时间序列预测仍面临着严峻的挑战。为了解决上述问题,对长时间序列预测的研究尤为重要。
3.目前对于时间序列预测的研究,大部分都基于机器学习和深度学习短时间序列预测。在机器学习研究中,很多学者采用arima、svm、但这些模型相对来说更适应平稳时间序列,但实时序列数据中并没有几乎纯粹的平稳数据,因此,该模型的应用收到数据特点的限制,通用性较差。也有学者提出贝叶斯时间因子分解(btf)框架,用于在存在缺失值的情况下对特定时空数据中的多维时间序列进行建模,但机器学习方法针对复杂的预测问题结果并不能得到更加精确的结果。随着深度学习的发展,研究者们发现深度学习更适用复杂性的问题。近些年,transformer被应用到很多领域做长时间序列预测任务。但方法时间复杂高且参数量大。因此,有学者提出了transformer 的改进算法informer,但其注意力操作可能会失去序列中一些关键连接,且预测精度还有待提高。因此本发明在transformer的改进算法informer基础了做了进一步改进。


技术实现要素:

4.本发明提高了长时间序列预测的预测精度,克服了传统transformer模型时间复杂度高,参数量大,运行速度慢,易丢失序列间关键连接等缺点,提出了一种基于并行神经网络模型ldformer的长时间序列预测方法,根据已有历史数据对未来进行预测。
5.本发明主要包括四个部分:(1)确定模型的输入输出。(2)数据集预处理。(3) 确定数据的时间特性并编码。(4)构建面向长时间序列预测的并行神经网络模型 ldformer。(5)方法有效性验证。
6.下面分别介绍以上五部分的内容:
7.1、确定模型的输入输出。电力数据集作为本方法的输入,其中每个数据点由目标值油温“oil temperature(ot)”和6个不同类型的外部负载值“high useful load(hufl)”、“high useless load(hull)”、“middle useful load(mufl)”、“middle useless load(mull)”、“low useful load(lufl)”、“low useless load(lull)”组成。选择合适的训练数据集,以6个外部负载值来预测目标值“ot”。通过从训练集中采集六个特征{x
(1)
,x
(2)
,x
(3)
,x
(4)
,x
(5)
,x
(6)
}的m个样本的小批量数据集来预测目标值“ot”的n个序列
8.2、数据集预处理。数据集预处理主要包括标准化处理。由于电力测量中采集到的时序数据之间存在异常值和较多噪音,用标准化可以间接通过中心化避免异常值和极端值的影响。
9.3、确定数据的时间特性从多角度进行编码。在长时间序列预测建模问题中,不仅需要局部时序信息还需要层次时序信息,如星期、月、年,以及突发时间戳信息(事件或某些节假日等)。常规自注意力机制很难直接适配,可能会带来编码器和解码器之间查询和键之间的错误匹配问题,最终影响预测效果。
10.4、构建面向长时间序列预测的并行神经网络模型ldformer。ldformer由多角度考虑的嵌入层(embedding)、长短期记忆网络(lstm)、编码器(encoder)、解码器(decoder)组成。其中嵌入层(embedding)从三个角度进行考虑,分别做了数据编码、位置编码以及时间戳编码,将维度分别扩充到统一维度d-model。lstm接收输入数据进行特征提取,获得时间序列中的深层表达能力。紧接着进入编码器,编码器采用多通道并行模式,以提高模型鲁棒性,同时使用结合unidrop技术的概率稀疏自注意力,适当减少参数量和降低过拟合,来接收大量长序列输入,在编码器模块间加入蒸馏操作,来减少编码器的特征映射具有值v的冗余组合。解码器用于接受长序列输入,以生成方式立即预测到输出元素。
11.5、方法有效性验证。通过在真实的电力数据集上的实验证明,并对比其他前沿的研究,本发明在长时间序列预测问题中的预测精度显著高于其对比方法,并且针对算法的不足也做了改进。
12.本发明为实现上述目的所采取的详细实施步骤如下:
13.步骤1:根据电力数据集确定模型的输入输出,并选择合适的比例划分数据集。定义模型输入为六个负载特征和目标值{x
(1)
,x
(2)
,x
(3)
,x
(4)
,x
(5)
,x
(6)
,y},其中六个负载特征分别是“high useful load(hufl)”、“high useless load(hull)”、“middleuseful load(mufl)”、“middle useless load(mull)”、“low useful load(lufl)”、“low useless load(lull)”。目标值为油温“oil temperature(ot)”。
14.步骤2:数据预处理。首先对输入的训练数据集进行标准化处理。标准化方法使用standardscaler()标准化数据,保证每个维度数据方差为1,均值为0。使得测试结果不会被某些维度过大的特征值而主导。其转化函数为其中μ为所有样本数据的均值,σ为所有样本数据的标准差。之后转入步骤3。
15.步骤3:经过步骤2所得的训练数据集进入嵌入层embedding。在长时间序列预测建
模问题中,不仅需要局部时序信息还需要层次时序信息。因此本发明从三个角度进行考虑,分别做了数据编码、位置编码以及时间戳编码,将维度分别扩充到统一维度d-model,求和得到最终embedding结果。步骤3.1为数据编码,步骤3.2为位置编码,步骤3.3为时间戳编码。
16.步骤3.1:数据编码。数据中的embedding使用一维卷积将数据转换为统一维度d-model。其公式如下:
17.de=conv1d(x)
ꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
18.步骤3.2:位置编码。这里的输入序列中的元素是一起处理的,不同于rnn 一个一个处理,虽然加快了速度,但是忽略了序列中元素的先后关系,因此加入为位置编码,公式如下所示:
[0019][0020][0021]
步骤3.3:时间戳编码。时间戳编码的方法有month_embed、day_embed、 weekday_embed、hour_embed和minute_embed多种,本发明使用的数据集时间片分别为15分钟和1小时,因此选用minute_embed和hour_embed,得到时间戳编码结果。
[0022]
步骤4:构建面向长时间序列预测的并行神经网络模型ldformer。在对数据进行简单划分和处理后,本发明构建了并行神经网络模型ldformer进行了时序预测,数据经过嵌入层后,主要有以下步骤:
[0023]
步骤4.1:使用lstm接收输入数据进行特征提取,获得时间序列中的深层表达能力。主要原因是lstm在循环神经网络的基础上增加门控机制(输入门、遗忘门和输出门)以确定信息的存储和丢弃,这种方式解决了普通循环神经网络在长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,相比普通的rnn,lstm能够在更长的序列中有更好的表现。
[0024]
步骤4.2:构建编码器模块。编码器的设计用于提取时间序列输入的鲁棒性远程依赖,这里的编码器整体架构与transformer大致相同,主要包含两个子层,多头注意力层(结合unidrop的概率稀疏注意力机制)和两个线性映射组成的前馈层,两个子层后都带有一个批量归一化层,子层之间有跳跃连接。不同的是编码器采用多通道并行模式,分别取时序数据长度为l,l/2,l/4,l/8四个通道并行执行。结合蒸馏操作,以提高模型鲁棒性。蒸馏操作主要使用一维卷积,将上一层的输出送至下层的多头注意力模块之前做维度修剪和降低内存占用。其中蒸馏操作总比 encoder层少一层。其中编码器中的注意力使用本发明构建的结合unidrop的概率稀疏自注意力机制。
[0025]
步骤4.2.1:结合unidrop的概率稀疏自注意力机制。考虑到时间复杂度及失去序列中一些关键连接的风险,本发明提出了一种结合unidrop的概率稀疏注意力机制,规范的自注意力机制定义为将查询(q)和一组键、值(k、v)对映射到输出,其中q、k、v以及输出都是向量。输出作为v的加权和计算,其中分配给每个v的权重由q与相应的k的兼容函数计算。其公式为:
[0026][0027]
其中,d是输入维度。由于注意力机制中参数量较多,且容易发生过拟合及失去序列间关键连接,所以本发明引入unidrop技术。其中的feature dropout(fd)可以以一定的概率随机抑制网络中的某些神经元。fd-1 应用于注意权重a,用于提高多头注意的泛化。fd-2应用在feed-forward network子层的两个线性变换之间的激活函数之后。然而,fd-1直接应用于权重a,可能会下降值a(i~j),意味着忽略标记i和标记j之间的关系,因此更大的fd-1意味着从序列位置丢失一些关键信息的风险更大。为了减轻这种潜在风险,在计算注意力之前,在q、k和v分别添加了dropout。fd-4用于线性变换之前的输出特征。dropout 后的q,k,v的第i行qi,ki,vi中,第i个q的注意力被定义为以概率形式的内核平滑器,如下公式所示:
[0028][0029]
其中,第i个查询对所有键的注意力被定义为概率输出是其值与v的组合。注意力机制支持相应查询注意力的概率分布远离均匀分布。如果但如果p(kj|qi)接近均匀分布,自注意力就会变成v值的总和,成为输入的冗余。因此,通过分布p和q之间的“相似性”来区分“重要”查询,可以有效地避免这个问题,使用kl散度来测量“相似性”,公式如下:
[0030][0031]
除去常数,可将第i个查询的稀疏度度量定义为:
[0032][0033]
其中第一项是qi在所有键的上的非对称指数核求和再做对数,即 log-sum-exp(lse),第二项是它们的算术平均值。如果第i个查询的较大,就说明它的注意力概率p更加“多样化”,并且在长尾自注意分布的头部字段中包含主导点积对的概率更高。然而,遍历测量的所有查询的m(qi,k)需要计算每个点积对,也就说明需要二次o(lqlk),则使用lse操作也具有潜在的数值稳定性问题。基于此,又对上面公式进行改进,得到最终稀疏度度量公式如下:
[0034][0035]
由此取得概率较大的部分,得到结合unidrop的概率稀疏自注意力。公式如下:
[0036][0037]
其中是q与相同大小的稀疏矩阵,仅包含稀疏度量下的top-u查询,即取其中概率
较大的部分。这里设置u=c
·
lnlq,由恒定得采样因子c控制。
[0038]
步骤4.2.2:蒸馏操作。作为注意力机制的自然结果,编码器的特征映射具有值v的冗余组合。因此,在下一层中,本发明使用提取操作对具有支配特征的优势特征进行特权化,并生成一个集中的自我注意特征图,它会急剧修剪输入的时间维度。卷积神经网络可以很好地识别出数据中的简单模式并在更高级的层中生成复杂的模式。一维卷积对于从位置不具有高度相关性的数据中获得感兴趣特征非常有效,且一维卷积可以很好的应用于传感器数据的时间序列分析。因此,选用一维卷积来提取特征,设置其卷积核为3x3。蒸馏操作从第j层向前推进到第(j+1)层。其公式如下所示:
[0039][0040]
其中[
·
]
ab
包含多头注意和注意块中的基本操作,conv1d()使用leakyrelu()激活函数在时间维度上执行。leakyrelu()函数是relu的变体,对输入小于0部分的反应有所变化,减轻了relu的稀疏性,同时也继承了relu的优点,可以加快收敛速度,缓解梯度消失、爆炸问题,简化计算。leakyrelu()激活函数公式如下所示:
[0041]
leakyrelu(x)=max(0,x)+negative_slope
·
min(0,x)
ꢀꢀꢀꢀꢀꢀ
(11)
[0042]
步骤4.3:构建解码器。解码器通过一个正向过程生成时间序列输出,其部分结构可以参考transformer中的解码器结构。解码器包括两层注意力机制和一个线性映射的前馈层部分。解码器得输入向量为:
[0043][0044]
其中是开始标记,是目标序列的占位符(其标量设置为0),第一层attention为结合unidrop的概率稀疏自注意力,如步骤4.2.1。设置掩码多头自注意力为-∞,经过以防止每个位置都关注未来位置,从而避免了自回归。第二层attention为普通自注意力。其中生成性推理被用来缓解长期预测中的速度骤降。两层注意力后都有一个add&norm层。add&norm是由add和norm两部分组成,其计算公式如下:
[0045]
layernorm(x+multiheadattention(x))
ꢀꢀꢀꢀꢀꢀ
(13)
[0046]
最后,通过一个全连接层直接输出预测结果。
[0047]
步骤5:ldformer模型的训练和优化。根据步骤4构建的ldformer模型,对模型进行训练和优化使模型达到最优状态。在预测目标序列时选择mse损失函数,从解码器的输出传回整个模型,使用adam优化器对整个模型进行优化,学习率从设定的最初值开始递减,每个时期衰减2倍,设置总的epoch值,适当时提前停止。得到模型训练得到的预测值。将真实值与预测值进行对比,计算预测值的mae、 mse和rmse指标。预测值的指标公式如下:
[0048][0049][0050][0051]
其中y为真实数据,为预测数据,n为数据集的大小。
[0052]
本发明的关键效果在于提出了并行神经网络模型ldformer,解决了电量预测中的长时间序列预测问题,将informer框架与lstm结合,充分考虑了时间序列的深层特征;发明了一种结合unidrop的概率稀疏自注意力机制,避免了原有注意力机制参数量大及会失去序列间关键连接的风险。本发明实现过程简单,不仅可以应用于电力数据集,也可用于其他领域的时序数据集,并且能够很好的适用于大量且复杂的数据场景。
附图说明
[0053]
图1是本发明ldformer的模型框架图。
[0054]
图2是本发明多角度考虑的embedding层结构图。
[0055]
图3是本发明并行编码器模块的结构图。
[0056]
图4是本发明注意力机制中unidrop的整体结构。
[0057]
图5是本发明解码器的框架图。
[0058]
图6是四种模型不同预测长度的真实值与预测值的平均误差error绘制成的直方图。
[0059]
图7是两个数据集在不同长度下在四种模型中随学习率变化的loss收敛图。
[0060]
图8是四种模型在一个数据集中的的运行时间变化图。
具体实施方式
[0061]
下面结合附图和实例对本发明进一步说明。
[0062]
本发明针对电量预测中的长时间序列预测问题进行了建模。提出了一种面向长时间序列的并行神经网络模型ldformer,该方法适用于大多数领域采集到的时序数据,例如天气预测、空气质量预测、交通流预测等。本发明在pycharm环境中通过 python语言来实现。实例场景如图1所示,图1是本发明ldformer的模型框架图,图中包括了embedding层,lstm,编码器,解码器以及最后的全连接层输出。编码器模块使用四路并行的模型,将输出结果拼接输入到解码器中,解码器解码后通过全连接层输出预测结果。具体实施如下:
[0063]
步骤1:以电力数据集为例,为解决长时间序列预测问题,本发明提出面向长时间序列预测的并行神经网络模型ldformer。首先确定模型的输入输出,选择合适的训练数据集,模型输入为六个负载特征和目标值 {x
(1)
,x
(2)
,x
(3)
,x
(4)
,x
(5)
,x
(6)
,y},通过从训练集中采集六个特征 {x
(1)
,x
(2)
,x
(3)
,x
(4)
,x
(5)
,x
(6)
}的m个样本的小批量数据集来预测目标值“ot”的n个序列之后转入步骤2。
[0064]
步骤2:数据预处理。首先对输入的训练数据集使用standardscaler()标准化,保证每个维度数据方差为1,均值为0。使得测试结果不会被某些维度过大的特征值而主导。其转化函数为其中μ为所有样本数据的均值,σ为所有样本数据的标准差。之后转入步骤3。
[0065]
步骤3:经过步骤2所得的数据集进入多角度考虑的嵌入层embedding。分别进行数据编码、位置编码以及时间戳编码,将维度分别扩充到统一维度512,求和得到最终embedding结果。步骤3.1为数据编码,步骤3.2为位置编码,步骤3.3 为时间戳编码。
[0066]
步骤3.1:数据编码。数据中的embedding使用一维卷积将数据转换为统一维度512。其公式为
[0067]
de=conv1d(x)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(17)
[0068]
步骤3.2:位置编码。这里的输入序列中的元素是一起处理的,不同于rnn 一个一个处理,虽然加快了速度,但是忽略了序列中元素的先后关系,因此加入为位置编码,公式如下所示:
[0069][0070][0071]
步骤3.3:时间戳编码。时间戳编码的方法有month_embed、day_embed、 weekday_embed、hour_embed和minute_embed多种,本发明使用的数据集时间片分别为15分钟和1小时,因此选用minute_embed和hour_embed,得到时间戳编码结果。
[0072]
步骤4:构建面向长时间序列预测的并行神经网络模型ldformer。数据经过嵌入层后,主要有以下步骤:
[0073]
步骤4.1:使用lstm接收输入数据进行特征提取,获得时间序列中的深层表达能力。lstm在循环神经网络的基础上增加门控机制(输入门、遗忘门和输出门)以确定信息的存储和丢弃,这种方式解决了普通循环神经网络在长序列训练过程中的梯度消失和梯度爆炸问题。
[0074]
步骤4.2:构建编码器模块。编码器的设计用于提取时间序列输入的鲁棒性远程依赖,主要包含两个子层,多头注意力层(结合unidrop的概率稀疏注意力机制)和两个线性映射组成的前馈层,两个子层后都带有一个批量归一化层,子层之间有跳跃连接。编码器采用多通道并行模式,分别取时序数据长度为l,l/2, l/4,l/8四个通道并行执行。结合蒸馏操作,以提高模型鲁棒性。蒸馏操作主要使用一维卷积,将上一层的输出送至下层的多头注意力模块之前做维度修剪和降低内存占用。其中蒸馏操作总比encoder层少一层。其中编码器中的注意力使用本发明构建的结合unidrop的概率稀疏自注意力机制。
[0075]
步骤4.2.1:结合unidrop的概率稀疏自注意力机制。unidrop技术中的feature dropout(fd)可以以一定的概率随机抑制网络中的某些神经元。fd-1应用于注意权重a,用于提高多头注意的泛化。fd-2应用在feed-forward network子层的两个线性变换之间的激活函数之后。然而,fd-1直接应用于权重a,可能会下降值a(i~j),意味着忽略标记i和标记j之间的关系,因此更大的fd-1意味着从序列位置丢失一些关键信息的风险更大。为了减轻这种潜在风险,在计算注意力之前,在q、k和v 分别添加了dropout。fd-4用于线性变换之前的输出特征。dropout后的q,k,v 的第i行qi,ki,vi中,第i个q的注意力被定义为以概率形式的内核平滑器,如下公式所示:
[0076]
[0077]
其中,第i个查询对所有键的注意力被定义为概率输出是其值与v的组合。注意力机制支持相应查询注意力的概率分布远离均匀分布。如果但如果p(kj|qi)接近均匀分布,自注意力就会变成v值的总和,成为输入的冗余。因此,通过分布p和q之间的“相似性”来区分“重要”查询,可以有效地避免这个问题,使用kl散度来测量“相似性”,公式如下:
[0078][0079]
除去常数,可将第i个查询的稀疏度度量定义为:
[0080][0081]
其中第一项是qi在所有键的上的非对称指数核求和再做对数,即 log-sum-exp(lse),第二项是它们的算术平均值。如果第i个查询的较大,就说明它的注意力概率p更加“多样化”,并且在长尾自注意分布的头部字段中包含主导点积对的概率更高。然而,遍历测量的所有查询的m(qi,k)需要计算每个点积对,也就说明需要二次o(lqlk),则使用的lse操作也具有潜在的数值稳定性问题。基于此,又对上面公式进行改进,得到最终稀疏度度量公式如下:
[0082][0083]
由此取得概率较大的部分,得到结合unidrop的概率稀疏自注意力。公式如下:
[0084][0085]
其中是q与相同大小的稀疏矩阵,仅包含稀疏度量下的top-u查询,即取其中概率较大的部分。设置u=c
·
lnlq,由恒定得采样因子c控制,本发明设置c等于5。
[0086]
步骤4.2.2:蒸馏操作。作为注意力机制的自然结果,编码器的特征映射具有值 v的冗余组合。因此,在下一层中,使用蒸馏操作对具有支配特征的优势特征进行特权化,并生成一个集中的自我注意特征图,修剪输入的时间维度。一维卷积对于从位置不具有高度相关性的数据中获得感兴趣特征非常有效,且一维卷积可以很好的应用于传感器数据的时间序列分析。因此,选用一维卷积来提取特征,设置其卷积核为3x3。蒸馏操作从第j层向前推进到第(j+1)层。其公式如下所示:
[0087][0088]
其中[
·
]
ab
包含多头注意和注意块中的基本操作,conv1d()使用leakyrelu()激活函数在时间维度上执行。leakyrelu()激活函数公式如下所示:
[0089]
leakyrelu(x)=max(0,x)+negative_slope
·
min(0,x)
ꢀꢀꢀꢀꢀꢀꢀ
(26)
[0090]
步骤4.3:构建解码器。解码器通过一个正向过程生成时间序列输出,其部分结构可以参考transformer中的解码器结构。解码器包括两层注意力机制和一个线性映射的前
馈层部分。解码器得输入向量为:
[0091][0092]
其中是开始标记,是目标序列的占位符(其标量设置为0),第一层attention为结合unidrop的概率稀疏自注意力,如步骤4.2.1。设置掩码多头自注意力为-∞,经过以防止每个位置都关注未来位置,从而避免了自回归。第二层attention为普通自注意力。两层注意力后都有一个add&norm层。add&norm 是由add和norm两部分组成,其计算公式如下:
[0093]
layernorm(x+multiheadattention(x))
ꢀꢀꢀꢀꢀꢀꢀ
(28)
[0094]
最后,通过一个全连接层直接输出预测结果,如过预测目标序列为24,则输出24。
[0095]
步骤5:采用电力数据集进行仿真,完成ldformer模型的训练和优化。
[0096]
本发明设置在不同时间划分下的数据集中以六个负载特征的96条历史数据预测目标数据的24条数据,36条数据,48条数据,其真实值与预测值的误差对比图如图6所示。
[0097]
根据预测模型获得的预测值,计算预测值的mae、mse和rmse指标。预测值的指标公式如下:
[0098][0099][0100][0101]
其中y为真实数据,为预测数据,n为数据集的大小。
[0102]
仿真在同一数据集生成预测值的条件下,通过mae、mse和rmse这三项指标说明模型的性能,并对比了预测不同长度数据的模型性能结果,也分别从模型的损失值,运行时间上做了充分的对比。利用折线图来展现结果,如图7和图8 所示。主要的仿真参数如下:
[0103]
网络结构:ldformer
[0104]
批量大小:64
[0105]
学习率:1e-4
—1.25e-05
[0106]
迭代次数:最大为10,适当时停止
[0107]
优化算法:adam
[0108]
损失函数:mse 。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1