技术领域
[0001] 本
发明涉及自然语言智能处理领域,具体地,涉及一种基于Transformer结构的负荷预测方法。
背景技术
[0002] 时序建模利用过去一段时间内某事件的特征(包括时间特征和固有特征)等来预测未来一段时间内该事件的一些或某些特征。与通常的回归类预测问题不同的是,负荷预测的输入顺序对预测结果的影响非常大,输入模型的特征顺序不一致可能导致模型无法正常预测。所以清洗和对齐时序数据以保证输入模型的数据一致性一直是该类问题中最耗时、最繁琐的工作。传统的时序建模主要分为基于自回归的
预测模型、基于深度循环网络的预测模型、基于时间卷积的预测模型和基于
模糊逻辑的预测模型。其中自回归中最著名的是ARIMA(集成滑动平均的
自回归模型)。由于线性模型表达能
力的局限性,对于复杂的非线性关系的时序建模并不友好,所以出现了深度循环网络和时间卷积的预测方法。这两类方法缺乏对时间序列长跨度特征的关注,对长序列预测的
精度不高。为了改善长序列的建模问题,在
自然语言处理中提出了以注意力机制为主体架构的Transformer模型,解决了长文本的建模问题。而传统时序模型因为需要按时序依次输入训练和预测数据,导致了数据预处理复杂、模型并行化程度不高导致的训练速度慢等问题,且在最新的各类数据集上效果没有太大提升。
发明内容
[0003] 本发明提供一种基于Transformer结构的负荷预测方法,目的是解决在自然语言处理中,传统时序模型数据预处理复杂、模型并行化程度不高导致的训练速度慢,以及在最新的各类数据集上效果没有太大提升的技术问题。
[0004] 为实现上述发明目的,本发明提供了一种基于Transformer结构的负荷预测方法,所述方法包括:
[0005] 步骤1:采集历史数据并存储;
[0006] 步骤2:预处理采集的历史数据,基于预处理后的历史数据得到训练集和测试集;
[0007] 步骤3:建立负荷预测模型;
[0008] 步骤4:使用训练集和测试集训练和测试负荷预测模型,得到训练后的负荷预测模型;
[0009] 步骤5:将与历史数据同类型的待预测数据输入训练后的负荷预测模型,输出预测结果。
[0010] 其中,本发明在Tranformer
基础上增加了Extended Mask模
块,并首次把该类模型应用到时序回归和预测问题上。
[0011] 其中,待预测数据的类型包括:电力数据、交通数据、天气数据。
[0012] 优选的,所述步骤2具体包括:基于采集的历史数据,建立原始数据特征表,标注原始数据特征表中数据的辅助特征,汇总标注后的原始数据特征表建立汇总数据表,归一化处理汇总数据表中每一列的特征值,获得处理后的汇总数据表,划分处理后的汇总数据表得到训练集和测试集。
[0013] 优选的,负荷预测模型包括:
编码器和
解码器,编码器对输入的序列特征经由注意力模块加权,并经由前向传播网络后转化为包含输入信息的隐向量序列;解码器对目标序列和编码器输出的隐向量之间用注意力模块加权,并依次输出整个需要预测的负荷序列。
[0014] 优选的,注意力模块用于求取时序中每个输入与其余输入的相关性,注意力模块同时嵌入在编码器和解码器中,以加强编码器和解码器捕捉序列特征的能力。
[0015] 优选的,自注意力的计算如公式2、3、4所示:
[0016] eji=a(Keyi,Queryj) (2)
[0017]
[0018]
[0019] 其中,eji为第i个Key和第j个Query的注意力得分,Keyi为第i个Key,Queryj为第j个Query,αji为归一化后的eji,cj为第i个Value加权后的值,Valuei为第i个Value,a是计算相似度的函数,Key,Query分别是计算注意力的输入的“密钥”和“查询”序列,在编码器中两者一样,均为输入序列特征,e,α分别是相似度得分和对相似度得分进行softmax归一化后的注意力得分,Value是欲加权的张量,在编码器中也是输入序列,c是加权后得到的张量,i,j分别是张量中进行注意力的维度。
[0020] 优选的,在解码器中加入目标序列对隐向量序列的外部注意力,外部注意力意为负荷预测模型内部输出的隐向量和负荷预测模型外部输入目标序列之间进行的注意力。
[0021] 优选的,所述负荷预测模型中设有Mask模块,用于遮挡编码器输入及解码器的外部注意力部分输入。
[0022] 优选的,所述负荷预测模型中设有Mask模块,用于在编码器计算过Key,Query的点积后,得到一个(序列长度x序列长度)的方阵,采用一个三
角形的矩阵遮挡当前输入之后时间序列的特征。
[0023] 优选的,前向传播网络由多个全连接层和激活层构成。
[0024] 优选的,利用公式5所示的代价函数训练和调优负荷预测模型:
[0025]
[0026] 其中, 为第i个样本的预测值,yi为第i个样本的真实值,t为输入序列长度,λ为平滑超参数,表示第i个样本,根据随机梯度下降
算法,找到使上述公式5中loss最小的模型参数,得到训练后的负荷预测模型。
[0027] 时序预测对于电力部
门,交通部门的日常调度甚至天气预报等应用都有重要意义,本发明结合了用于自然语言处理的Transformer的优点,大大提高了长序列的预测准确率。
[0028] 同时本发明增加了Extended Mask模块,使得训练时数据可以整体输入而不用像原版Transformer一样在时间上滑动,大大减少了该类问题数据预处理的工作量和出错概率。
[0029] 相较于传统的循环神经网络(RNN)模型,因为用高效的注意力模块替代了循环模块,大大提高了模型的并行化程度,极大缩短了模型训练时间。
[0030] 同时在本发明中用动态的时序特征替换了原版Transformer中的固定的Word Embedding,在实际任务中更容易处理和建模。
[0031] 本发明提供的一个或多个技术方案,至少具有如下技术效果或优点:
[0032] 本发明在训练速度上明显优于参数个数相近的深度循环神经网络系列模型(速度提升30%以上),并在测试精度上达到98.2%以上,高于深度循环神经网络,时间卷积网络,模糊逻辑预测,自回归滑动平均等算法。在预测阶段,本发明可预测任意时间序列长度,而模糊逻辑,时间卷积等算法只能挨个对序列内目标值进行预测。
附图说明
[0033] 此处所说明的附图用来提供对本发明
实施例的进一步理解,构成本发明的一部分,并不构成对本发明实施例的限定;
[0034] 图1是本发明中mask模块对encoder部分输入进行遮挡示意图;
[0035] 图2是本发明中extended mask模块对decoder的外部注意力部分输入进行遮挡示意图;
[0037] 图4是本发明中一种基于Transformer结构的负荷预测方法的流程示意图。
具体实施方式
[0038] 为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在相互不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
[0039] 在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述范围内的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
[0040] 本发明的目的可以通过数据预处理以及负荷预测模型中的注意力模块、前向传播模块以及最重要的Mask模块实现。
[0041] 请参考图4,本发明提供了一种基于Transformer结构的负荷预测方法,所述方法包括:
[0042] 步骤1:采集历史数据并存储;
[0043] 步骤2:预处理采集的历史数据,基于预处理后的数据得到训练集和测试集;
[0044] 步骤3:建立负荷预测模型;
[0045] 步骤4:使用训练集和测试集训练和测试负荷预测模型,得到训练后的负荷预测模型;
[0046] 步骤5:将与历史数据同类型的待预测数据输入训练后负荷预测模型,输出预测结果。
[0047] 本发明的
数据处理以及模型构建可以包含以下几个步骤:
[0048] 步骤1:
数据采集和存储,下载
马来西亚全国共24个月的用电量公开数据集,并储存于
云端
服务器。数据集包含24个月以来每天24小时的用电量和
温度以及时间信息。
[0049] 步骤2:数据预处理与训练集、测试集划分。除了原始的用电量、温度、分钟、小时、日、月、年的特征信息外,本发明额外标注了数据时间范围内马来西亚全国的节假日信息作为辅助特征。其中法定节假日记为0,正常日按在星期内顺序记为1-7。未处理前原始数据特征如表1所示(节选):
[0050] 表1
[0051] 用电量 温度 小时 日 月 年 节假日30360 24 23 1 1 2010 0
29115 24 00 2 1 2010 6
28086 23 01 2 1 2010 6
… … … … … … …
52707 25 23 30 12 2011 5
[0052] 数据表汇总完成后,本发明归一化处理每一列的特征值,排除了部分噪声和特征值值域对算法造成的影响。对于数据集,本发明将24个月中后两个月数据保留作为测试集,前22个月数据作为训练集用于训练和测试。训练时每一条样例为前96小时的特征数据,目标是后24个小时的用电量。如此一来,两年的数据经滑动可得到近1.7万条可用数据。
[0053] 建立模型:即编码器-解码器模块,该发明模型分为编码器(Encoder)部分和解码器(Decoder)部分,Encoder部分对输入的序列特征(原始特征加
位置特征)经由注意力模块加权并经由前向传播网络后转化为包含输入信息的隐向量序列。Decoder部分对目标序列(需要预测的遮挡后的真实负荷序列)和Encoder输出的隐向量之间用注意力模块加权,并依次输出整个需要预测的负荷序列。
[0054] 注意力模块,注意力模块用于求取时序中每个输入与其余输入的相关性,即模型自己的注意力。注意力模块既嵌入在encoder模块中也嵌入在decoder模块中,以加强模型捕捉序列特征的能力。自注意力的计算如公式2、3、4所示:
[0055] eji=a(Keyi,Queryj) (2)
[0056]
[0057]
[0058] 其中,eji为第i个Key和第j个Query的注意力得分,Keyi为第i个Key,Queryj为第j个Query,αji为归一化后的eji,cj为第i个Value加权后的值,Valuei为第i个Value,a是计算相似度的函数,Key,Query分别是计算注意力的输入的“密钥”和“查询”序列,在编码器中两者一样,均为输入序列特征,e,α分别是相似度得分和对相似度得分进行softmax归一化后的注意力得分,Value是欲加权的张量,在编码器中也是输入序列,c是加权后得到的张量,i,j分别是张量中进行注意力的维度。
[0059] 在decoder中,除了和encoder部分对于输入的自注意力以外,还加入了目标序列对隐向量序列的‘外部’注意力(外部注意力意为模型内部输出的隐向量和模型外部输入目标序列之间进行的注意力),使得模型更容易捕捉到输入序列和目标序列之间的关系。
[0060] Mask模块,为了避免目标序列
泄漏给模型,同时又保证模型能并行化运行(RNN往往要等待上一时刻的输出作为下一时刻循环神经网络的输入,从而很难实现并行化)。在encoder部分,计算过Key,Query的点积后,得到一个序列长度x序列长度的方阵(忽略其他维度),如图1所示。要使模型不会注意到当前输入之后时间序列的特征,本发明遵循Transformer结构,采用一个上三角的矩阵来遮挡住这些特征,图1中以黑色部分表示。对于decoder来讲,输入包含由encoder和前向传播网络输出的隐向量序列和目标序列特征,同样进行相似度点积之后,得到一个目标序列长度x(隐向量序列长度+目标序列长度)的矩阵(图2所示),本发明对右边部分进行上三角掩码遮挡。这样做使得输入的时候不用对目标序列和输入序列的位置关系做过多考虑,只需保证目标序列与输入序列在时间维度上不相交即可,其次这样做不仅使decoder解码时关注前面的隐向量部分,还使得它关注了自己之前解码出的序列,使预测结果更加精确。
[0061] 其中,前向传播网络由多个全连接层和激活层构成,用于增加模型的非线性表达能力,捕捉到样本中更加复杂和隐晦的关系。前向传播网络在图3中的前向传播网络模块表示。整个模型的结构如图3所示。
[0062] 利用公式5所示的代价函数对模型进行训练和调优,其中前半部分用于对目标的值进行回归,后半部分用于保证整个预测序列的平滑。
[0063]
[0064] 其中, 为第i个样本的预测值,yi为第i个样本的真实值,t为输入序列长度,λ为平滑超参数,表示第i个样本,根据随机梯度下降算法,找到使上述公式5中loss最小的模型参数,得到训练后的负荷预测模型。
[0065] 本发明采用图1所示的mask模块(掩码模块)对encoder部分输入进行遮挡,用图2所示的extended mask模块对decoder的‘外部注意力’部分输入进行遮挡。图3为总体模型结构。其中,sequence embedding-序列嵌入,positional embedding-位置嵌入,encoder transformer block-编码器转变模块,feedforward block-前向传播网络,encoder architecture-编码器结构,decoder architecture-译码器结构,attention mask-注意力掩码。
[0066] 本发明原始数据来源于马来西亚2009-2011两年内全国的真实用电负荷和温度值,在测试集准确率达到98.2%以上后,
发明人又对国内某
电网真实数据进行了训练和测试来检验模型的可靠性。相比于在公开数据集训练时,加入了GDP、气象特征、模糊处理后的文本特征等,在中长期(3个月)的预测准确率上仍然维持95%以上的标准。
[0067] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和
修改。所以,所附
权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0068] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。