如何用matlab构建一个三层bp神经网络模型,用于预测温度。

如何用matlab构建一个三层bp神经网络模型,用于预测温度。,第1张

第0节、引例

本文以Fisher的Iris数据集作为神经网络程序的测试数据集。Iris数据集可以在http://enwikipediaorg/wiki/Iris_flower_data_set 找到。这里简要介绍一下Iris数据集:

有一批Iris花,已知这批Iris花可分为3个品种,现需要对其进行分类。不同品种的Iris花的花萼长度、花萼宽度、花瓣长度、花瓣宽度会有差异。我们现有一批已知品种的Iris花的花萼长度、花萼宽度、花瓣长度、花瓣宽度的数据。

  一种解决方法是用已有的数据训练一个神经网络用作分类器。

  如果你只想用C#或Matlab快速实现神经网络来解决你手头上的问题,或者已经了解神经网络基本原理,请直接跳到第二节——神经网络实现。

第一节、神经网络基本原理

1 人工神经元( Artificial Neuron )模型

人工神经元是神经网络的基本元素,其原理可以用下图表示:

图1 人工神经元模型

图中x1~xn是从其他神经元传来的输入信号,wij表示表示从神经元j到神经元i的连接权值,θ表示一个阈值 ( threshold ),或称为偏置( bias )。则神经元i的输出与输入的关系表示为:

  图中 yi表示神经元i的输出,函数f称为激活函数 ( Activation Function )或转移函数 ( Transfer Function ) ,net称为净激活(net activation)。若将阈值看成是神经元i的一个输入x0的权重wi0,则上面的式子可以简化为:

  若用X表示输入向量,用W表示权重向量,即:

X = [ x0 , x1 , x2 , , xn ]

  则神经元的输出可以表示为向量相乘的形式:

若神经元的净激活net为正,称该神经元处于激活状态或兴奋状态(fire),若净激活net为负,则称神经元处于抑制状态。

图1中的这种“阈值加权和”的神经元模型称为M-P模型 ( McCulloch-Pitts Model ),也称为神经网络的一个处理单元( PE, Processing Element )。

2 常用激活函数

激活函数的选择是构建神经网络过程中的重要环节,下面简要介绍常用的激活函数。

(1) 线性函数 ( Liner Function )

(2) 斜面函数 ( Ramp Function )

(3) 阈值函数 ( Threshold Function )

以上3个激活函数都属于线性函数,下面介绍两个常用的非线性激活函数。

(4) S形函数 ( Sigmoid Function )

  该函数的导函数:

(5) 双极S形函数

  该函数的导函数:

  S形函数与双极S形函数的图像如下:

图3 S形函数与双极S形函数图像

  双极S形函数与S形函数主要区别在于函数的值域,双极S形函数值域是(-1,1),而S形函数值域是(0,1)。

  由于S形函数与双极S形函数都是可导的(导函数是连续函数),因此适合用在BP神经网络中。(BP算法要求激活函数可导)

具体http://blogcsdnnet/gongxq0124/article/details/7681000/

极端气温、降雨与洪水之间有一定的联系。根据1958~2007年广西西江流域极端气温、极端降雨和梧州水文站洪水数据,以第5章相关分析所确定的显著影响梧州水文站年最大流量的测站的相应极端气候因素(表422)为输入,建立人工神经网络模型。

4511 BP神经网络概述

(1)基于BP算法的多层前馈网络模型

采用BP算法的多层前馈网络是至今为止应用最广泛的神经网络,在多层的前馈网的应用中,如图420所示的三层前馈网的应用最为普遍,其包括了输入层、隐层和输出层。

图420 典型的三层BP神经网络结构

在正向传播中,输入信息从输入层经隐含层逐层处理,并传向输出层。如果输出层不能得到期望的输出结果,则转入反向传播,将误差信号沿原来的连同通路返回,通过修改各层神经元的权值,使得误差最小。BP算法流程如图421所示。

图421 BP算法流程图

容易看出,BP学习算法中,各层权值调整均由3个因素决定,即学习率、本层输出的误差信号以及本层输入信号y(或x)。其中,输出层误差信号同网络的期望输出与实际输出之差有关,直接反映了输出误差,而各隐层的误差信号与前面各层的误差信号都有关,是从输出层开始逐层反传过来的。

