研究实验2报告示范单入单出BP人工神经网络及算法研究.docx

上传人:b****8 文档编号:9617549 上传时间:2023-02-05 格式:DOCX 页数:11 大小:86.49KB
下载 相关 举报
研究实验2报告示范单入单出BP人工神经网络及算法研究.docx_第1页
第1页 / 共11页
研究实验2报告示范单入单出BP人工神经网络及算法研究.docx_第2页
第2页 / 共11页
研究实验2报告示范单入单出BP人工神经网络及算法研究.docx_第3页
第3页 / 共11页
研究实验2报告示范单入单出BP人工神经网络及算法研究.docx_第4页
第4页 / 共11页
研究实验2报告示范单入单出BP人工神经网络及算法研究.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

研究实验2报告示范单入单出BP人工神经网络及算法研究.docx

《研究实验2报告示范单入单出BP人工神经网络及算法研究.docx》由会员分享,可在线阅读,更多相关《研究实验2报告示范单入单出BP人工神经网络及算法研究.docx(11页珍藏版)》请在冰豆网上搜索。

研究实验2报告示范单入单出BP人工神经网络及算法研究.docx

研究实验2报告示范单入单出BP人工神经网络及算法研究

研究实验2报告示范——单入单出BP人工神经网络及算法研究  

一.研究问题描述:

用BP方法实现一个单输入单输出的函数的逼近。

假设转换函数的输出范围在0到1之间。

函数取以下3个:

二.网络结构:

1.三层前向神经网络

 根据逼近定理知,只含一个隐层的前向网络(即三层前向神经网络)是一个通用的逼近器,可以任意逼近函数f,因此,在本题中选用三层前向神经网络,即输入层(x0,y0),一个隐层(x1,y1),输出层(x2,y2)。

2.网络结构

 由于要逼近的函数为单输入单输出函数,故输出层只有一个节点;输入层除了一个样本输入点外,还有一个阈值单元,因此可以看作是两个输入节点;隐层的节点个数p可以在程序运行时进行选择,以适应和测试不同的逼近效果。

由输入层至隐层的权矩阵记为W0,由隐层到输出层的权矩阵记为W1。

整个网络的结构初步设计如下图所示:

(略)

三.算法实现

本实验用C++程序实现该算法。

报告中所给出的实验数据均是运行C++程序所得的结果,然后将这些结果在matlab中画出对应图形。

1.标准BP算法(无动量项):

 根据公式:

为学习率)

 

 

  编写程序,程序执行时允许选择:

样本个数p,隐层节点个数midnumber,学习速率step,训练过程结束条件(即训练结束时允许的最大误差)enderr。

2.加动量项的BP算法

基本原理同上,仅在标准BP算法的基础上,对权矩阵的修改添加动量项,程序执行时允许选择:

样本个数p,隐层节点个数midnumber,学习速率step,训练过程结束条件(即训练结束时允许的最大误差)enderr,以及动量因子moti。

四.训练结果:

对不同的函数逼近进行训练得到不同的训练结果,下面分别进行讨论:

1.

(1.)样本个数取为10,隐层节点数取为10,步长,终止误差设为,无动量项运行结果如下:

训练次数:

1850

最终误差:

权值矩阵为:

