神经网络的控制设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
x=0:0.01:3
y=3*sin(x)+0.1*rand(1,length(x))
针对前述函数,建立一个单输入单输出的3层BP网络,并撰写报告,激励函数等可自行选择:要求:
神经网络输出与函数输出的误差应小于某小值;
由于所给函数x取值范围是[0 3],而题目要求输入输出样本集x 取值范围应该覆盖0度到360度。所以x在[3 2*pi]内,应观察已训练好的神经网络是否满足目标函数,以此检验训练完的网络。
建立网络与参数设置
一、先分析几个常用的激励函数
(1)logsig对数S型(sigmoid)传递函数,它可以将神经元的输入范围是(-∞,+∞)映射到(0,1)的区间上,它是可微函数,其表达式为:y=1/1+e-x。
(2)tansig双曲正切S型(sigmoid)传递函数,它可以将神经元的输入范围(-∞,+∞)映射到(-1,+1)的区间上,它是可微函数。
对logsig传递函数而言,输出范围是(0,1),对tansig传递函数而言,输出范围是(-1,1)。如果是purelin型神经元,则整个网络的输出可以是任意值。
对三层BP网络而言,如果最后一层是sigmoid型神经元,那么整个网络的输出就限制在一个较小的范围内。我们选择purelin函数作为输出层神经元的激励函数,tansig函数作为隐层神经元的激励函数。
二、学习算法
BP算法的主要缺点是:收敛速度慢,局部极值、难以确定隐层结点个数。改进主要有两种途径:一种是采用启发式学习算法,另一种是采用更有效的优化算法。
启发式算法主要体现在函数梯度上,包括有动量的梯度下降法、自适应lc的梯度下降法、有动量和自适应lc的梯度下降法和能复位的BP训练法。
基于数值优化的训练方法有三种:共轭梯度法、高斯牛顿法和Levevberg-Marquardt法。
由于trainlm具有收敛快,误差小的优点,且本实验中数据量不算大,故我们这里采trainlm学习算法。,误差小的优点,且本实验中数据量不算大,故我们这里用trainlm学习算法。各个算法特点见表1
三、节点数
隐层节点数的确定是神经网络设计中非常重要的一个环节,一个具有无限隐层节点的两层BP网络可以实现任意从输入到输出的非线性映射。一般认为,隐层节点数与求解问题的要求、输入输出单元数多少都有直接的关系。而且,隐层节点数过少,则无法产生足够的连接权组合数来满足若干样本的学习;隐层节点数过多,则学习以后网络的泛化能力变差。
确定隐层的节点数有如下几种方法:(1)如果要求逼近的样函数变化剧烈、波动很大,则要求可调整地连接权数多,从而隐层的节点数也应该多一些;(2)如果规定的逼近精度高,则隐含层单元数也应该多一些;(3)可考虑开始时放入较少的隐含层单元,根据以后的学习情况逐渐增加;
总之,若隐层节点数太少,网络可能根本不能训练或网络性能很差; 若隐层节点数太多,虽然可使网络的系统误差减小,但一方面使网络训练时间延长,另一方面,训练容易陷入局部极小点而得不到最优点,也是训练时出现“过拟合”的内在原因。因此,合理隐层节点数应在综合考虑网络结构复杂程度和误差大小的情况下用节点删除法和扩张法确定。
隐层的节点数与求解问题的要求,输入输出单元数多少有关。对
于模式识别/分类的节点数可按下列公式设计其中n为输入节点数目;m为输出节点数目;a为1-10之间的常数。这里n为1,m为1,N应为3-12。不妨设为10。
四、它参数设置
(1)步长:步长,即学习速率,它决定每一次循环训练中所产生的
权值变化量。步长太小,收敛就非常慢。步长太大,可能会导致网络
的瘫痪和不稳定。这里我们令lr为0.01。
(2)结束参数:设置最大重复次数epochs为10000次,精度goal
达到0.0001。精度过高时收敛过快。
五、实验过程及结果
学习前(选择初始权值时)神经网络的输出曲线与实际函数的曲
线对比图
图1 学习前输出曲
学习后(选择初始权值时)神经网络的输出曲线与实际函数的曲线对比图
图2 学习后输出曲线
图3误差的变化曲线图六、各个参数对网络的影响
1、神经元数目N不同
图4 N=5时网络输出
图5 N=50时网络输出
增加隐层节点数对改进逼近效果的作用并不很明显。但是增加隐层节点会增加精度、增加训练时间,在本题中N为10时,用时36
s;N为50时,所用时间为266s;N为5时,所用时间为21s 2.步长不同
图6、图7、图8分别为lr为0.001、0.01、0.1的误差曲线图。
图6
图7 图8
步长不同,虽然对误差有影响,但不明显,且每次运行结果不同。
但,步长太小,速度很慢。
3.算法不同
图9、图10、图11、图12分别为采用trainrp算法、trainscg 算法、trainbfg算法、traingdx算法时的误差输出曲线
图9
图10
图11
图12
由图可知:trainrp算法、trainscg算法、traingdx算法与trainlm算法相比误差大,而trainbfg算法不收敛且达不到精度要求。由此可知: trainlm算法是最佳选择。
七.结论
网络非线性程度越高,对于BP网络的要求就越高,则相同的网络逼近效果要差一些;隐层神经元的数目对于网络逼近效果出有一定的
影响,一般来说,隐层神经元数目越多,则
BP网络逼近能力越强,而本题中,3种情况网络训练的误差非常接近。所以并不是神经元越多就越精确。
步长太小,收敛就非常慢,太浪费时间。步长太大,可能会导致网络的瘫痪和不稳定。训练时,学习速率太快可能引起不稳定,太慢则要花费太多时间,不同的训练算法也对网络的性能有很大影响。
多层神经网络能够对任意的线性或者非线性函数进行逼近,其精度也是任意的。但是BP网络不一定能找到解。例如本题,采用trainbfg算法拟合时,神经网络的输出很不理想。尽管尝试增加节点数,变换学习函数,调整其他参数等到,但是效果仍不尽人意。有时,网络的收敛速度及性能比较差,受到初始权值、样本取值、学习速率等因素的影响,对函数的选择也有一定的要求。因此,标准的BP算法应结合一些其他的措施(如增加动量项,引入全局优化技术等)进行改进和优化。
(注:本资料素材和资料部分来自网络,仅供参考。请预览后才下载,期待您
的好评与关注!)