采用 ALSTM 模型的温度和降雨关联预测研究论文学习记录

news/2024/4/30 7:10:37/文章来源:https://blog.csdn.net/pengxiang1998/article/details/127025049

为了准确和及时预测局部区域的降雨及温度,提出了一种基于 AttentionLSTM 组合模型( ALSTM) 的关联多值预测算法。该算法利用天气时间序列中 的前期数据,对下一小时的降雨量和温度进行关联预测,以此实现对天气要素的多值预测。该算法首先对输入数据进行归一化处理; 然后利用数据对ALSTM 模型进行训练; 最后将训练好的模型用于多值预测。

涉及:LSTM Attention机制 多变量

创新点

  • ① 区别于传统方法及浅层神经网络方法,该算法采用递归神经网络中的长短期记忆模型( long short-term memory,LSTM)
    形成深度循环神经网络,可从历史天气数据中,提取其深层特征,对未来的降雨和温度进行预测,取得了更好的预测结果;
  • ②将 LSTM 模型与 Attention 机制结合,使之更注重数据中的一些重要特征,从而提高了预测多目标数值的稳定性和正确率;
  • ③将两个或多个LSTM模型进行堆叠组合,将前一个模型的输出作为下一个模型的输入,这样可在同一模型中同时预测两个或多个关联值,这样更满足短时天气预测的需求。

雷达预测,气象卫星皆存在其局限性,神经网络快速发展,也想来凑凑热闹。
LSTM模型在这里就不过多介绍了,有需要了解的小伙伴可以去看博主关于LSTM的学习记录。

模型介绍

Attention 模型

Attention 模型最初被用于机器翻译,现在已被广泛运用于机器学习以及和许多神经网络模型相结合中。
简单的说,注意力机制类似于人去看一个图画,注意力往往会根据个人喜好的不同而对图画中某一区域,注入更多的注意力,即更倾向于关注图像中的部分重要信息。在 RNN 中,结合注意力机制可以使某些重要的因素更容易被捕获,数据内部逻辑结构的相关性也更容易被建模起来,这解决了因为处
理长序列输入而导致等待时间过久,权重分配不当的问题,从而提高预测性能。
传统编码器 解码器结构 如图 2 所示。输入序列( x1,x2,…,xt ) ,被 RNN 编码器编码为固定长度的向量( h1,h2,…,ht ) ,其中 t 表示输入序列长度。解码器通过已经编码过后的序列结合状态( s1,s2,…,st) 生成一个输出序列( y1,y2,…,yt ) ,其中 t 表示输出序列长度。在此编码过程中的 ht以及解码过程中的 st 都表示不同解码器的隐状态。
在这里插入图片描述

注意力机制的相应编码器 解码器体系结构如图 3 所示。注意力权重 αij 在编码过程中自动学习,并自动捕获 hi 和 sj ,其隐状态的相关性也在此过程中被发现,此后,注意力机制构建内容向量 c ,即分配更精准的注意力权重。该权重用于构建解码过程中的 sj 和编码过程中的 hi 更合理的转换,其中内
容向量 cj 是编码器所有隐状态及其相应注意力权重相乘的加权和,其计算公式如下:
在这里插入图片描述
注意力机制的加入类似于前馈神经网络。而与前馈网络不同的是,注意力机制在学习过程中学习一个特殊的注意力权重 αij,以此构建 hi 和 sj-1 的转换函数。

ALSTM 模型

在气象研究问题中,气温和降雨存在着相关性,但是现存的神经网络模型往往只能预测某一短期天 气数值。为了预测多个天气数值,将 LSTM
神经网络堆叠形成深度关联循环神经网络,将第一个输出值 作为第二个预测值的输入; 并在此基础上加入 Attention 机制,因而得到了基于
Attention 和 LSTM 组合的多值预测模型( ALSTM) 。ALSTM 模型结构如图 4 所示。

在这里插入图片描述

ALSTM 模型的数据流程如图 5 所示。在训练开始时,天气数据通过输入层同时进入两个分支,这两个分支分别预测空气温度和降雨,模型在预测空气温度后将其作为预测降雨的输入参数,以此产生多值关联预测。

在这里插入图片描述
在模型的训练阶段中,总误差 Ltotle 用来作为模型预测结果的评估,训练阶段的目标是获取最小的总误差,总误差的计算公式如下:
在这里插入图片描述

参数设计和算法设计

参数设计

在传统的 LSTM 神经网络输入中有一个步长参数,表示预测值与多少历史数据有关。为了在ALSTM模型的实验中使用较好的步长,采用 10000 个样本数据,步长分别为 3、5、10、20,迭代次数为 50
次进行对比实验,平均误差变化分别如图所示:
在这里插入图片描述
选定不同步长时,收敛速度相差不大,但在选定步长为 10 时,下降曲线较为平缓。故选取步长 10 作为 ALSTM 模型的步长。

算法设计