(这里的权矩阵的取值比较整齐,分析其原因是因为在初始化权矩阵的时候,并没有为其赋予随机值,而是分别赋予了相同的0到之间的值。

又由于网络结构的对称性,故每次通过梯度法所求得的权值的变化量是相同的,从而导致了结果中权值取值的整齐性。

逼近效果图:

(图中蓝线为原函数图像,红x为由该网络进行逼近得到的结果)

(2.)改变隐层节点数:

当隐层节点数减少为5,其余设置不变时,要达到终止误差需要进行的训练次数为5476次。

当隐层节点数增加为20,其余设置不变时,要达到终止误差需要进行的训练次数为29167次。

当隐层节点数增加为50,其余设置不变时,要达到终止误差需要进行的训练次数为73677次。

可以看出,本题中增加隐层节点数对改进逼近效果的作用并不很明显。

隐层节点取20和50时所用的训练次数比隐层节点取10时要大。

可见增加隐层节点并不一定能增加精度或减少训练时间,在本题中反而会带来更长的训练时间。

(3.)改变步长:

当步长减小为,其余设置不变时,要达到终止误差需要进行的训练次数为18993次,明显多于步长为的情形。

当步长增加为,其余设置不变时,要达到终止误差需要进行的训练次数为7590次,少于步长为的情形。

当步长增加为,其余设置不变时,要达到终止误差需要进行的训练次数为4449次,明显少于步长为的情形。

而当步长增加为1,其余设置不变时,要达到终止误差需要进行的训练次数只有3292次。

这说明随着步长的增加,训练的次数可能减小,分析其原因是由于步长增加意味着权值每次的变化量更大,因此会使收敛更快。

但步长增加另一方面可能会导致振荡,也就是当步长取的较大时,有可能使得权值在误差曲面的极小点两边来回变化而不能达到极小点。

在对其它函数逼近的实验中(实验3),可以看出该现象。

(4.)增加动量项

当增加动量项,动量因子设为,其余设置不变时,要达到终止误差需要进行的训练次数为7590次,明显少于相同条件下不加动量项时所用的训练次数。

说明增加动量项加快了收敛。

而增加动量项后的训练结果与不加动量项时的结果几乎完全一样(一般仅在小数点后第五位有点差别),这说明在本例中增加动量项虽然加快了收敛,但对逼近的程度并无什么改进。

(5.)推广测试

均匀选取5个点进行推广测试,其误差为,上图中绿色o形标志为推广测试的结果,由图及误差可以看出,在本例中的推广测试效果比较好。

2.

(1.)样本个数取为15,隐层节点数取为10,步长,终止误差设为,无动量项运行结果如下:

训练次数:

1485

最终误差:

权值矩阵为:

(这里的权矩阵的取值比较整齐,原因同上。

逼近效果图:

(图中蓝线为原函数图像,红x为由该网络进行逼近得到的结果)

(2.)改变隐层节点数:

当隐层节点数减少为5,其余设置不变时,要达到终止误差需要进行的训练次数为1215次。

当隐层节点数增加为20,其余设置不变时,要达到终止误差需要进行的训练次数为1927次。

当隐层节点数增加为50,其余设置不变时,要达到终止误差需要进行的训练次数为3002次。

可以看出,本题中增加隐层节点数对改进逼近效果的作用并不很明显。

(3.)改变步长:

当步长减小为,其余设置不变时,要达到终止误差需要进行的训练次数为4365次,明显多于步长为的情形。

当步长增加为,其余设置不变时,要达到终止误差需要进行的训练次数为1748次,少于步长为的情形。

当步长增加为,其余设置不变时,要达到终止误差需要进行的训练次数为1542次,明显少于步长为的情形。

而当步长增加为1,其余设置不变时,要达到终止误差需要进行的训练次数只有1404次。

这说明在本题中随着步长的增加,训练的次数减少。

(4.)增加动量项

当增加动量项,动量因子设为,其余设置不变时,要达到终止误差需要进行的训练次数为893次,明显少于相同条件下不加动量项时所用的训练次数。

说明增加动量项加快了收敛。

同时,在matlab中标出增加动量项后的训练结果(红色o标记),可以看出其与不加动量项时的结果几乎完全一样,这说明在本例中增加动量项虽然加快了收敛,但对逼近的程度并无明显改进。

(5.)推广测试

均匀选取5个点进行推广测试,其误差为,上图中绿色o形标志为推广测试的结果,由图及误差可以看出,在本例中的推广测试效果可以接受。

3.

(1.)样本个数取为15,隐层节点数取为10,步长,终止误差设为,无动量项运行结果如下:

训练次数:

34044

最终误差:

权值矩阵为:

(这里的权矩阵的取值比较整齐,原因同上。

(图中蓝线为原函数图像,红x为由该网络进行逼近得到的结果)

(2.)改变隐层节点数:

当隐层节点数减少为5,其余设置不变时,要达到终止误差需要进行的训练次数为15445次。

当隐层节点数减少为5,其余设置不变时,要达到终止误差需要进行的训练次数为11957次。

可以看出,本题中增加隐层节点数对改进逼近效果的作用并不很明显。

隐层节点取20和50时所用的训练次数比隐层节点取10时要大。

增加隐层节点并不一

定能增加精度或减少训练时间,在本题中反而会带来更长的训练时间。

(3.)改变步长:

当步长减小为,其余设置不变时,要达到终止误差需要进行的训练次数为51064次,明显多于步长为的情形。

当步长增加为,其余设置不变时,要达到终止误差需要进行的训练次数为118280次,少于步长为的情形。

当步长增加为,其余设置不变时,训练速度极慢,训练的误差出现明显的振荡,例如:

在某一步误差为后,其下一步误差又增加为,而接下来一步的误差又变为……,该例子说明了步长较大时,若取得合适则会加快收敛,若不合适,则会造成振荡而不再收敛。

(4.)增加动量项

当增加动量项,动量因子设为,其余设置不变时,要达到终止误差需要进行的训练次数为20467次,少于相同条件下不加动量项时所用的训练次数。

说明增加动量项加快了收敛。

五.实验总结

(1.)网络结构:

本实验选用三层前向神经网络使用BP算法以及加动量项的BP算法实现对单输入单输出函数的逼近,通过对三个不同函数的逼近实验测试了BP算法的性能及隐层节点数目、步长、动量项等因素对BP网络训练和测试的影响。

其中,适当增加隐层节点数可以改善网络性能,但在本实验中,隐层节点数取20和50时所用的训练次数比隐层节点取10时要大。

可见增加隐层节点并不一定能增加精度或减少训练时间,在本实验中反而会带来更长的训练时间;训练次数随着步长的增加而减小,但不合适的步长增加会引起振荡而增加训练次数甚至不再收敛;增加动量项后在相同条件下网络的收敛速度明显快于不加动量项时的速度,不过从本实验看来增加动量项对逼近的精度改善并不明显;对在到区间内均匀取值的数据进行测试,推广性较好,但并不是太理想。

由此可见,BP算法虽然理论上可以实现任意函数的逼近,但网络结构的具体设计及各种参数的选取并不容易。

并且网络的收敛速度及性能比较差,受到初始权值、样本取值、学习速率等因素的影响,对函数的选择也有一定的要求。

因此,标准的BP算法应结合一些其他的措施(如增加动量项,引入全局优化技术等)进行改进和优化。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1