有关BP神经网络隐层神经元数的确定问题
我用三层BP神经网络建立了一个城市时用水量预测模型,模型的输入参数有24个,输出也有24个,现在隐层神经元数定为30,但是网络计算速度非常慢,一个程序要算近一个小时。请各位专家帮忙,试问,这样的三层神经网路是否合理。[ 本帖最后由 lxq 于 2007-6-1 14:44 编辑 ]
回复:(miniducky)求助高手:有关BP神经网络隐层神经...
<FONT size=5>下面的文章非常适合你,自己看看吧</FONT><Palign=left><B ><BR>自适应变步长BP神经网络在水质评价中的应用</B></P>
<Palign=center>黄胜伟<SUP>1</SUP>,董曼玲<SUP>1</SUP><BR><BR>(1.山东农业大学 水利土木学院)</P>
<P ><B >摘 要:</B>为克服传统的BP网络的不足,采用自适应变步长算法(ABPM)来训练前馈人工神经网络。根据黄河流域的大汶河水系的水质监测的数据,建立了一个对地面水质进行判别的多层前馈网络数学模型。以地面水质七项污染指标为训练样本,对网络进行训练,并将训练好的网络用于水质进行评价,将计算结果与BP网络评价结果、单因子评价结果进行了比较分析。结果表明,ABPM神经网络方法收敛速度较快,预测精度很高,为水质评价提供了一种新方法。<BR><B ><BR>关键词:</B>人工神经网络;BP网络;自适应变步长算法(ABPM);水质评价;<BR><BR>作者简介:黄胜伟(1965-),男,安徽安庆人,副教授,博士,从事人工神经网络建模和可视化研究。</P>
<P >由于影响水质的因素较多,目前用物理方法进行水质评价存在一些困难。70年代我国使用的是综合污染指标法的“硬性分级划分”,目前使用的是灰色和模糊系统,如灰色集类法、模糊综合评判法<SUP></SUP>等。30多年来在评价原理的科学性和实际评价结论的合理性等方面都有了长足的发展。然而,灰色和模糊系统两大类方法都仍然存在一些缺陷,如都需要设计若干不同的效用函数(灰色系统的白化函数、模糊数学的隶属函数等)以及人为地给定各评价指标的权重(或权函数)等。这些效用函数和指标权重的给定往往因人而异,造成评价模式难以通用,而且增加了应用的困难和人为臆断因素对结论的影响。事实上,在评价指标确定后,水质评价的过程是把这些指标的监测值与标准值进行比较和分析,在此基础上判断其与哪一级分类标准更接近。因此,水质综合评价属于模式识别问题。当前,迅速发展的人工神经网络已在模式识别中广泛应用<SUP></SUP>。<BR><BR> 人工神经网络是近几年来发展起来的一门新兴学科,它是一种大规模并行分布处理的非线性系统,可以处理那些难以用数学模型描述的系统,可以逼近任何非线性的特性,具有很强的自适应、自学习、联想记忆、高度容错和并行处理能力,使得神经网络理论的应用已经渗透到了各个领域。近年来,人工神经网络在水质分析和评价中的应用越来越广泛,并取得良好效果<SUP></SUP>。在这些应用中,纵观应用于模式识别的神经网络,BP网络是最有效、最活跃的方法之一。<BR><BR> 笔者根据黄河流域大汶河水系水质监测的条件,建立了一个对地表水质进行判别的多层前馈网络数学模型。以地表水质7项污染指标为训练样本,利用自适应变步长BP神经网络(即ABPM网)进行训练,并将训练好的网络来对水质进行评价。<BR><BR>1 BP算法及其改进<BR><B ><BR>1.1 BP网络特点 </B>多层前向网络的权值学习常采用误差逆传播学习算法(Error Back Propagation简称BP)。为了简单起见,将采用这一学习算法进行训练的多层前向网络简称为BP网络。在具体应用该网络时分为网络训练及网络工作2个阶段。在网络训练阶段,根据给定的训练模式,按照“模式的顺传播”→“误差逆传播”→“记忆训练”→“学习收敛”4个过程进行网络权值(包括阈值)的训练<SUP></SUP>。在网络的工作阶段,根据训练好的网络权值及给定的输入向量,按照“模式顺传播”方式求得与输入向量相对应的输出向量的解答。<BR><BR> BP算法是一种比较成熟的有指导的训练方法,是一个单向传播的多层前馈网络。它包含输入层、隐含层、输出层。同层节点之间不连接。输入信号从输入层节点,依次传过各隐含层节点,然后传到输出层节点,每一层节点的输出只影响下一层节点的输入。网络训练目标是使误差函数E最小,E的定义如下:</P>
<TABLE height=41 cellSpacing=0 cellPadding=0 width="100%" border=0>
<TR>
<TD width="58%" height=41>
<P align=center><IMG src="http://www.chinawater.net.cn/Journal/slxb/200210/22(1).gif"></P></TD>
<TD width="42%" height=41>
<P align=right>(1)</P></TD></TR></TABLE>
<P >式中:E为网络输出误差,P代表第P个样本,j为输出单元数,t<SUB>jp</SUB>为单元期望输出,O<SUB>jp</SUB>?为单元的实际输出,(t<SUB>jp</SUB>-O<SUB>jp</SUB>)<SUP>2</SUP>输出层第j个神经元在模式P作用下的实际输出和期望输出之差的平方。<BR><B ><BR>1.2 BP算法存在的问题 </B>BP算法的基本形式为:</P>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TR>
<TD width="50%">
<P align=center>W(k+1)=W(k)+αD(k)</P></TD>
<TD width="50%">
<P align=right>(2)</P></TD></TR></TABLE>
<P >式中:W(k)为时刻的权值;α为学习率;<IMG src="http://www.chinawater.net.cn/Journal/slxb/200210/22-1.gif">(k)为k时刻的负梯度。<BR><BR> 用三层BP网络可以任意逼近任何连续函数,但是它主要存在如下缺点:(1) 从数学上看,它可归结为一非线性的梯度优化问题,因此不可避免地存在局部极小问题;(2) 学习算法的收敛速度慢,通常需要上千次或更多;(3) 络结构为前向结构,没有反馈连接,因此它是一非线性映射系统。<BR><B ><BR>1.3 BP算法的改进(ABPM算法)</B>由于BP算法存在以上的缺陷,因而用BP网络训练网络时常常会出现收敛慢、振荡和陷入局部极小等问题。因此,采用引入动量项的自适应变步长来调整学习率的改进算法(即ABPM算法)。<BR><BR> 自适应变步长算法和常规BP算法的主要区别在于学习步长λ随误差曲面的变化而进行调整。由于BP网络的逼近误差曲面的梯度变化是不均匀的,即<IMG src="http://www.chinawater.net.cn/Journal/slxb/200210/22-2.gif">(k)在不同的位置大小不同。如果采用固定的步长λ,当λ较小时,在误差曲面较平坦的区域,收敛较慢;当步长λ较大时,又会在峡谷区域引起振荡。自适应变步长算法正是针对步长的缺陷提出来的。这种算法是以进化论中的进退法为理论基础的,即连续两次观测训练的误差值,如果误差下降则增大学习率,误差的反弹在一定的范围内,则保持步长,误差的反弹超过一定限度则减小学习率。<BR><BR> 学习率的调整可用如下公式进行描述。</P>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TR>
<TD width="50%">
<P align=center>W(k+1)=W(k)+α(k)</P></TD>
<TD width="50%">
<P align=right>(3)</P></TD></TR></TABLE>
<P >其中:α(k)=2<SUP>λ</SUP>α(k-1);λ=sign。式中:(k)为k时刻的 学习率,它是(k-1)时刻学习率的函数。η是动量因子,用来抑制振荡。<BR><BR> 确定好网络结构和训练算法后,就可以利用输入输山样本对网络进行训练,即按照式(3)对网络权值进行调整,当达到期望的输出时训练即告完成,否则继续调整权值。<BR><BR>2 水质评价的ABPM模型<BR><BR> 对于水质综合评价的ABPM神经网络来说,其训练样本即为水质分级标准,网络训练完成后,将网络对分级标准学习的知识和有关信息保存下来,然后输入待评价样本资料得到有关评价结论的信息,从而根据一定的规则作出有关评价结论的判断。<BR><B ><BR>2.1 输入层神经元数和输入模式向量 </B>设有需分级评价的水质样本n个,对每个样本,本文取如下7项污染指标监测 值:溶解氧(DO)、五日生化需氧量(BOD<SUB>5</SUB>)、挥发酚、氰化物(CN<SUP>-</SUP>)、汞(Hg)、砷(As)、六价镉(Cr<SUP>+6</SUP>)等,国家行业规范规定,根据相应于这7项污染指标下的水质标准浓度将水质划分为5个等级。<BR><BR> 由于取7项污染指标数,即取每一份水样有7项污染指标监测值,因而输入层神经元的节点数为7。若某一流域需监测断面m个(现每一断面取一份水样),则网络的输 入模式向量为:</P>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TR>
<TD width="50%">
<P align=center>X<SUB>k</SUB>=(x<SUB>1</SUB>,x<SUB>2</SUB>,…,x<SUB>7</SUB>), k=1,2,…,m </P></TD>
<TD width="50%">
<P align=right>(4)</P></TD></TR></TABLE>
<P >式中:m为学习样本个数。<BR><B ><BR>2.2 隐层和隐层神经元数的确定 </B>水质评价是一个非线性关系较为复杂的问题,考虑到既满足精度要求,又要尽可能减少学习费用,一个隐含层足够了。下面主要确定隐单元个数。<BR><BR> 采用“试错法”确定隐层单元数。首先给定较小初始隐单元数,构成一个结构较小的BP网络进行训练。如果训练次数很多或者在规定的训练次数内没有满足收敛条件,停止训练,逐渐增加隐单元数形成新的网络重新训练。作为算例,对文献的数据,分别采用BP、ABPM网络训练方法,经过50次试验获得训练最大次数和最小次数与隐单元的关系如表1。其中初始权值和阈值是用Matlab中rand()函数产生均匀分布随机数矩阵,控制误差(一般根据实际情况而定)暂定为0.0001</P>
<Palign=center>表1 网络的训练次数与隐单元数的关系 (表中INF代表无穷多次)</P>
<TABLEcellSpacing=0 cellPadding=0 width="97%" border=0>
<TR>
<TD width="100%" colSpan=13>
<HR color=#000000>
</TD></TR>
<TR>
<TD width="14%" rowSpan=4>隐单元数</TD>
<TD width="14%" colSpan=2>4</TD>
<TD width="14%" colSpan=2>6</TD>
<TD width="14%" colSpan=2>8</TD>
<TD width="14%" colSpan=2>10</TD>
<TD width="14%" colSpan=2>12</TD>
<TD width="16%" colSpan=2>15</TD></TR>
<TR>
<TD width="14%" colSpan=2>
<HRcolor=#000000 SIZE=1>
</TD>
<TD width="14%" colSpan=2>
<HRcolor=#000000 SIZE=1>
</TD>
<TD width="14%" colSpan=2>
<HRcolor=#000000 SIZE=1>
</TD>
<TD width="14%" colSpan=2>
<HRcolor=#000000 SIZE=1>
</TD>
<TD width="14%" colSpan=2>
<HRcolor=#000000 SIZE=1>
</TD>
<TD width="16%" colSpan=2>
<HRcolor=#000000 SIZE=1>
</TD></TR>
<TR>
<TD width="7%">最小</TD>
<TD width="7%">最大</TD>
<TD width="7%">最小</TD>
<TD width="7%">最大</TD>
<TD width="7%">最小</TD>
<TD width="7%">最大</TD>
<TD width="7%">最小</TD>
<TD width="7%">最大</TD>
<TD width="7%">最小</TD>
<TD width="7%">最大</TD>
<TD width="7%">最小</TD>
<TD width="7%">最大</TD></TR>
<TR>
<TD width="7%">次数</TD>
<TD width="7%">次数</TD>
<TD width="7%">次数</TD>
<TD width="7%">次数</TD>
<TD width="7%">次数</TD>
<TD width="7%">次数</TD>
<TD width="7%">次数</TD>
<TD width="7%">次数</TD>
<TD width="7%">次数</TD>
<TD width="7%">次数</TD>
<TD width="8%">次数</TD>
<TD width="8%">次数</TD></TR>
<TR>
<TD width="100%" colSpan=13>
<HR color=#000000 SIZE=1>
</TD></TR>
<TR>
<TD width="14%">BP网络</TD>
<TD width="7%">8700</TD>
<TD width="7%">INF</TD>
<TD width="7%">6860</TD>
<TD width="7%">INF</TD>
<TD width="7%">3600</TD>
<TD width="7%">26500</TD>
<TD width="7%">2680</TD>
<TD width="7%">21000</TD>
<TD width="7%">2200</TD>
<TD width="7%">16200</TD>
<TD width="8%">1580</TD>
<TD width="8%">8180</TD></TR>
<TR>
<TD width="14%">ABPM网络</TD>
<TD width="7%">103</TD>
<TD width="7%">INF</TD>
<TD width="7%">138</TD>
<TD width="7%">5589</TD>
<TD width="7%">93</TD>
<TD width="7%">3982</TD>
<TD width="7%">85</TD>
<TD width="7%">3120</TD>
<TD width="7%">218</TD>
<TD width="7%">2114</TD>
<TD width="8%">140</TD>
<TD width="8%">2368</TD></TR>
<TR>
<TD width="100%" colSpan=13>
<HR color=#000000>
</TD></TR></TABLE>
<P > </P>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TR>
<TD width="54%">
<P align=center><IMG src="http://www.chinawater.net.cn/Journal/slxb/200210/images/22t01.gif"></P></TD>
<TD vAlign=top width="46%">
<P > 由表1可以看出,当隐含单元数小于8时,网络易陷入局部极小,难以达到所要求的精度(表1中表示为TNF);当隐含单元数为8~12时,训练次数明显减少,再增加隐含单元数对训练次数影响不大。由此可以看出,选取隐单元数的最佳值为8~12。</P></TD></TR>
<TR>
<TD width="54%">
<P align=center>图1 三层神经网络模型</P></TD>
<TD width="46%"></TD></TR></TABLE>
<P ><B ><BR></B></P>
回复:(miniducky)求助高手:有关BP神经网络隐层神经...
<FONT size=3><STRONG>2.3 水质评价的神经网络模型 </STRONG>针对水质综合评价是个非线性关系较为复杂的问题,笔者建立了一个含有7个输入神经元节点、10个隐含神经元节点和5个输出神经元节点的人工神经网络,如图1所示。<BR></FONT><B ><BR><FONT size=3>2.4 学习样本和期望输出 </FONT></B><FONT size=3>对于水质综合评价的RBF神经网络来说,其训练样本即为地面水质分级标准。表1为国家地面水环境质量标准(GHZB1—1999),因而也为RBF网络的训练样本。对每一类水质,期望输出值见表1所示。</FONT><Palign=center>表1 地表水环境质量标准浓度值和网络希望输出值</P>
<TABLEcellSpacing=0 cellPadding=0 width="97%" border=0>
<TR>
<TD width="100%" colSpan=9>
<HR color=#000000>
</TD></TR>
<TR>
<TD width="10%">污染指标</TD>
<TD width="10%">溶解氧</TD>
<TD width="10%">生化需氧量</TD>
<TD width="10%">挥发酚</TD>
<TD width="10%">氰化物</TD>
<TD width="10%">汞(Hg)</TD>
<TD width="10%">砷(As)</TD>
<TD width="10%">六价铬</TD>
<TD width="20%">希望输出值</TD></TR>
<TR>
<TD width="100%" colSpan=9>
<HR color=#000000 SIZE=1>
</TD></TR>
<TR>
<TD width="10%">Ⅰ类</TD>
<TD width="10%">9.0</TD>
<TD width="10%">2.0</TD>
<TD width="10%">0.001</TD>
<TD width="10%">0.005</TD>
<TD width="10%">0.00005</TD>
<TD width="10%">0.05</TD>
<TD width="10%">0.01</TD>
<TD width="20%">1 0 0 0 0</TD></TR>
<TR>
<TD width="10%">Ⅱ类</TD>
<TD width="10%">6.0</TD>
<TD width="10%">3.0</TD>
<TD width="10%">0.002</TD>
<TD width="10%">0.05</TD>
<TD width="10%">0.00005</TD>
<TD width="10%">0.05</TD>
<TD width="10%">0.05</TD>
<TD width="20%">0 1 0 0 0</TD></TR>
<TR>
<TD width="10%">Ⅲ类</TD>
<TD width="10%">5.0</TD>
<TD width="10%">4.0</TD>
<TD width="10%">0.005</TD>
<TD width="10%">0.2</TD>
<TD width="10%">0.0001</TD>
<TD width="10%">0.05</TD>
<TD width="10%">0.05</TD>
<TD width="20%">0 0 1 0 0</TD></TR>
<TR>
<TD width="10%">Ⅳ类</TD>
<TD width="10%">3.0</TD>
<TD width="10%">6.0</TD>
<TD width="10%">0.01</TD>
<TD width="10%">0.2</TD>
<TD width="10%">0.001</TD>
<TD width="10%">0.1</TD>
<TD width="10%">0.05</TD>
<TD width="20%">0 0 0 1 0</TD></TR>
<TR>
<TD width="10%">Ⅴ类</TD>
<TD width="10%">2.0</TD>
<TD width="10%">10.0</TD>
<TD width="10%">0.1</TD>
<TD width="10%">0.2</TD>
<TD width="10%">0.001</TD>
<TD width="10%">0.1</TD>
<TD width="10%">0.1</TD>
<TD width="20%">0 0 0 0 1</TD></TR>
<TR>
<TD width="100%" colSpan=9>
<HR color=#000000>
</TD></TR></TABLE>
<P><B >2.5 样本的规范化处理 </B>通过实践,选用下述规范化方法,效果更好。即:</P>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TR>
<TD width="50%">
<P align=center><IMG src="http://www.chinawater.net.cn/Journal/slxb/200210/22(5).gif"></P></TD>
<TD width="50%">
<P align=right>(5)</P></TD></TR>
<TR>
<TD width="50%">
<P align=center><IMG src="http://www.chinawater.net.cn/Journal/slxb/200210/22(6).gif"></P></TD>
<TD width="50%">
<P align=right>(6)</P></TD></TR></TABLE>
<P >式(5)和(6)中:<IMG src="http://www.chinawater.net.cn/Journal/slxb/200210/22-3.gif" align=absMiddle>,<IMG src="http://www.chinawater.net.cn/Journal/slxb/200210/22-4.gif" align=absMiddle>分别为原始资料的第P<SUB>1</SUB>个实际样本的第i个输入值和第j个期望输出值:<IMG src="http://www.chinawater.net.cn/Journal/slxb/200210/22-3.gif" align=absMiddle>,<IMG src="http://www.chinawater.net.cn/Journal/slxb/200210/22-4.gif" align=absMiddle>分别为规范化后第P<SUB>1</SUB>个样本的第i个输入值和第j个期望输出值;x<SUB>i,max</SUB>,x<SUB>i,min</SUB>分别为样本中第i个输入的最大和最小值;t<SUB>j,max</SUB>,t<SUB>j,min</SUB>分别为样本中第j个期望输出的最大和最小值。由式(5)和(6)规范化的教师值域仍在之间但不包括0和1。<BR><BR>3 应用实例<BR><BR> 对黄河流域的大汶河水系进行评价。黄河流域的大汶河水系设立了东周、雪野等9个水质监测站,对1991~1993年间每年分别在丰、平、枯水期取样监测,各断面指标实测浓度的平均值列于表2。</P>
<Palign=center>表2 1991~1993年黄河流域的大汶河水系9个监测站水质浓度平均值和水质3种评价方法结果</P>
<TABLEcellSpacing=0 cellPadding=0 width="99%" border=0>
<TR>
<TD width="100%" colSpan=16>
<HR color=#000000>
</TD></TR>
<TR>
<TD width="5%" rowSpan=2>断面</TD>
<TD width="7%" rowSpan=2>溶解氧</TD>
<TD width="9%" rowSpan=2>生化需氧</TD>
<TD width="8%" rowSpan=2>挥发酚</TD>
<TD width="7%" rowSpan=2>氰化物</TD>
<TD width="7%" rowSpan=2>汞(Hg)</TD>
<TD width="7%" rowSpan=2>砷(As)</TD>
<TD width="6%" rowSpan=2>六价铭</TD>
<TD width="32%" colSpan=5 rowSpan=4>ABPM网络训练结果</TD>
<TD width="7%">ABPM</TD>
<TD width="7%">BP网络</TD>
<TD width="6%">单因子</TD></TR>
<TR>
<TD width="7%" rowSpan=2>网络评</TD>
<TD width="7%" rowSpan=2>评价</TD>
<TD width="6%" rowSpan=2>评价</TD></TR>
<TR>
<TD width="5%" rowSpan=2></TD>
<TD width="7%" rowSpan=2>/(mg/l)</TD>
<TD width="9%" rowSpan=2>量/(mg/l)</TD>
<TD width="8%" rowSpan=2>/(mg/l)</TD>
<TD width="7%" rowSpan=2>/(mg/l)</TD>
<TD width="7%" rowSpan=2>/(mg/l)</TD>
<TD width="7%" rowSpan=2>/(mg/l)</TD>
<TD width="6%" rowSpan=2>(mg/l)</TD></TR>
<TR>
<TD width="7%">价结果</TD>
<TD width="7%">结果</TD>
<TD width="6%">结果</TD></TR>
<TR>
<TD width="100%" colSpan=16>
<HR color=#000000 SIZE=1>
</TD></TR>
<TR>
<TD width="5%">东周</TD>
<TD width="7%">13.1</TD>
<TD width="9%">1.0</TD>
<TD width="8%">0.0</TD>
<TD width="7%">0.0</TD>
<TD width="7%">0.0</TD>
<TD width="7%">0.001</TD>
<TD width="6%">0.002</TD>
<TD width="6%">1.088</TD>
<TD width="7%">-0.099</TD>
<TD width="6%">0.004</TD>
<TD width="6%">0.000</TD>
<TD width="7%">-0.004</TD>
<TD width="7%">Ⅰ类</TD>
<TD width="7%">Ⅰ类</TD>
<TD width="6%">Ⅰ类</TD></TR>
<TR>
<TD width="5%">雪野</TD>
<TD width="7%">12.7</TD>
<TD width="9%">1.5</TD>
<TD width="8%">0.0</TD>
<TD width="7%">0.0</TD>
<TD width="7%">0.0</TD>
<TD width="7%">0.0</TD>
<TD width="6%">0.001</TD>
<TD width="6%">1.087</TD>
<TD width="7%">-0.097</TD>
<TD width="6%">0.003</TD>
<TD width="6%">0.000</TD>
<TD width="7%">-0.005</TD>
<TD width="7%">Ⅰ类</TD>
<TD width="7%">Ⅰ类</TD>
<TD width="6%">Ⅰ类</TD></TR>
<TR>
<TD width="5%">莱芜</TD>
<TD width="7%">8.0</TD>
<TD width="9%">29.4</TD>
<TD width="8%">0.008</TD>
<TD width="7%">0.0</TD>
<TD width="7%">0.0</TD>
<TD width="7%">0.01</TD>
<TD width="6%">0.0008</TD>
<TD width="6%">0.002</TD>
<TD width="7%">-0.002</TD>
<TD width="6%">0.001</TD>
<TD width="6%">-0.002</TD>
<TD width="7%">0.998</TD>
<TD width="7%">Ⅴ类</TD>
<TD width="7%">Ⅴ类</TD>
<TD width="6%">Ⅴ类</TD></TR>
<TR>
<TD width="5%">羊流</TD>
<TD width="7%">12.4</TD>
<TD width="9%">1.5</TD>
<TD width="8%">0.0</TD>
<TD width="7%">0.0</TD>
<TD width="7%">0.0</TD>
<TD width="7%">0.0</TD>
<TD width="6%">0.0</TD>
<TD width="6%">1.087</TD>
<TD width="7%">-0.097</TD>
<TD width="6%">0.004</TD>
<TD width="6%">0.000</TD>
<TD width="7%">-0.005</TD>
<TD width="7%">Ⅰ类</TD>
<TD width="7%">Ⅰ类</TD>
<TD width="6%">Ⅰ类</TD></TR>
<TR>
<TD width="5%">临汶</TD>
<TD width="7%">8.4</TD>
<TD width="9%">9.0</TD>
<TD width="8%">0.016</TD>
<TD width="7%">0.0</TD>
<TD width="7%">0.0009</TD>
<TD width="7%">0.012</TD>
<TD width="6%">0.0</TD>
<TD width="6%">0.002</TD>
<TD width="7%">-0.036</TD>
<TD width="6%">0.226</TD>
<TD width="6%">0.805</TD>
<TD width="7%">0.077</TD>
<TD width="7%">Ⅳ类</TD>
<TD width="7%">Ⅳ类</TD>
<TD width="6%">Ⅳ类</TD></TR>
<TR>
<TD width="5%">北望</TD>
<TD width="7%">6.0</TD>
<TD width="9%">37.5</TD>
<TD width="8%">0.059</TD>
<TD width="7%">0.018</TD>
<TD width="7%">0.0009</TD>
<TD width="7%">0.016</TD>
<TD width="6%">0.001</TD>
<TD width="6%">-0.002</TD>
<TD width="7%">0.002</TD>
<TD width="6%">0.001</TD>
<TD width="6%">0.002</TD>
<TD width="7%">0.998</TD>
<TD width="7%">Ⅴ类</TD>
<TD width="7%">Ⅴ类</TD>
<TD width="6%">Ⅴ类</TD></TR>
<TR>
<TD width="5%">戴村</TD>
<TD width="7%">9.2</TD>
<TD width="9%">7.8</TD>
<TD width="8%">0.063</TD>
<TD width="7%">0.012</TD>
<TD width="7%">0.00044</TD>
<TD width="7%">0.076</TD>
<TD width="6%">0.0</TD>
<TD width="6%">0.018</TD>
<TD width="7%">-0.131</TD>
<TD width="6%">1.102</TD>
<TD width="6%">0.007</TD>
<TD width="7%">0.001</TD>
<TD width="7%">Ⅲ类</TD>
<TD width="7%">Ⅲ类</TD>
<TD width="6%">Ⅲ类</TD></TR>
<TR>
<TD width="5%">白楼</TD>
<TD width="7%">8.0</TD>
<TD width="9%">11.4</TD>
<TD width="8%">0.039</TD>
<TD width="7%">0.048</TD>
<TD width="7%">0.00038</TD>
<TD width="7%">0.092</TD>
<TD width="6%">0.003</TD>
<TD width="6%">0.004</TD>
<TD width="7%">0.000</TD>
<TD width="6%">0.001</TD>
<TD width="6%">1.053</TD>
<TD width="7%">0.048</TD>
<TD width="7%">Ⅳ类</TD>
<TD width="7%">Ⅳ类</TD>
<TD width="6%">Ⅴ类</TD></TR>
<TR>
<TD width="5%">石汶</TD>
<TD width="7%">12.5</TD>
<TD width="9%">0.8</TD>
<TD width="8%">0.0</TD>
<TD width="7%">0.0</TD>
<TD width="7%">0.0</TD>
<TD width="7%">0.001</TD>
<TD width="6%">0.0</TD>
<TD width="6%">1.088</TD>
<TD width="7%">-0.099</TD>
<TD width="6%">0.004</TD>
<TD width="6%">0.000</TD>
<TD width="7%">-0.005</TD>
<TD width="7%">Ⅰ类</TD>
<TD width="7%">Ⅰ类</TD>
<TD width="6%">Ⅰ类</TD></TR>
<TR>
<TD width="100%" colSpan=16>
<HR color=#000000>
</TD></TR></TABLE>
<P > </P>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TR>
<TD width="57%">
<P align=center><IMG src="http://www.chinawater.net.cn/Journal/slxb/200210/images/22t02.gif"></P></TD>
<TD vAlign=top width="43%">
<P ><B >3.1 ABPM网络训练结果 </B>取动量因子η=0.3,初始学习率α(1)=0.01,随机赋予ABPM网络的初始权值和阈值,控制误差取为0.0001。利用上述ABPM神经网络和标准BP神经网络进行网络训练,并将其评价结果与单因子评价结果比较,如表2所示。</P></TD></TR>
<TR>
<TD width="57%">
<P align=center>图2 ABPM网络训练次数与网络输出误差关系</P></TD>
<TD width="43%"></TD></TR></TABLE>
<P ><BR> 图2为地表水水质评价的ABPM网络训练次数与网络输出误差E变化规律;图3为ABPM网络训练次数与学习率(k)变化规律。图4为地表水水质评价的标准BP神经网络训练次数与网络输出误差E变化规律。<BR></P>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TR>
<TD width="50%">
<P align=center><IMG src="http://www.chinawater.net.cn/Journal/slxb/200210/images/22t03.gif"></P></TD>
<TD width="50%">
<P align=center><IMG src="http://www.chinawater.net.cn/Journal/slxb/200210/images/22t04.gif"></P></TD></TR>
<TR>
<TD width="50%">
<P align=center>图3 ABPM网络训练次数与学习率α(k)变化规律</P></TD>
<TD width="50%">
<P align=center>图4 标准BP网络训练次数与网络输出误差关系</P></TD></TR></TABLE>
<P ><BR><B >3.2 结果分析 </B>表3中的评价结果表明ABPM网络方法与BP网络方法对水质评价结果是一致,但同单因子评价结果相比,在戴村断面和白楼断面的水质评价结果有一些偏差。其原因为戴村断面水质7项中单项因子有2项达Ⅰ类,1项达Ⅱ类,2项达Ⅲ类,2项达Ⅳ类,因而综合考虑定为Ⅲ类较为合理;白楼断面水质7项中单项因子有1项达Ⅰ类,5项达Ⅱ类,l项达Ⅴ类,因而综合考虑定为Ⅳ类较为合理。<BR><BR> 自适应变步长BP神经网络方法有以下特点:<BR><BR> (1) ABPM算法是以进化论中的进退法为理论基础,通过自适应变步长避免了BP网络收敛慢,易引起局部振荡等缺点。从图2和图4对比可以看出,用APBM算法训练本文的综合评价,其学习速度是常用的BP算法无法比拟的。<BR><BR> (2) ABPM网络用于地表水水质评价只需以各评价参数的分级标准为基础来生成训练样本,用训练后得到的网络模型的参数值就可以对需评价的地表水水质样本进行评价。所以,一旦训练好了一个网络模型,就可以推广应用于该类环境问题的评价,因此它具有很好的通用性,其评价结果也具有客观性。<BR><BR>4 结束语<BR><BR> 以上介绍了如何利用ABPM神经网络对地表水水质综合评价,从具体的应用实际中可以看出,其评价方法操作简便易行,评价结果切合实际。ABPM网络以其特有的灵活性和适应性为解决标准BP网络中难题提供了独特的方法。当然神经网络技术正处在不断发展之中,如何在现行的神经网络中进一步吸取模糊和灰色理论的某些优点,如何建立更适合水质评价的神经网络模型,使该模型既具有方法的先进性又具有现实的可行性,仍将是一个值得深人研究的问题。</P>
<P ><B >参 考 文 献:</B><BR><BR> 方子云.水资源保护工作手册.南京:河海大学出版社:1988.<BR><BR> 阎平凡,等.人工神经网络与模拟进化计算.北京:清华大学出版社,2000.<BR><BR> 刘曙光,郑宗勋,等.前馈神经网络的反向传播算法及其改进:进展与展望.计算机科学,1996,1(23):76-79.<BR><BR> 纪桂霞,李培红.水环境质量评价的人工神经网络模型及应用.华北水利水电学院学报,1999,1:60-62.<BR><BR> 闻新,周露,等.MATLAB神经网络应用设计.北京:科学出版社,2000.</P> 在用matlab神经网络工具箱处理预测工作时,首先用3层网络结构是对的,象你这样一般的预测是完全可以解决的,关于你时间长的问题,我想不明白搞预测输出层怎么会和输入一样多呢?实际你要出的结果只有一个,而且中间隐层神经元太少,结果误差会很大,大概要50个左右!~最后我要说的是,输出层出24个是你时间长的主要原因,你预测的结果只有一样而已,怎么能出24个?
谢谢happy教授的指导
回复第五楼
我将每天24个小时的时用水量作为一个24维的向量,用一天的24个时用水量预测下一天的24个时用水量,按照你的见意,隐层如果要50个,那网络所要设定的参数就要达2474个(24*50+24*50+24+50 网络权值加阈值),要想使所健的网络稳定,那训练集的数据点数就要多余这个数,那我得用103天的时用水量数据,是不是? <P>楼主,你理解错了,你用很多天的24小时的用水量训练并预测明天每小时的用水量,是这个意思吧?那么你这样的做法是错误的,首先我早上看的时候理解成用24个因子预测明天的用水量了,因此说了用50个中间隐层的结论;其次我们通常是预测一个结果,但只是通常,我的建议还是尽量用少的输出,最多给出3个,别再多,这里的输出层个数是要尽量少的!~<BR>在这里,你应该知道,你不是用24个因子去预测24个结果,你的理解是完全错误的,你这样当然出不了结果!~<BR>即使你用过去2年每小时的用水量做因子,它也只是一个因子,这里输入层所选取的因子指的是不一样的要素,比如,每小时的温度等,和过去很多年每个小时的用水量组成几个因子,并做出训练和预测,得到的预测结果也是以每小时的用水量这一个结果出现的.<BR>你所说的24个小时分别的用水量不是24个预测结果,而是一个,只是和前面一一对应.<BR>我这样说你该很明白了吧,问题很简单!~</P> <P>我明白你的意思了,我现在有个想法,我用一个网络预测一小时的用水量,要预测一天24个小时的用水量就需24个网络,用循环语句将这24个网络写在一个M文件中,行啊?</P> 还有建议你用trainrp训练网络 不用的,只要将预测样本分组输入输入层就行了回复:(miniducky)我明白你的意思了,我现在有个想法...
<DIV class=quote><B>以下是引用<I>miniducky</I>在2006-5-23 19:03:32的发言:</B><BR><P>我明白你的意思了,我现在有个想法,我用一个网络预测一小时的用水量,要预测一天24个小时的用水量就需24个网络,用循环语句将这24个网络写在一个M文件中,行啊?</P></DIV>
<P>这个其实我是不太懂的<BR>但是我觉得要是这样的话<BR>误差不就很大了吗?<BR>因为第二天的任何一个小时的用水量我们都不知道<BR>而第二天的任何一次预测都需要前一小时的用水量做输入<BR>前一小时的用水量却都不是实际测量的 而是预测的<BR>这样的预测误差就会很大吧?<BR></P> 太强了!<BR> <STRONG><FONT face=Verdana color=#61b713>miniducky<BR> 能帮我好吗?<BR> 我就快交论文了<BR>可是还是不会用MATLAB这个东东<BR>你能帮你做的发给我参考下吗<BR>我做的是上海的需水预测 5-4-3 模型的<BR> 邮箱<a href="mailtqb919@163.com" target="_blank" >qb919@163.com</A><BR>谢谢</FONT></STRONG>
回复:(miniducky)求助高手:有关BP神经网络隐层神经...
<P><FONT color=#ff0000>miniducky F117_ren_0加威望2点,happy ericlin lxq各加威望1点</FONT></P><P><BR>多情清秋<BR>06.6.1</P>
页:
[1]