本文所采用的算法建立在深度学习的基础上,将 Adam 算法作为梯度下降的算法,ALSTM 的步长设置为 10,神经元个数设置为 300,模型学习率为 0. 0006,dropout 层定义为 0. 99 的损失比。深度学习通常需要大量的时间和计算资源来训练。因此需要找到一种资源少、收敛速度快的优化算法,而 Adam 优化算法在求解非凸优化问题上具有很大的优势,它的本质是对随机梯度下降算法的扩展。
算法在训练阶段,将 Ltotle 做为算法的评价函数,算法包含两个关联的 DRNN 网络。具体的算法步骤如下:
Step 1: 接受输入,通过正则化函数将数据归一化,温度和累计雨量作为第一个预测输出和第二个预测输出。
Step 2: 设置每轮训练数量为 500 个,训练次数为 100 次,建立 LSTM 接收输入,激活函数为 relu 函数,加入 Attention 机制,为其分配权重,最后的输出变成了注入 Attention 机制的加权求和温度值,得到第一个温度误差 M 以及第一个预测的空气温度值 T。
Step 3: 根据已经正则化的输入以及预测的空气温度值,再次利用 ALSTM 模型去预测降雨值,得到第二个降雨误差值 R 和预测降雨量 P。
Step 4: 根据两个误差值相加得到总误差值 Ltotle ,然后利用 Adam 算法对总误差之进行优化,将总误差值降低,如果总误差值没有变化或者当达到训练迭代次数时,算法结束。
在这里插入图片描述

实验结果和分析

在本文算法实验中,采用均方误差( mean absolute error,MSE) 作为训练阶段计算训练偏差程度的评价指标,因 MSE 是参数的估计值与参数的真值之差的平方的期望值,能更好地反应模型对数据的拟合情况,其值用字母 E 表示,计算公式如下:
在这里插入图片描述

测试阶段的实验分析

为了验证模型的预测效果,采用测试数据集对模型进行了验证,测试数据按照时间顺序排列。在本实验中,采用绝对误差( mean absolute error,MAE) 作为计算偏差程度的评价指标,能更好地反映预测值与真实值存在的误差的真实情况,并用 1 - MAE 的结果作为模型的精度评价指标。用字母 A 表示 MAE的大小,计算公式如下:
在这里插入图片描述

结论

本文提出了 ALSTM 预测算法。给出了 ALSTM 的模型结构、算法框架设计,并将 ALSTM 算法与 LSTM、BP 和 DRNN 网络算法进行了性能对比实验。通过 4 种算法在温度和降雨方面的预测结果对 比,验证了 ALSTM 模型的准确性及可行性。实验结果表明,ALSTM模型不仅优于其他 3 种神经网络模 型,并且还能同时预测两个天气数值,且平均精度在 97 %以上。这也说明了天气数据相互之间存在关 联性。但 ALSTM 仍存在一些有待改进的地方,例如在训练阶段使用简单的算术平均算法来计算总误差,目标是通过减少总误差来优化模型。这种误差计算方法没有考虑各个误差之间的关系,也没有考虑总误差最小时的一些细节,如各子误差的极端情况和误差减少过程中的振荡。下一步,我们将研究输入参数的优化,以及输入参数之间的关系,以提高模型的平均精度。相信在不久的将来,更准确的天气数 据将能被人们所预测。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_13301.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个项目带你走进接口自动化测试

文章目录前言一、项目环境搭建二、项目分析三、框架搭建1、解决登录问题、获取token2、熟悉项目的接口请求方式、二次封装requests请求3、缓解业务请求接口参数臃肿4、重新封装logging日志5、通用方法编写四、编写自动化脚本场景业务需求单接口业务需求五、生成测试报告六、写在…

CSDN线上竞赛编程第六期参赛心得

CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16 (请不要删掉此地址) CSDN线上竞赛编程第六期参赛心得前言/背景大赛简介参赛流程参赛经历解题思路1、题目名称:严查枪火2、题目名称:鬼画符门3、题目名称…

HDMI/DVI____TMDS编码

一.编码步骤:基本方法:取第一位数据为初值,接下来输入的每一位与前一导出的位(根据判断条件)进行异或XOR或者同或XNOR(最小化传输);最后选择性反转这9bit数据(DC平衡处理)。 ①DE为高电平时,对8位RGB数据编码,第9bit表示采用了XOR / XNOR ,第10bit表示是否翻转。 …

04代码

import datetime #定义一个列表 mot=["今天星期一:\n坚持下去不是因为我很坚强,而是因为我别无选择。","今天星期二:\n含泪播种的人一定能笑着收获。","今天星期三:\n作对的事情比把事情做对更重要。","今天星期四:\n命运给予我们的不是失…

【NLP】自然语言处理的序列建模

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

Teams Bot App 初探

上一篇文章深入讲了incoming webhook。这篇文章我们来看一个稍微复杂点的,正式点的 teams app:bot。 我们先来和之前一样,通过teams toolkit 的 sample gallery来创建一个 Teams bot app。 创建之后我们先来看一下目录结构和生成的文件。 一…

二叉树中求最大路径和

