7.4.1 B-P网络仿真实验训练的设计
确定了网络层数、初始权系数、传递函数、学习算法等,也就基本确定了B-P神经网络。确定这些选项时有一定的指导原则,但更多的是靠经验和尝试。
本书借助于Matlab神经网络工具箱来实现多层前馈B-P神经网络(Multi-layer feed-forward back propagation network)的可持续发展力仿真,这样可以直接调用相关函数。为了让实际输出值与网络期望输出值相一致,可以用一定数量的学习样本集和相应期望输出集来训练网络。因为神经网络的实际输出值与输入值、权值和阈值有关,所以在训练中就要调整相应的权值与阈值来逼近一个未知的映射,只能通过学习方式得到满足要求的网络模型。训练时可以使用表7-1和表7-5中所计算的数据得到表7-6。
另外,现在还没有较为成熟统一的网络构造方法。所以在设计多层前馈网络时,要把握两个方面:一是对任何实际问题先都只选用一个隐含层;二是使用很少的隐含层节点数,然后不断增加隐含层节点数,直到获得满意性能为止。在操作上主要通过试验、探讨多种模型方案,在实验中改进,直到选取一个满意方案为止。总的来说,B-P网络仿真实验训练过程实际上是根据网络输出值与目标值之间误差的大小不断调整权值和阈值,直到此误差达到目标值为止。
(1)隐层数的确定
如前面所述,一个三层的B-P网络可以完成任意的n维到m维的映射。这一点Robert Hecht Nielson教授在1998年也给予了证明,对任何在闭区间内的连续函数,都可以用只有一个隐含层的B-P网络来逼近,所以在这里我们设置网络的隐层数为一层。
(2)B-P网络常用传递函数(www.xing528.com)
B-P网络的转移函数种类比较多。线性转移函数purelin的输入与输出值可取任意值;tan-sigmod型转移函数tansig的输出值在-1到+1之间,但输入值可取任意值;Log-sigmoid型函数的输入值可取任意值但输出值在0和1之间。B-P网络通常有一个隐含层,隐含层转移函数通常为tansig,输出层的神经元则采用线性传递函数,整个网络的输出可以取任意值,输出层转移函数通常为pure-lin。各种转移函数如图7-6所示。
图7-6 自适应学习
只改变传递函数而其余参数均不变,用本章7.2.2节所述的样本集训练B-P网络时发现,传递函数使用tansig函数时要比logsig函数的误差小,于是在网络中隐含层传递函数时选择用tansig函数,输出层传递函数仍选用purelin函数,训练方法为traingd。
(3)隐含层节点数的确定
使用神经网络的目的是实现由11个指标的输入到1个指标可持续发展力的输出,因此B-P网络的输入层节点数为11、输出层的节点个数为1。
隐含层节点数的确定是构建B-P神经网络的重点。如果数量太少,则网络所能获取的用以解决问题的信息太少,训练误差与测试误差较大;如果数量太多,不仅增加训练时间,更重要的是隐含层节点过多反而会出现“过学习”情形,即训练误差与测试误差增大,导致泛化能力下降,因此合理选择隐含层节点数非常重要。关于隐含层节点数的选择主要根据原则与经验。隐含层节点数设置的原则是在能正确反映输入输出关系的基础上,应选用较少的隐含层节点数,以使网络结构尽量简单。本书中采用网络结构增长型方法,首先设置较少的节点数对网络进行训练,并设定训练步数(一般设为500步),然后一个一个增加隐含层节点数,直到学习误差由最小转为开始逐渐增大时为止。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。