1988年,Cybenko指出两个隐含层就可表示输入图形的任意输出函数。如果BP网络只有两个隐层,且输入层、第一隐含层、第二隐层和输出层的单元个数分别为n,p,q,m,则该网络可表示为BP(n,p,q,m)。

(2)研究区极端气温、极端降雨影响年最大流量过程概化

极端气温、极端降雨影响年最大流量的过程极其复杂,从极端降雨到年最大流量,中间要经过蒸散发、分流、下渗等环节,受到地形、地貌、下垫面、土壤地质以及人类活动等多种因素的影响。可将一个极端气候-年最大流量间复杂的水过程概化为小尺度的水系统,该水系统的主要影响因子可通过对年最大流量影响显著的站点的极端气温和极端降雨体现出来,而其中影响不明显的站点可忽略,从而使问题得以简化。

BP神经网络是一个非线形系统,可用于逼近非线形映射关系,也可用于逼近一个极为复杂的函数关系。极端气候-年最大流量水系统是一个非常复杂的映射关系,可将之概化为一个系统。BP神经网络与研究流域的极端气候-年最大流量水系统的结构是相似的,利用BP神经网络,对之进行模拟逼近。

(3)隐含层单元数的确定

隐含层单元数q与所研究的具体问题有关,目前尚无统一的确定方法,通常根据网络训练情况采用试错法确定。在训练中网络的收敛采用输出值Ykp与实测值tp的误差平方和进行控制

变环境条件下的水资源保护与可持续利用研究

作者认为,虽然现今的BP神经网络还是一个黑箱模型,其参数没有水文物理意义,在本节的研究过程中,将尝试着利用极端气候空间分析的结果来指导隐含层神经元个数的选取。

(4)传递函数的选择

BP神经网络模型算法存在需要较长的训练时间、完全不能训练、易陷入局部极小值等缺点,可通过对模型附加动量项或设置自适应学习速率来改良。本节采用MATLAB工具箱中带有自适应学习速率进行反向传播训练的traingdm( )函数来实现。

(5)模型数据的归一化处理

由于BP网络的输入层物理量及数值相差甚远,为了加快网络收敛的速度,使网络在训练过程中易于收敛,对输入数据进行归一化处理,即将输入的原始数据都化为0~1之间的数。本节将年极端最高气温的数据乘以001;将极端最低气温的数据乘以01;年最大1d、3d、7d降雨量的数据乘以0001;梧州水文站年最大流量的数据乘以000001,其他输入数据也按类似的方法进行归一化处理。

(6)年最大流量的修正

梧州水文站以上的流域集水面积为3270万km2,广西境内流域集水面积为2024万km2,广西境内流域集水面积占梧州水文站以上的流域集水面积的6191%。因此,选取2003~2007年梧州水文站年最大流量和红水河的天峨水文站年最大流量,分别按式410计算每年的贡献率(表425),取其平均值作为广西西江流域极端降雨对梧州水文站年最大流量的平均贡献率,最后确定平均贡献率为7688%。

变环境条件下的水资源保护与可持续利用研究

表425 2003~2007年极端降雨对梧州水文站年最大流量的贡献率

建立“年极端气温、降雨与梧州年最大流量模型”时,应把平均贡献率与梧州水文站年最大流量的乘积作为模型输入的修正年最大流量,而预测的年最大流量应该为输出的年最大流量除以平均贡献率7688%,以克服极端气温和降雨研究范围与梧州水文站集水面积不一致的问题。

4512年极端气温、年最大1d降雨与梧州年最大流量的BP神经网络模型

(1)模型的建立

以1958~1997年年极端最高气温、年极端最低气温、年最大1d降雨量与梧州水文站年最大流量作为学习样本拟合、建立“年极端气温、年最大1d降雨-梧州年最大流量BP神经网络模型”。以梧州气象站的年极端最高气温,桂林、钦州气象站的年极端最低气温,榜圩、马陇、三门、黄冕、沙街、勾滩、天河、百寿、河池、贵港、金田、平南、大化、桂林、修仁、五将雨量站的年最大1d降雨量为输入,梧州水文站年最大流量为输出,隐含层层数取2,建立(19,p,q,1)BP神经网络模型,其中神经元数目p,q经试算分别取16和3,第一隐层、第二隐层的神经元采用tansig传递函数,输出层的神经元采用线性传递函数,训练函数选用traingdm,学习率取01,动量项取09,目标取00001,最大训练次数取200000。BP网络模型参数见表426,结构如图422所示。