题目来自LeetCode中,链接为124. 二叉树中的最大路径和 一棵树的最大路径和可能存在于哪里: 单纯的存在于以左子树为根节点的子树中单纯的存在于以右子树为根节点的子树中根节点到达左子树B中某节点的路径根节点到达右子树C中某节点的路径左子树中某节…

Android日志分析02-am篇

Android日志分析02-am篇 在日常分析bug时,免不了和系统ActivityManagerService打交道,根据日志去查看各个Activity的生命周期,从而判断是否出现Activity生命周期异常。 先使用adb logcat和adb bugreport再pixel2的模拟器抓取一份从开机到打开…

代码随想录4——链表: 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题02.07链表相交、142.环形链表II

文章目录1.24两两交换链表中的节点1.1.题目1.2.思路1.3.代码实现1.3.1.对next指针的理解1.3.2.编程中要备份哪些节点的指针?1.3.3.代码实现2.19删除链表的倒数第N个节点2.1.题目2.2.思路3.面试题02.07链表相交3.1.题目3.2.解答4.142.环形链表II4.1.题目4.2.思路1.24…

JavaEE——No.1 多线程案例

JavaEE传送门JavaEE JavaEE——No.1 线程安全问题 JavaEE——No.2 线程安全问题 目录多线程案例1. 单例模式饿汉模式懒汉模式2. 阻塞队列阻塞队列的使用阻塞队列的实现多线程案例 1. 单例模式 单例模式是一种常见的设计模式. 设计模式: 软件开发时, 会遇到一些常见的 “问…

存储系统基本概念

内容框图 存储器的层次化结构 由于cpu运行太快,所以中间需要主存,Cache,寄存器去传递。 主存–辅存(硬件操作系统):实现虚拟存贮系统,解决了主存容量不够的问题。 Cache–主存(硬件自…

测试用例设计专栏

哈喽大家好哎呀,今天给大家普及一下测试用例如何设计,看牛逼的大佬们是如何测试的。 测试用例笔试题 出题:在一个页面上有一个输入框,一个计数器(count)按钮,用于计算一个文本字符串中字母a出现的次数,请…

Linux 逻辑卷精简卷报错问题解决

一、 故障描述 现象1:oraclelog目录提示坏道信息,进行修复后执行删除文件操作,目录不可使用。 现象2:lsblk看到目录出现重复,并且有tmeta,tdata卷出现(图一) 现象3:message日志出现多目录报错,持续写入(图二) 图一 检查lv #lvs -a 看到多出的pmspare,tdata,tmeta…

VSCode 使用教程-9.Node运行js出现 Cannot use import statement outside a module的问题

前言 js中导入公共模块,使用import的方式导入,用node运行js文件会出现Cannot use import statement outside a module的问题 问题描述 目录结构 └─src└─js└─ext.js└─main.js └─index.html在ext.js 文件写一些公共方法 export const m (f…

vue3 ts vite 项目快速构建

1.安装nodejs(建议装14版本稳定) 下载 | Node.js 中文网 装完之后会有一个命令叫 npm 可以在终端输入npm -v 来检查是否安装成功2.构建vite项目官方文档开始 {#getting-started} | Vite中文网 vite 的优势冷服务 默认的构建目标浏览器是能 在 script 标签上支持原生 ESM 和…

Java操作HDFS

1. 创建maven项目 New Project 2. 添加依赖 <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client --><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.…

steam搬砖汇率差项目详解

很久没有分享赚钱项目了&#xff0c;今天这里给大家介绍一个游戏搬砖的项目&#xff1a;steam游戏汇率差赚钱项目。 项目原理&#xff1a; Steam平台是一个国外游戏及装备售卖平台。而我们所谓的Steam游戏装备搬砖就是利用steam平台和网易的BUFF平台来操作。steam汇率差赚钱原…

十大经典排序算法综述(Java代码实现,思想通用)

关于十大排序的文章也有不少了&#xff0c;但感觉大部分在各个排序算法的适用场景、如何实现外排等细节方面没怎么讲&#xff0c;故总结了这篇文章&#xff0c;欢迎浏览 一、前言 内部排序是指排序时将待排序数据全部加载到内存的算法。 外部排序是指在处理海量数据排序时&…

什么是C语言?

什么是C语言&#xff1f; 文章目录什么是C语言&#xff1f;1.C语言的起源2.C语言的使用领域3. 为什么要学习C语言4.C语言的学习境界5.如何学习C语言6.学习C语言的推荐书籍1.C语言的起源 C语言之父是丹尼斯里奇&#xff1a;丹尼斯里奇&#xff08;1941年9月9日-2011年10月12日&…

Linux 简单命令 - cron 计划任务 、NTP

Linux 简单命令 - cron NTP cronNTP 一、cron 计划任务就是按照系统的时间(时刻、周期)执行指定的任务 系统服务&#xff1a; crond。 配置文件&#xff1a; /etc/crontab /var/spool/cron/用户名 配置记录格式&#xff1a; 分 时 日 月 周 任务操作命令 (用绝对路径、必要时…