一种基于混合CNN-Transformer模型的大气臭氧浓度预测方法转让专利

申请号 : CN202210238135.6

文献号 : CN114611792B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 孙强陈逸彬徐爱兰蒋行健黄勋陈晓敏

申请人 : 南通大学

摘要 :

本发明涉及一种基于混合CNN‑Transformer模型的大气臭氧浓度预测方法,设计了一种混合CNN‑Transformer模型,该模型由卷积神经网络和改进的Transformer模型组合构成。卷积神经网络由2个一维卷积层组成,Transformer模型由编码器和解码器组成,每个编码器有3个编码层,解码器有3个解码层。同时,在传统Transformer编码器解码器架构的基础上,为编码器的不同编码层之间加入了“编码器到编码器”的交叉多头注意力层,进一步挖掘不同编码层之间编码信息的关联。CNN模型可以在特征维度上很好地提取有效信息,弥补了Transformer模型中编码器提取信息能力不足的问题。该预测方法能够更真实地反映多元数据对臭氧浓度的影响,并通过CNN‑Transformer模型学习这种影响模式,从而给出更精确的臭氧浓度预测结果。

权利要求 :

1.一种基于混合CNN‑Transformer模型的大气臭氧浓度预测方法,其特征在于,包括模型训练阶段和模型推理预测阶段:模型训练阶段包括下列步骤:

步骤S1.1、获取臭氧数据、其他大气污染物数据及气象数据作为训练数据,处理缺失和异常值,将处理后的多元数据进行归一化,消除量纲差异带来的影响;所述其他大气污染物数据包含二氧化氮、一氧化氮、二氧化硫、一氧化碳,所述气象数据包含风速、风向、气压、最高最低气温;

步骤S1.2、采用滑动窗口技术将数据序列化,构成时间序列数据;

步骤S1.3、构建CNN‑Transformer模型,将时间序列数据送入CNN‑Transformer模型中,开始模型训练过程;

所述步骤S1.3中,CNN‑Transformer模型由卷积神经网络CNN、Transformer及深度线性神经网络DNN三部分构成,具体架构如下:CNN模型包含2个一维卷积层,每个卷积层有32个卷积核,即可以提取32个维度的潜在特征;Transformer模型由编码器和解码器组成,每个编码器中有1个输入映射层、1个位置编码层、3个编码层以及1个“编码器到编码器”的交叉多头注意力层;每个解码器中有1个输入映射层,3个解码层以及1个基于序列的全连接层;

所述3个编码层,每个编码层由1个输出维度为64的多头自注意力层和1个相同输出维度的前向全连接层组成;所述3个解码层,每个解码层的结构与编码层的结构一致,但解码层中多头自注意力层之后附加有“编码器到解码器”的交叉多头注意力层;所述多头注意力层中的头数均为8;DNN模型有2个隐含层,第一层的神经元数量为256,第二层的神经元数量为

128,使用ReLU函数作为激活函数;在每个隐含层后都加入了Dropout层,比率分别为0.4和

0.3,输出层的神经元个数为1;

所述步骤S1.3中,模型训练过程为:设置模型的迭代次数为500,训练批次大小为64,使用Adam作为优化器,学习率为0.001;在训练阶段,采用HuberLoss作为损失函数,其表达式如下:其中,n为训练集或验证集的样本总数,Oi为第i个样本臭氧的真实值,Pi为第i个样本臭氧的预测值;

对于每一次迭代过程,首先进入CNN模型,2个一维卷积层在训练样本的特征维度上提取有用信息,输出的时序序列送入Transformer模型,通过位置编码层提取并保存时序信息,将带有时序信息的序列送入编码器进行编码,编码的结果送入解码器,得到解码数据,将解码数据送入DNN层,压缩其维度至目标维度1,将结果反归一化得到最终预测值,将预测值与标签值比对并计算HuberLoss值,继续迭代直至模型达到最优,即HuberLoss值最小;

模型推理预测阶段包括下列步骤:

步骤S1.4、从环境监测站实时获取臭氧数据、其他大气污染物数据及气象台实时获取的气象数据作为历史数据,处理缺失和异常值,将处理后的数据进行归一化,消除量纲差异带来的影响;