图422年极端气温、年最大1d降雨-梧州年最大流量BP模型结构图

表426 BP网络模型参数一览表

从结构上分析,梧州水文站年最大流量产生过程中,年最高气温、年最低气温和各支流相应的流量都有其阈值,而极端气温和极端降雨是其输入,年最大流量是其输出,这类似于人工神经元模型中的阈值、激活值、输出等器件。输入年最大1d降雨时选用的雨量站分布在14条支流上(表427),极端降雨发生后,流经14条支流汇入梧州,在这一过程中极端气温的变化影响极端降雨的蒸散发,选用的雨量站分布在年最大1d降雨四个自然分区的Ⅱ、Ⅲ、Ⅳ3个区。该过程可与BP神经网络结构进行类比(表428),其中, 14条支流相当于第一隐含层中的14个神经元,年最高气温和年最低气温相当于第一隐含层中的2个神经元,年最大1d降雨所在的3个分区相当于第二隐含层的3个神经元,年最高气温、年最低气温的影响值和各支流流量的奉献值相当于隐含层中人工神经元的阈值,从整体上来说,BP神经网络的结构已经灰箱化。

表427 选用雨量站所在支流一览表

表428 BP神经网络构件物理意义一览表

(2)训练效果分析

训练样本为40个,经过113617次训练,达到精度要求。在命令窗口执行运行命令,网络开始学习和训练,其训练过程如图423所示,训练结果见表429和图424。

表429年最大流量训练结果

图423 神经网络训练过程图

图424年最大流量神经网络模型训练结果

从图426可知,训练后的BP网络能较好地逼近给定的目标函数。从训练样本检验结果(表45)可得:1958~1997年40年中年最大流量模拟值与实测值的相对误差小于10%和20%的分别为39年,40年,合格率为100%。说明“年极端气温、年最大1d降雨- 梧州年最大流量预测模型”的实际输出与实测结果误差很小,该模型的泛化能力较好,模拟结果较可靠。

(3)模型预测检验

把1998~2007年梧州气象站的年极端最高气温,桂林、钦州气象站的年极端最低气温,榜圩、马陇、三门、黄冕、沙街、勾滩、天河、百寿、河池、贵港、金田、平南、大化、桂林、修仁、五将雨量站的年最大1d降雨量输入到“年极端气温、年最大1d降雨梧州年最大流量BP神经网络模型”。程序运行后网络输出预测值与已知的实际值进行比较,其预测检验结果见图425,表430。

图425年最大流量神经网络模型预测检验结果

表430 神经网络模型预测结果与实际结果比较

从预测检验结果可知:1998~2007年10年中年最大流量模拟值与实测值的相对误差小于20%的为9年,合格率为90%,效果较好。

4513年极端气温、年最大7d降雨与梧州年最大流量的BP神经网络模型

(1)模型的建立

以1958~1997年年极端最高气温、年极端最低气温、年最大7d降雨量和梧州水文站年最大流量作为学习样本来拟合、建立“年极端气温、年最大7d降雨- 梧州年最大流量BP神经网络模型”。以梧州气象站的年极端最高气温,桂林、钦州气象站的年极端最低气温,凤山、都安、马陇、沙街、大湟江口、大安、大化、阳朔、五将雨量站的年最大7d降雨量为输入,梧州水文站年最大流量为输出,隐含层层数取2,建立(12,p,q,1)BP神经网络模型,其中,神经元数目p,q经试算分别取10和4,第一隐层、第二隐层的神经元采用tansig传递函数,输出层的神经元采用线性传递函数,训练函数选用traingdm,学习率取01,动量项取09,目标取00001,最大训练次数取200000。BP网络模型参数见表431,结构如图426所示。

表431 BP网络模型参数一览表

图426年极端气温、年最大7d降雨-梧州年最大流量BP模型结构图

