基于Python实现的深度学习技术在水文水质领域应用
目录
一、深度学习的基本概念和发展现状
二、Python系列开源软件包基本用法
三、前馈神经网络模型、原理和代码实现
四、前馈神经网络模型在水质、水位预测中的应用
五、卷积神经网络模原理、结构和应用,与支持向量机进行比较
六、循环神经网络原理与结构
七、循环神经网络在水质综合评价和水文预报中的应用
更多模型
当前,深度学习作为人工智能的热门技术发展迅速,以其强大的非线性和不确定性处理能力在图像识别、语音识别、自然语言处理等领域取得了显著的成效。它是一种端到端的处理方法,在训练算法的指导下,深层神经网络自发地从原始数据中进行抽象,提炼关键特征,对结果做出预报,中间过程不需要人工干预,尤其适合解决样本和结论容易获取但样本导致结论的原因难以清晰界定的问题。
水质综合评价和预测是水环境科学的重要研究内容,它以定量特征直观地描述水环境质量的状态,在此基础上开展对当前水质的综合评价和未来一段时间内水质状态的预测。在水质评价方面,传统方法主要有综合指数法、模糊综合评价法、灰色模式识别法等,这些方法都包含了一些主观因素,如隶属度函数和各指标的权重等,导致结果具有一定的主观性,适用性不强;在水质预测方面,传统方法主要有线性回归法、灰色模型预测法等,这些方法都不能很好地反应数据之间的内在关联和时间序列特征,在实际中预测效果欠佳。水文预报是防汛抗旱决策、水资源综合利用、生态环境保护以及水利水电工程运行管理的重要依据,它根据前期和现时已知的水文气象资料,对未来一定时间水文要素的状态作出定量的预测。传统方法主要研究流域产汇流以及洪水传播的原理进行预报,但是实际情况复杂,简化后的数学模型往往难以获取足够详细的数据或者存在较大的系统性误差。在水文水质领域,基于神经网络的深度学习方法则能弥补上述不足,它能自动寻找输入和输出数据之间的内在关联,不需要人工显式地给出原理,直接由算法在数据中学习评价和预测规则,适合当前大数据背景下的多种应用,且近年来深度学习技术在水文水质领域亦取得了丰硕的研究成果。
【目标】:
1、深度学习的基本概念和发展现状
2、Numpy、Matplotlib、Openpyxl、TensorFlow、scikit-learn、cv2和PIL的基本用法
3、前馈神经网络基本原理和模型结构
4、前馈神经网络在水位预测、水质预测中的应用
5、卷积神经网络基本原理和模型结构、支持向量机原理
6、卷积神经网络和支持向量机在水质综合评价中的应用
7、循环神经网络基本原理和模型结构
8、循环神经网络在水质预测和水文预报中的应用
9、综合案例:水动力学难题之一的大型水库水位计算问题
一、深度学习的基本概念和发展现状
介绍深度学习的基本原理、应用领域、当前取得的进展。
1.1 深度学习的基本原理:从生物网络到人工神经网络
一个生物神经元就是一个可以接受、发射脉冲信号的细胞。树突接受其他神经元的脉冲信号,而轴突将输出脉冲传递给其他神经元。人工神经元是把一个神经元看做一个计算单元,对输入进行线性组合,然后通过一个非线性的激活函数作为输出。人工神经网络是对生物神经元的一种模拟,用数值方法模拟人的思维过程。深度学习以人工神经网络为基础,通过构建一个多层的表示学习结构,使用一系列非线性变换操作把从原始数据中提取的简单特征进行组合,从而得到更高层、更抽象的表示。
1.2 应用领域
目前在语音、图像、视频、自然语言处理等通用领域发展迅速,在垂直领域,如医药、金融、法律和水文水资源领域有一定的应用。
1.3 当前取得的进展
1.4 在水文水质领域的应用
随着信息技术的发展,近十几年来,我国各大流域累计的水文、气象、水环境数据逐渐增多,许多学者和研究人员开始意识到这些数据的潜在价值,纷纷开展基于深度学习模型的水文预报、水质评价和预测的研究,目前也取得了丰硕的成果。
二、Python系列开源软件包基本用法
Python广受研究人员和工程人员欢迎的重要原因是可以轻量级运行,以及具有非常广泛的第三方开源软件包的支持。本次课程主要介绍基于python的机器学习软件包基本用法。
2.1 Python基础
(1)元组、列表、字典数据类型的定义和基本用法
(2)Python中字符串的处理和数据类型转换
(3)Python读取和写入文本文件方法
2.2 Numpy基本用法
(1)Numpy数组的概念和定义方法
(2)数组数据的访问方法
(3)Numpy中随机数生成、常用的线性代数计算函数
(4)Numpy中文本文件、二进制文件的读取和保存
2.3 Matplotlib基本用法
Matplotlib基本绘图、子图划分、双坐标轴绘图以及颜色、标记、线型、刻度、标签、注解的设置等。
2.4 Openpyxl处理Excel基本用法
(1)加载和保存Excel文件的方法
(2)获取Excel中的数据
(2)读取和写入Excel文件
2.5 scikit-learn
scikit-learn是机器学习中封装好的包,本次课程主要介绍支持向量机和决策树的调用方法。
2.6 TensorFlow基本用法
(1)算子、数据流、张量、占位符、变量基本概念
(2)TensorFlow的应用实例
(3)TensorBoard过程可视化的用法
2.7 cv2、PIL基本用法
(1)读取图片数据
(2)图片和矩阵之间的转换
(3)图片可视化
三、前馈神经网络模型、原理和代码实现
借助前馈神经网络介绍深度学习有关的基本概念和数学基础,并使用TensorFlow实现通用前馈神经网络模型架构。
3.1 前馈神经网络原理与结构
(1)数据集的划分:训练集、测试集、验证集;
(2)激活函数:sigmoid函数、双曲正切函数tanh、修正线性单元ReLU;
(3)Softmax分类器:分类器通常放在网络的最后一层;
(4)目标函数:衡量预测和实测结果之间差异的函数,通过目标函数进行优化得出模型参数。
(5)正则项:防止模型过拟合的有效方法。
(6)反向传播算法:计算神经网络梯度的经典算法,在实践中计算时由TensorFlow代劳,无需开发者自己推导公式。
(7)模型训练和参数优化:mini-batch训练策略和梯度下降法。
3.2 基于TensorFlow实现的前馈神经网络模板
基于TensorFlow实现前馈神经网络的基本模板设计,在应用过程中,只需要更换数据集,重新调试参数,基本的模型代码不需修改。
四、前馈神经网络模型在水质、水位预测中的应用
4.1 TensorFlow实现多层前馈神经网络,用于水质预测
绿水青山就是金山银山,在环境保护日益受到政府各部门重视的情况下,水污染尤其是水质状况的发展趋势研究就显得极为重要。本部分使用多层前馈神经网络开展水质预测研究,根据某流域重点河段重点监测点位 1986—1995年 DO 的实际监测值开展实验。使用1986-1994年的检测结果作为训练集,对1995年的值做出预测。
通过本部分的学习,可以深入理解前馈神经网络的原理和基于TensorFlow的实现方法,为后续实现卷积神经网络和循环神经网络打好基础。
4.2 TensorFlow实现多层前馈神经网络,用于水位预测
水库建成以后,为了在枯水期蓄满库容,充分发挥发电效益,通常会减少下泄流量,容易导致下游河道湖泊的来流量减少,引发干旱,导致生态环境问题。本实例研究某水库建成后,其下泄流量与下游某湖泊水位之间的关系,根据水库下泄流量预测湖泊水位。
五、卷积神经网络模原理、结构和应用,与支持向量机进行比较
5.1 卷积操作
5.2 池化操作
5.3 卷积网络的基本结构
5.4 卷积神经网络在水质综合评价中的应用
卷积神经网络主要处理图像类数据。本部分使用的数据集是某地区多个罗非鱼池塘的水样数据,包含水产专家按照水色判断水质分类的数据以及用数码相机按照标准进行水色采集的数据,每个水质图片命名规则为“类别_编号.jpg”。本任务是根据这些图像数据,利用图像处理技术,通过水色图像实现水质的综合评价。本数据集共有203张图片,共5个类别。
5.5 支持向量机的基本原理和应用
介绍支持向量机的原理,并使用5.4中的水色图像数据进行分类,与卷积神经网络进行对比分析。
六、循环神经网络原理与结构
6.1 循环神经网络结构
循环神经网络是最适合时间序列预测任务的模型,在每一步合成计算过程中,它都能够考虑到前面时间节点的信息,非常适合处理水文方面的任务以及研究。图13-15是经典的循环神经网络结构。
6.2 循环神经网络在水质预测中的应用
使用4.1中的数据进行预测,结果如下:
七、循环神经网络在水质综合评价和水文预报中的应用
7.1 循环神经网络在水文预报中的应用
在大型河网中,下游站点的流量通常由上游干、支流控制站点的流量以及区间降雨构成。但由于水雨情的不同,上游站点流量和降雨到达下游站点的时间处于变化中,难以精确测量和计算。本实验借助时间窗口的概念,扩展模型对不同水雨情的适应能力,同时使用RNN和Attention机制在历史数据中挖掘流量传播机制,开展水文预报。具体内容包含以下几个方面:
(1)使用python实现传统的合成流量法;
(2)基于时间窗口概念,使用python实现多维度的合成流量法,并与传统合成流量法进行比较;
(3)构建深度神经网络模型,以各个上游站点的流量过程为模型的输入,结合时间窗口的概念,对下游站点的流量开展预报;
(4)在第(3)步的基础上,增加attention机制,并与(3)中的方法进行比较
在本部分的研究过程中,将详细介绍模型的实现细节,以便使学员能够理解并掌握模型的精髓,能够根据实际问题设计模型,而不是照搬照抄式的套用模型,只有这样才具备一定的创新能力。
7.2 综合案例
水动力学难题之一的大型水库水位计算问题。基于圣维南方程组的水动力学模型是计算大型水库水位的有力方法,然而实际中模型的输入边界(各支流入口流量)难以确定,给计算造成困扰,可以借助深度学习方法解决这一问题。下图是某个大型水库运用水动力学方法计算的水位和深度学习方法计算水位的对比图。
更多模型
●SWAT模型在水文水资源、面源污染模拟中的实践技术应用及典型案例分析
●HSPF(Hydrological Simulation Program Fortran)模型学习
●HYPE分布式水文模型建模方法与案例分析
●HEC-HMS水文模型实践技术应用
●HEC-RAS一维、二维建模方法及应用
●Delft3D水动力-富营养化模型实践应用
●基于Delft3D模型的标量输运、波浪、拉格朗日粒子及溢油模型应用
●Delft3D建模、水动力模拟方法及在地表水环境影响评价中的应用
●AQUATOX水环境与水生态模型实践技术应用
●地理信息系统(ArcGIS)在水文水资源、水环境中的应用及案例分析
●基于FVCOM模型的三维水动力、水交换、溢油物质扩散及输运数值模拟
●FVCOM流域、海洋水环境数值模拟方法及应用