步骤S1.5、将数据送入训练好的CNN‑Transformer模型中,经过运算后给出预测结果。

2.根据权利要求1中所述的一种基于混合CNN‑Transformer模型的大气臭氧浓度预测方法,其特征在于:所述步骤S1.1中,将处理后的数据进行归一化处理,具体包括:使用最大最小值归一化函数对获取的数据在特征维度上进行归一化,将数据的范围限定在[0,1]之间;

所述最大最小值归一化函数,其公式表达如下:

其中,x为原始数据且x∈X,X表示原始数据集,包含臭氧数据、其他大气污染物数据及*气象数据,x 表示归一化后数据,xmin为原始数据集中的最小值,xmax为原始数据集中的最大值。

说明书 :

一种基于混合CNN‑Transformer模型的大气臭氧浓度预测

方法

技术领域

[0001] 本发明涉及大气臭氧浓度预测方法,尤其涉及一种基于混合 CNN‑Transformer模型的大气臭氧浓度预测方法。

背景技术

[0002] 当前,工业化和城市化的加速导致了空气质量的急剧下降。大气中主要的污染物包括二氧化硫、氮氧化物、微粒物质、一氧化碳和臭氧。长期接触过高或过低浓度的臭氧都会造成一些身体危害,如呼吸困难等。考虑到臭氧对人们身体的影响,当前迫切需要一种能够准确预测臭氧浓度的方法,以便相关机构采取措施进行管控。
[0003] 随着人工智能和深度学习领域的发展,用深度学习模型来预测大气中污染物的浓度已经成为研究热点和发展趋势。现有的基于深度学习的预测臭氧浓度的模型有:循环神经网络(RNN)、长短期记忆网络 (LSTM)以及基于卷积神经网络和长短期记忆网络的混合模型 (CNN‑LSTM)。循环神经网络是较早提出的机器翻译领域的深度学习模型,后有许多学者将其应用于时间序列预测领域。Biancofiore等学者使用传统的RNN模型,以佩斯卡拉市为例,用过去的臭氧数据及其它大气污染物数据作为训练数据,分别预测了未来1、3、6、12、 24小时内的臭氧浓度,在6小时内的预测效果不错,但在6小时以外的预测误差较大。传统RNN模型往往有长程依赖问题,即对于较长的输入和输出序列不会产生较好的效果。目前主流的用于时间序列预测的模型为CNN和LSTM混合模型,CNN可以提取数据之间的局部时空特征,而LSTM模型相对于传统的RNN模型在一定程度上缓解了长程依赖问题,故这两个模型结合可以在时间序列预测取得较好的效果。
[0004] 然而,LSTM模型依然没有很好的解决长程依赖问题,当输入序列很长时,会不断遗忘得到的信息,导致最终提取的有效信息较少。 Vaswani等学者提出的基于注意力机制的Transformer模型可以很好地解决信息遗忘问题。Wu等学者采用深度Transformer模型对美国流感进行预测,该研究表明Transformer能在单变量数据集上取得很好的效果,但在多元数据集上的预测效果不显著,说明该模型没有很好的挖掘数据不同维度之间的关联。因此,如何改进Transformer模型,提高其对多元数据的信息提取能力,是我们面临的问题。针对上述问题,本申请提出了一种基于混合CNN‑Transformer模型的大气臭氧浓度预测方法。

发明内容