本节输入年最大7d降雨时选用的雨量站分布在8条支流上(表432),在发生极端降雨后,流经8条支流汇入梧州,在这一过程中极端气温的变化影响极端降雨的蒸散发,且选用的雨量站分布在年最大7d降雨四个自然分区的Ⅰ、Ⅱ、Ⅲ、Ⅳ4个区中。该过程可与BP神经网络结构进行类比(表433),其中,8条支流相当于第一隐含层中的8个神经元,年最高气温和年最低气温相当于第一隐含层中的2个神经元,年最大7d降雨所在的4个分区相当于第二隐含层的4个神经元,整体上来说,BP神经网络的结构已经灰箱化。

表432 选用雨量站所在支流一览表

表433 BP神经网络构件物理意义一览表

(2)训练效果分析

训练样本为40个,经过160876次的训练,达到精度要求,在命令窗口执行运行命令,网络开始学习和训练,其训练过程如图427所示,训练结果见表434,图428。

图427 神经网络训练过程图

表434年最大流量训练结果

图428年最大流量神经网络模型训练结果

从图428可知,训练后的BP网络能较好地逼近给定的目标函数。由训练样本检验结果(表434)可得:1958~1997年40年中年最大流量模拟值与实测值的相对误差小于10%和20%的,分别为38年、40年,合格率为100%。说明“年极端气温、年最大7d降雨-梧州年最大流量BP神经网络模型”的泛化能力较好,模拟的结果较可靠。

(3)模型预测检验

把1998~2007年梧州气象站的年极端最高气温,桂林、钦州气象站的年极端最低气温,凤山、都安、马陇、沙街、大湟江口、大安、大化、阳朔、五将雨量站的年最大7d降雨量输入到“年极端气温、年最大7d降雨- 梧州年最大流量BP神经网络模型”。程序运行后网络输出预测值与已知的实际值进行比较,其预测结果见图429和表435。

图429年最大流量神经网络模型预测检验结果

表435 神经网络模型预测结果与实际结果比较

由预测检验结果可知:1998~2007年10年中年最大流量模拟值与实测值的相对误差小于20%的为7年,合格率为70%,效果较好。

4514 梧州年最大流量-年最高水位的BP神经网络模型

(1)模型的建立

以1941~1997年梧州水文站的年最大流量与年最高水位作为学习样本来拟合、建立梧州水文站的“年最大流量-年最高水位BP神经网络模型”。以年最大流量为输入,年最高水位为输出,隐含层层数取1,建立(1,q,1)BP神经网络模型,其中,神经元数目q经试算取7,隐含层、输出层的神经元采用线性传递函数,训练函数选用traingdm,学习率取01,动量项取09,目标取000001,最大训练次数取200000。BP网络模型参数见表436,结构如图430所示。

表436 BP网络模型参数一览表

图430 梧州年最大流量—年最高水位BP模型结构图

广西西江流域主要河流有南盘江、红水河、黔浔江、郁江、柳江、桂江、贺江。7条主要河流相当于隐含层中的7个神经元(表437),整体上来说,BP神经网络的结构已经灰箱化。

表437 BP神经网络构件物理意义一览表

(2)训练效果分析

训练样本为57个,经过3327次训练,误差下降梯度已达到最小值,但误差为300605×10-5,未达到精度要求。在命令窗口执行运行命令,网络开始学习和训练,其训练过程如图431所示,训练结果见图432和表438。

表438年最高水位训练结果

从图432和表419可看出,训练后的BP网络能较好地逼近给定的目标函数。对于训练样本,从检验结果可知:1941~1997年57年中年最高水位模拟值与实测值的相对误差小于10%和20%的分别为56a,57a,合格率为100%。说明“年最大流量-年最高水位BP神经网络模型”的实际输出与实测结果误差很小,该模型的泛化能力较好,模拟的结果比较可靠。

图431 神经网络训练过程图

图432年最高水位神经网络模型训练结果

(3)模型预测检验

把1998~2007年梧州水文站年最大流量输入到“年最大流量-年最高水位BP神经网络模型”。程序运行后网络输出预测值与已知的实际值进行比较,其预测结果见图433,表439。

表439 神经网络模型预测结果与实际结果比较

从预测检验结果可知:1998~2007年10年中,年最高水位模拟值与实测值的相对误差小于20%的为10年,合格率为100%,效果较好。

图433年最高水位量神经网络模型预测检验结果

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/12178376.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存