LSTM降雨径流模型
LSTM降雨径流模型
LSTM(长短期记忆网络)是一种特殊的循环神经网络(RNN),特别适用于处理时间序列数据。本文将介绍如何使用LSTM模型进行降雨径流模拟,包括深度学习的基本看法、LSTM的原理、实战案例的详细步骤以及实战成果展示。
LSM降雨日径流模拟
对深度学习的看法
现阶段无论什么深度学习模型,都没有真正揭示其背后的机理,但是效果已经被实践检验非常强大(如ChatGPT、豆包、AI换脸等)。对于深度学习模型,我们可以将其理解为一个非常强大的函数,这个函数我们不需要知道表达式是什么,但是我们知道这个函数的一大堆输入和输出后,这个函数就可以训练出来,并且在你下次输入后,就可以很好的预测输出。(注意,这里讲的是有监督类型,现阶段绝大多数模型都是有监督的,即需要传入标签数据,比如我们做图像识别,狗狗的图片需要打上标签“狗”,这也是很多我们登录一些网站进行验证时在做的事情,就是帮网站提供标签数据)。
深度学习不是计算机和AI的专属,它是一个数学方法、工具,可以应用于各行各业。我们会用它、会调它,就够了,至于是CNN、LSTM还是Transformer,背后的数学机理我们并不需要知道太多,知道怎么用于我们的数据,帮助解决我们的问题才是最重要的。
深度学习的使用
- 建议使用Pytorch,之前用过tensorflow和keras,Pytorch可以让我们对训练过程的理解更深刻,不过入门比其他两种门槛要高一点,但网上资源非常丰富
- 所有模型的使用,最关键的是模型的输入和输出(这里还是以有监督为例,绝大多数深度学习模型都是有监督的)
- 调参是一个技巧非常强的活,但其实究竟能调多好谁也不好说,最开始入门建议使用网格搜索就够了,后面可以用Optuna等框架
LSTM简介
长短期记忆网络(LSTM,Long Short-Term Memory)是一种特殊的循环神经网络(RNN),专为解决传统RNN在处理长序列数据时易出现的梯度消失或爆炸问题而设计。LSTM通过引入记忆单元和门控机制(输入门、遗忘门和输出门),能够有效捕获时间序列中的长期依赖关系。这使其在处理时间序列数据(如气象、径流、水文等领域)方面具有显著优势。
在水文领域,LSTM首次被用于径流预测时,即显示出了其巨大的应用潜力和科学价值。例如,Kratzert等人在2018年发表的开创性研究,首次系统性地将LSTM应用于径流预测任务,通过对美国流域大规模数据的验证,证明了LSTM模型能够显著提高流域日径流模拟的精度。相比于传统的水文模型(如SAC-SMA、GR4J等),LSTM不仅能够更好地拟合复杂的非线性关系,还无需依赖于精细的流域物理特性数据。这一研究不仅开辟了基于深度学习的水文建模新方向,还为实现数据驱动的精准径流预测提供了新工具。
随着LSTM的成功应用,更多学者在水文领域扩展了其应用范围,如水质预测、地下水位模拟和降水径流转换等。LSTM的强大能力表明,它能够突破传统水文模型的限制,为水资源管理和防洪减灾等领域提供更加可靠的技术支持。
认识LSTM网络
参考文章:https://colah.github.io/posts/2015-08-Understanding-LSTMs/ 虽然是英文,但是把LSTM结构讲的非常详细,可以使用翻译
感性理解(这里把绿色的框中的内容称为细胞):
- x指的是不同时间步的输入数据
- LSTM特殊的结构在于长期记忆(cn,最上面一条横线传递,贯穿所有细胞)和短期记忆(hn,下面的横线传递,只传入上一个细胞)
- 通过LSTM特殊的门控机制,每个细胞都会有隐层输出,对应最上面的ht,隐层可以有多层(比如向上叠加几层),但ht只会在最上面的隐层输出
- 看不太懂也没关系,如何具体使用LSTM模型,案例非常清晰,会套用和照搬就够了
实战介绍
目标:27年日径流数据预报
类型:典型的时序数据预测,类似的问题还有:逐日/月/年的气温降水预测、每日/分钟股价预测等等这类问题,完全通用
思路:
- 采用站点和流域内15个气象站的前3天数据,即前3天的本站径流和15个气象站的数据预测未来1d的径流量
- 划分训练期和测试期,制作训练期和测试期的样本和标签(非常关键,这部分会详细讲解,因为如前所说,深度学习模型能够跑通最重要的就是输入和输出)
- 对训练期和测试期数据分别进行归一化
- 使用DataLoader加载训练集和测试集(设置batch_size,由于内存容量的限制,不可能一次处理整个训练数据集。通过使用 batch size,可以确保每次迭代中使用的样本数量适合可用的内存。基本上所有的深度学习模型都会使用)
- 网络定义和训练,采用网格搜索法,记录每种参数方案的表现
- 找到最优模型参数,训练最优模型,在测试期数据集上进行预测
- 计算性能指标,本文可以定义的函数可以计算出rmse, mae, r_squared, nse, pbias 5种指标
- 结果可视化,代码提供了散点图和降雨径流过程图
实战成果
- 可以自动计算各项指标
- 绘制观测-模拟散点拟合图
- 绘制降雨径流过程线图(分训练期和测试期)
数据和代码获取
文章付费后,直接获取.ipynb代码文件和使用数据,代码文件可按顺序直接运行(前提是相关环境已经配置好,安装下面几个包即可),附赠代码实战运行过程视频。
本文使用到的包有:
torch,matplotlib,numpy,pandas,sklearn
文章链接:链接:link
实战代码逐一讲解
文章内查看。