[0005] 本发明的目的是提供一种基于混合CNN‑Transformer模型的大气臭氧浓度预测方法,能够精确、有效的预测大气臭氧浓度,解决传统Transformer架构中对多元数据提取能力较差的问题,该方法可以提取多元数据中不同特征之间的关系,充分利用历史数据对未来的臭氧浓度作出精准的预测。
[0006] 为了达到上述目的,本发明提供了如下方案:
[0007] 一种基于混合CNN‑Transformer模型的大气臭氧浓度预测方法,包括:
[0008] 模型训练阶段:
[0009] 步骤S1.1、获取臭氧数据、其他大气污染物数据及气象数据作为训练数据,处理缺失和异常值,将处理后的数据进行归一化,消除量纲差异带来的影响。所述其他大气污染物数据包含二氧化氮、一氧化氮、二氧化硫、一氧化碳,所述气象数据包含风速、风向、气压、最高最低气温;
[0010] 步骤S1.2、采用滑动窗口技术将数据序列化,构成时间序列数据。该预测方法提供默认滑动窗口大小,用户也可以自定义滑动窗口的大小来决定用于预测未来臭氧浓度的历史数据的时间跨度。用户还可以调整预测数据的长度,即输出数据的时间跨度;
[0011] 步骤S1.3、构建CNN‑Transformer模型,将时间序列数据送入 CNN‑Transformer模型中,开始模型训练过程。
[0012] 模型推理预测阶段:
[0013] 步骤S1.4、从环境监测站实时获取臭氧数据、其他大气污染物数据及气象台实时获取的气象数据作为历史数据,处理缺失和异常值,将处理后的数据进行归一化,消除量纲差异带来的影响;
[0014] 步骤S1.5、将数据送入训练好的CNN‑Transformer模型中,经过运算后给出预测结果。
[0015] 优选的,在步骤S1.1中,将处理后的数据进行归一化处理,具体包括:
[0016] 使用最大最小值归一化函数对获取的数据在特征维度上进行归一化,将数据的范围限定在[0,1]之间。
[0017] 所述最大最小值归一化函数,其公式表达如下:
[0018]
[0019] 其中,x为原始数据且x∈X,X表示原始数据集,包含臭氧数据、其他大气污染物数*据及气象数据,x表示归一化后数据,xmin为原始数据集中的最小值,xmax为原始数据集中的最大值。
[0020] 优选的,在步骤S1.3中,CNN‑Transformer模型,其主要由卷积神经网络(CNN)、Transformer及深度线性神经网络(DNN)三部分构成,具体架构如下:CNN模型包含2个一维卷积层,每个卷积层有32个卷积核,即可以提取32个维度的潜在特征;Transformer模型主要由编码器和解码器组成。每个编码器中有1个输入映射层、1 个位置编码层、3个编码层以及1个“编码器到编码器”的交叉多头注意力层。每个解码器中有1个输入映射层,3个解码层以及1个基于序列的全连接层。所述3个编码层,每个编码层由1个输出维度为 64的多头自注意力层和1个相同输出维度的前向全连接层组成。所述3个解码层,每个解码层的结构与编码层的结构一致,但解码层中多头自注意力层之后附加有“编码器到解码器”的交叉多头注意力层。所述多头注意力层中的头数均为8;DNN模型有2个隐含层,第一层的神经元数量为256,第二层的神经元数量为128,使用ReLU函数作为激活函数。在每个隐含层后都加入了Dropout层,比率分别为0.4 和0.3。输出层的神经元个数为1。
[0021] 优选的,在步骤S1.3中,所述模型训练过程为:设置模型的迭代次数为500,训练批次大小为64,使用Adam作为优化器,学习率为0.001。在训练阶段,采用HuberLoss作为损失函数,其表达式如下:
[0022]
[0023]
[0024] 其中,n为训练集或验证集的样本总数,Oi为第i个样本臭氧的真实值,Pi为第i个样本臭氧的预测值;
[0025] 对于每一次迭代过程,首先进入CNN模型,2个一维卷积层在训练样本的特征维度上提取有用信息,输出的时序序列送入 Transformer模型,通过位置编码层提取并保存时序信息,将带有时序信息的序列送入编码器进行编码,编码的结果送入解码器,得到解码数据,将解码数据送入DNN层,压缩其维度至目标维度1,将结果反归一化得到最终预测值,将预测值与标签值比对并计算HuberLoss 值,继续迭代直至模型达到最优,即HuberLoss值最小。
[0026] 与现有技术相比,本发明具有以下有益效果:
[0027] 1.本发明使用基于Transformer架构的模型来预测大气臭氧浓度,利用了其时间序列数据全局特征提取的能力。
[0028] 2.本发明采用CNN模型,能够从多个维度有效提取数据之间的局部特征及关联性,同时将CNN模型与Transformer模型融合,充分考虑了时间序列数据的全局特征。
[0029] 3.在Transformer模型的编码器中,本发明于不同的编码层之间增加了一个多头注意力层,可以有效弥补传统Transformer模型编码器对多维特征的提取能力不足的问题。
[0030] 本发明根据采用的数据集开展了不同实验,实验结果展现了CNN‑Transformer模型的优越性及其预测的精确性。

