时间:2024-07-28
曾晨雨,黄 静
(长沙职业技术学院 湖南 长沙 410217)
由于近年来的温室效应、洋流变化和气压变化等,极端天气发生愈发频繁,突发性的极端天气极易引起人员伤亡和财产损失。 大风极端天气是极端天气中最常见的一类,会影响到人们出行安全及社会正常运转。 为了降低风灾对人们正常生活和生产的影响,有效预测风速并及时预警,显得尤为重要[1]。 目前,风速预测方法大致可以分为以下两类,第一种是传统数学方法,第二种是以机器学习为代表的智能算法。 一方面,传统数学方法模型复杂,依赖过多的假设,预测结果偏理论不能用于实际[2];另一方面,随着气象数据采集和处理技术的不断发展,人工智能技术也越来越多地参与到了天气相关的预测中,其中机器学习被国内外研究人员广泛运用到风速预测中。
深度学习是一种广泛的基于数据表示的机器学习方法,拓宽了机器学习的应用领域,延伸了人工智能的服务范围,其中许多应用已成为行业研究热点。 在机器学习中,风速预测可以归结为一个基于时间序列的预测问题,本质是根据前T个时刻的风速观测数据建模,通过训练好的模型来预测T+1 时刻的时间序列的风速数据。 传统风速时间序列预测方法都是使用单一序列,往往会忽视掉其他因素的影响,容易造成预测结果的不准确[3]。 因此,本文提出了一种基于长短期记忆(long short-term memory,LSTM)的多特征预测算法,通过耶拿气象数据集(Jena climate dataset)进行模型训练,并对风速预测值和实际值拟合曲线对比,发现该模型在风速预测上有较好的效果。
循环神经网络(recurrent neural network,RNN)是一系列能够处理顺序数据的神经网络的总称。 一般RNN 包含以下特性:
①每个隐单元间循环链接,且能在下个时间节点T产生输入;
②当前时间节点仅与下一时间节点的隐单元循环链接;
③所有隐单元排列成的循环链接结构能够处理输入的数据,产生单一的输出预测。
但是RNN 存在以下缺点:如果时间序列较长会导致梯度消失或者梯度爆炸,后层梯度无法传递到前边层,无法长期记忆。 LSTM 是一种特殊的RNN 模型,用于接收和处理序列数据,如文本、语音、视频等。 该模型通过一系列的门控制机制,特点是记住长期的信息,可以有效地解决RNN 存在的梯度消失和梯度爆炸的问题,能更好地处理长时序列信息[4]。
LSTM 在每个时间步长上接收输入,同时上一时间步长的输出和内部状态作为当前的输入。 与普通的RNN 不同,LSTM 在内部状态中保留了长期记忆信息,通过门的机制控制长期信息的更新和遗忘,从而实现了对信息的选择性记忆和遗忘[5]。 其中,门控制机制包括遗忘门、输入门以及输出门。 LSTM 模型结构如图1 所示。
图1 LSTM 模型结构示意图
遗忘门用于选择性遗忘部分信息,公式如式(1)所示:
式(1)中:σ为sigmoid 神经网络激活函数,Wf为连接权重矩阵,ht-1为上一时刻神经元短时记忆输出,xt为本时刻(t)神经元输入。 输入门表示当前时刻输入,决定信息输入的多少,依赖遗忘门ft和tanh 层生成的候选向量,公式如式(2)所示:
式(2)中:ft为遗忘门输出,Ct-1为上一时刻输入门输出,it为输入门新增的信息,tanh 为双曲正切激活函数,Wc为连接权重矩阵,ht-1为上一时刻神经元短时记忆输出,xt为本时刻(t)神经元输入,bc为偏置向量。 输出门用于控制神经元信息被过滤的程度,计算公式如式(3)所示:
式(3)中:ht-1为上一时刻神经元短时记忆输出,xt为本时刻(t)神经元输入,it为输入门需要添加的新信息,Wf为连接权重矩阵,b和σ分别是偏置向量和sigmoid 函数。
本文采用的数据集为耶拿气象数据集,该数据集为天气时间序列数据集,由德国耶拿的一个生物地球化学研究所的气象站记录,在这个数据集中,每10 min 记录14 个不同的量(比如气温、气压、湿度、风向、风速等,见表1),本文使用其中2009—2016 年的数据。
表1 数据集划分表
主要特征及其分布如图2 所示:
本实验选取其中的气压、温度、热力学温度、湿度温度、相对湿度、饱和蒸汽压、蒸汽压力、蒸汽压差、含湿量、水蒸气浓度等作为风速预测的输入特征。
为保证模型准确有效,需要对数据进行处理,包括异常值处理、数据标准化。 从图2 中可以看出风速数据有个别异常极值,会影响到整体数据质量和模型构建,需要将其滤除。 数据标准化可以将不同量纲的特征值转成无量纲的纯数值,方便不同指标间能够进行比较和加权,为模型构建打下基础。
本文使用的数据标准化方法为Z-Score 标准化,ZScore 标准化是数据处理的一种常用方法。 通过它能够将不同量级的数据转化为统一量度的Z-Score 分值进行比较,提高了数据可比性,削弱了数据解释性。 Z-Score 标准化主要思想为基于原始数据的均值(mean)和标准差(std)来进行数据的标准化,具体如式(4)所示:
式(4)中:x为个体观测值,μ为总体数据的均值,σ为总体数据的标准差。
通过上述步骤对耶拿气象数据集进行处理后,选取前3.3 万条数据,并采用9 ∶1 比例划分训练集和验证集,结果如表2 所示。
表2 数据集划分表
为了实现风速的时间序列预测,本文使用Date Time作为时间序列,以气压、温度、热力学温度、湿度温度、相对湿度、饱和蒸汽压、蒸汽压力、蒸汽压差、含湿量、水蒸气浓度指标作为特征点来构建LSTM 多特征预测模型,该模型包含三个LSTM 层、一个全连接Dense 层和一个输出层[6-7]。
其中LSTM 第一层设置8 个神经元,第二层设置16个神经元,第三层设置32 个神经元,dropout 设置为0.5,同时设置L2 正则化来避免过拟合;全连接层设置64 个神经元,设置随机正态分布的权重初始化和L2 正则化;输出层返回回归计算后t+1 时间点的风速预测值。
本文使用Keras 来搭建模型。 Keras 是一个模型级的库,为开发深度学习模型提供了高层次的构建模块。 它依赖一个专门的、高度优化的张量库来完成这些运算,这个张量库就是Keras 的后端引擎。 Keras 有三个后端实现:TensorFlow 后端、Theano 后端和微软认知工具包(cognitive toolkit,CNTK)。 这三个不同的后端引擎都可以无缝嵌入到Keras 中。
Keras 模型编译时必须设置优化器,常见的优化器包括随机梯度下降优化器(stochastic gradient descent,SGD)、RMSprop 优化器、Adagrad 优化器、Adadelta 优化器、Adam优化器等。 RMSprop 是一种自适应学习率的优化算法,它可以有效地应对不同特征的梯度变化差异较大的情况,以及避免梯度消失或爆炸的问题。 RMSprop 的核心思想是,根据梯度的历史信息来自适应地调整学习率。 具体地,RMSprop 维护一个梯度平方的移动平均数,然后将学习率按照每个参数在梯度平方的移动平均数的比例进行缩放。其中Adam 优化器是RMSprop 优化器的动量版,适合处理非平稳目标(季节性和周期性),气象数据带有强季节性和周期性,Adam 优化器能取得较好的效果,同时自适应学习率Adam 能避免梯度爆炸,故本模型编译时使用Adam优化器,设置学习率为0.001,同时损失函数为平均绝对误差(mean absolute error,MAE),计算标签和预测之间绝对差异的平均值。
本实验的风速预测方法流程如下:
(1)数据读取,对数据进行特征选择。
(2)数据预处理,将数据进行Z-Score 标准化,选取前3.3 万条数据,采用9 ∶1比例划分训练集和验证集。
(3)模型构建,编译训练网络,并对测试集进行评价,绘制训练损失曲线。
(4)模型预测,绘制预测的气温曲线图进行对比。
本实验每个滑窗取5 天的数据量720 个观测点,预测下一个时间点的风速,对比实际值和预测值的可视化结果,来验证模型的准确性。 根据输入的耶拿数据和滑窗预测方式,将数据集划分为若干个10×720 的矩阵向量(以上述10 个特征值,720 个以10 min 为单位的观测点)。
神经网络中跑一次完整训练样本记作一个epoch(轮次)。 本实验将epoch 设置为5,训练损失曲线如图3 所示。
图3 训练损失曲线
从图3 中可以看出,上面的曲线为训练损失,下面的曲线为验证损失。 在训练开始阶段损失值下降幅度很大,说明学习率合适且进行梯度下降过程中,在学习到一定阶段后,损失曲线趋于平稳,损失变化没有一开始那么明显,整体损失曲线较合适。
最终本模型拟合结果如图4 所示。
图4 风速预测拟合结果
图4 中圆形实心点为实际风速,三角形为预测风速。图4 中可以看出,和实际值对比,预测值基本贴合,说明本模型预测效果优秀,所建立的基于LSTM 的多特征预测模型拟合程度良好[8]。
为提高风速预测的精度,本文设计了基于LSTM 的多特征预测模型,以耶拿气象数据为来源,预测未来200 个时间观测点的风速数据。 实验结果发现,本文设计的模型损失曲线收敛良好,多特征预测模型能有效避免极端天气对风速预测的影响,能精准地预测出未来的风速走向,并具备良好的性能和预测精准度。
在后续深入研究中,可将LSTM 多特征预测模型和其他模型进行组合,综合地理位置、季节等其他信息,进一步提高预测精准度。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!