附图说明

[0031] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0032] 图1为本发明实施例1提供的大气臭氧浓度预测方法流程图;
[0033] 图2为本发明实施例1提供的滑动窗口示意图;
[0034] 图3为本发明实施例1提供的混合CNN‑Transformer模型的整体架构图;
[0035] 图4为本发明实施例1提供的CNN模型架构图;
[0036] 图5为本发明实施例1提供的Transformer模型的编码器解码器架构图。具体实施方案
[0037] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0038] 本发明的目的是提供一种基于混合CNN‑Transformer模型的大气臭氧浓度预测方法,解决传统预测模型预测精度不高以及传统 Transformer模型对多维特征提取能力不足的问题,基于北京监测站点的历史空气质量数据与气象数据,结合CNN‑Transformer模型有效提高臭氧浓度预测的精度。
[0039] 为了使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方案对本发明作进一步阐述。
[0040] 如图1所示,本实施例提供了一种基于混合CNN‑Transformer模型的大气臭氧浓度预测方法,包括:
[0041] 步骤S1.1:获取多元大气污染物数据及气象数据作为历史训练数据,处理缺失和异常值,将处理后的数据进行归一化,消除量纲差异带来的影响。
[0042] 步骤S1.1具体包括:
[0043] 对于缺失值,采用均值填补法,即使用所有数据的均值来填充缺失值,对于异常值,也将其变为数据的均值;
[0044] 采用最大最小值归一化函数将处理后的数据进行归一化,最大最小值归一化函数公式如下:
[0045]
[0046] 其中,x为原始数据且x∈X,X表示原始数据集,包含臭氧数据、其他大气污染物数*据及气象数据,x表示归一化后数据,xmin为原始数据集中的最小值,xmax为原始数据集中的最大值。所述其他大气污染物数据包含二氧化氮、一氧化氮、二氧化硫、一氧化碳,所述气象数据包含风速、风向、气压、最高最低气温。
[0047] 步骤S1.2:采用滑动窗口技术将数据序列化,构成时间序列数据;
[0048] 采用滑动窗口技术将数据序列化,具体包括:
[0049] 假设时间序列样本Tm的特征维度为k,m为样本的索引值,将数据以向量的形式表示,即Tm=[Tm,1,…,Tm,k],Tm,k为臭氧浓度数据。引入一个长度为N+1的滑动窗口来分割数据,在所有样本中, Tm,…,Tm+N‑1作为历史数据,Tm+N作为已知的未来数据,模型给出的臭氧预测结果Pm+N会与Tm+N,k进行比较。将滑动窗口移动一步从而产生下一个序列样本,重复滑动过程直至所有样本数据都被扫描。图2 给出了一个使用滑动窗口技术将数据序列化的例子,其中该滑动窗口的大小为3,Si表示第i个训练样本,n表示序列的长度。
[0050] 步骤S1.3:构建CNN‑Transformer模型,将时间序列数据送入所述CNN‑Transformer模型中进行训练;
[0051] 图3展示了混合CNN‑Transformer模型的整体架构,该模型训练的流程如下:数据经过CNN模型,首先利用CNN模型中的两个一维卷积层对历史数据进行卷积,提取时间序列中不同时间节点之间的局部特征;其次利用改进的Transformer模型,采用注意力机制对CNN提取到的特征做进一步的特征提取,挖掘时间序列中的全局特征;最终利用DNN模型,将Transformer模型提取到的全局特征进行压缩,将高维数据映射到一维数据,得到臭氧浓度预测值;将预测结果与真实值比对,计算损失函数HuberLoss值,不断训练直至HuberLoss值最优。
[0052] 图4展示了CNN模型的卷积运算过程。假设输入序列的长度为n 每个样本的特征大小为m,将每个序列样本表达为Tij,其中i=1,…,n 指定了当前参与卷积运算的样本,j=1,…,m指定了参与卷积的多元特征,如:含二氧化氮、一氧化氮、二氧化硫、一氧化碳风速、风向、气压、最高最低气温、臭氧。卷积核的数量为k,每个卷积核的大小为p且移动步长为q,意味着CNN最终提取到的特征维度为k。每个卷积核首先和样本T1j,…,Tpj进行卷积,产生输出f1h,其中h=1,…,k。接着,卷积核滑动q步并重复之前的过程直至所有样本都参与卷积。
整个卷积计算过程可表达成如下公式:
[0053]
[0054] 其中,h表示第h个卷积核,l表示输出序列中的第l个样本,输出序列的总长度为r,总长度r可以用下列公式表达:
[0055]
[0056] 将所有序列样本参与不同卷积核的运算得到的结果记作集合Ω={F1,…,Fr}且Fr=[fr1,…,frk],Ω即为CNN层的最终输出。
[0057] 此处仅对CNN模型的介绍仅为了使本领域技术人员更清楚地理解CNN模型,对本发明不具有任何限定作用。
[0058] Transformer模型主要由编码器和解码器两部分组成,下面结合图5编码器和解码器的架构对这两个部分作详细介绍。如图5所示,时间序列数据首先经过一个输入映射层,将CNN提取的维度映射成新的维度,记为dmodel,接着将数据进行位置编码。在这个过程中,假设输入序列的长度为n,t表示序列的特定位置,i表示该位置上的第i 个特征维度, 表示该维度上的位置编码函数,该函数可以表达为:
[0059]
[0060] 其中,i=1,…,dmodel,t=1,…,n,频次ωk=1/(100002k/dmodel)。每个计算完成的位置编码函数值会加到对应的样本上,即给样本增添了时序信息。接着进入到编码层,编码层由2个子层构成,分别为:多头自注意力层和前向全连接层,每个子层经过运算后都要进行残差连接并应用层归一化。注意力层的输入由查询、键、值三个部分组成,各自的维度分别记为dk、dk和dv。为了方便进行计算,所有的查询及键值对被打包成矩阵形式,分别记为Q,K,V,然后可以通过注意力函数进行计算,该函数可以写成:
[0061]
[0062] 多头注意力函数是在注意力函数的基础上,将其分为h个头,每个头的维度为dmodel/h,分别通过上述公式计算注意力,计算完成后,将每个头的计算结果在特征维度上拼接并映射到相应维度。整个多头注意力函数可以写成:
[0063] M(Q,K,V)=Concat(head1,…,headh)WO
[0064] 其中, 表示将矩阵 Q,K,V映射O
成维度为dmodel/h的参数矩阵。W 也是一个参数矩阵,其将拼接后的各个头的维度映射到初始维度dmodel。本发明在不同的编码层之间增加了“编码器到编码器”的注意力层,进一步提取特征。编码器的输出结果的维度为dmodel,被送入至解码器中。
[0065] 解码器的结构和编码器相似,除了编码器的编码层中的两个相同子层外,解码层中还有一个“编码器到解码器”的交叉多头注意力层,其将解码器的输入,即经过卷积后的目标序列作为查询部分,将编码器的输出作为键值对部分进行自注意力函数运算。该交叉注意力层可以提取目标序列与输入序列的联系,寻找它们之间的动态关联和计算模式。基于序列的全连接层用于将解码层输出序列的每个时间点的特征映射到dmodel维度。编码器的输出序列的长度与目标序列的长度一致,输出的特征维度为dmodel。
[0066] 最后,经过DNN层的全连接运算,将解码器输出的特征维度dmodel压缩至目标维度,在本实施例中为1,最后将目标序列使用最大最小值归一化函数进行反归一化,即可得到需要预测的臭氧浓度。
[0067] 为了评估所训练的CNN‑Transformer模型对臭氧浓度的预测能力及精确度,本发明使用HuberLoss作为损失函数,具体包括:
[0068] 根据下列公式计算训练模型给出的预测结果与真实结果 HuberLoss的值:
[0069]
[0070]
[0071] 其中,n为训练集或验证集的样本总数,Oi为第i个样本臭氧的真实值,Pi为第i个样本臭氧的预测值。HuberLoss的值越小,说明训练的CNN‑Transformer模型的预测值与真实值越接近,即模型精确度越高。为了优化HuberLoss值,模型需要不断训练迭代,每一次训练完成后会更新模型中的所有参数,直至HuberLoss值最优。
[0072] 步骤S1.4:实时获取监测站提供的多元大气污染物数据及气象数据作为历史基准数据;
[0073] 步骤S1.5:将数据送入训练好的CNN‑Transformer模型中,经过运算后得出预测结果,即预测的大气臭氧浓度值。
[0074] 需要注意的是,所需预测的臭氧浓度的时间跨度与模型训练时提供的目标序列时间跨度一致,若训练时提供的目标序列为3小时内的臭氧浓度,则实际预测时也只能预测未来3小时内的臭氧浓度。模型预测时的运算过程与训练时的运算过程一致。
[0075] 为了能够使本领域技术人员更好地理解本方案,选取北京市作为研究案例城市,该实验方案可以扩展到更大范围。实验分为两个部分,第一部分为模型的训练,用大量历史数据作为训练数据对构造的混合CNN‑Transformer模型进行训练,并用一部分数据作为验证集进行模型的性能评估;第二部分为模型的推理测试,使用部分数据作为测试集,用第一部分中训练好的CNN‑Transformer进行预测,并将预测值与真实值作比较,采用多种评估指标给出评分结果衡量模型的预测精度。
[0076] 选择北京市14个监测站点作为研究目标,样本数据分臭氧数据、其它多元污染物数据(二氧化氮、一氧化氮、二氧化硫、一氧化碳) 及气象数据(风速、风向、最高气温及最低气温)。这里采用从2014 年1月1日至2021年7月31目的数据。为了保证数据的完整性,对于部分缺失或异常值,本实施例均采用均值填补。本实施例中采用 10%的数据作为测试集,20%的数据作为验证集,剩余的数据均作为训练集。
[0077] 在训练过程中,本实施例输入长度为10的序列,即模型的输入为过去10天的臭氧浓度数据、其它多元大气污染物数据及气象数据。本实施例共开展两组实验,第一组实验为预测未来1天的臭氧浓度,第二组实验为预测未来3天的臭氧浓度。两组实验中的训练参数如下:模型的迭代次数为500,训练批次大小为64,使用Adam作为优化器,学习率为0.001。在训练阶段,采用HuberLoss作为损失函数。
[0078] 需要注意的是,本领域技术人员可以针对不同类型的数据设置不同的超参数和输入序列长度,不必参照本实施例所述,本实施例中提供的参数不应理解为对本发明的限制。
[0079] 在进行推理测试时,本实施例采用均方根误差(RMSE)、平均绝对误差(MAE)及标准均方根误差(NRMSE)三个评估指标来衡量模型的预测精度,这三个指标用下列公式表达:
[0080]
[0081]
[0082]
[0083] 其中,n为测试集的样本总数,Oi为第i个样本的真实值,Pi为第 i个样本的预测值,Omax表示观测样本中的最大值,Omin表示观测样本中的最小值。表1分别展示了两组实验的三个评估指标值。
[0084] 表1实验1、2在测试集上的三种评估指标值
[0085] 评价指标 实验1 实验2RMSE 7.75 16.27
MAE 5.92 12.83
NRMSE 3.61% 7.56%
[0086] 本领域技术人员也可选择其他指标来评估模型的表现。当模型给出的预测结果在测试集上的指标值达到一定的阈值时便可认为训练的CNN‑Transformer能给出准确的预测结果,本发明不对该阈值作限定。
[0087] 本文中应用了具体个例对本发明的原理及实施方案进行了阐述,以上所述仅为本发明的实施例,用于帮助理解本发明的方法及核心思想,并非因此限制本发明的专利范围;同时,凡是利用本发明说明书附图及附图内容所作的等效结构或等效流程变换,或是直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。