基于BP神经网络的非线性函数拟合系统实验分析与结果
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于BP神经网络的非线性函数拟合系统实验分析与结果
前几章已经完成了实验的数据准备并做好了相关理论研究,有了一定的理论基础。
本章将通过MATLAB软件搭建拟合模型,完成BP神经网络的训练和预测工作,并对最后的模型根据评价指标进行评价。
4.1 实验平台的搭建
本实验的MATLAB软件版本为2018a,CPU I5 9300H,操作系统Windows-64位,显卡GTX 1050Ti 3G。
搭建步骤如下:
(1)新建工程
打开MATLAB,点击主页,选择新建→工程→空白工程,如图4-1所示。
图4-1 新建工程
(2)新建M程序文件
点击主页,选择‘新建脚本’,然后点击保存并对文件重命名为‘data.m’,如图4-2所示。
图4-2 新建M程序文件
完成上述流程,表明程序运行环境搭建完毕,通过在程序文件里面编写程序
完成实验内容。
4.2 数据归一化
数据处理是数据拟合、预测和分类的关键步骤,对实验精度有很大影响。
本实验的数据是2个输入一个输出。
在进行BP 网络训练之前,由于每一项输入指标量化标准各不相同,不利于直接进行训练。
并且由于输入数据的单位不一样,有些数据的范围差别很大,导致神经网络收敛慢,训练时间长。
所以在此之前,对样本输入进行归一化处理。
4.2.1 最大-最小归一化
最大-最小归一化是将Data 经过公式映射在固定的范围内,具体公式如下:
min max min
x-x y x x =- (4.1) 最大-最小归一化可以将数据各个特征映射在一定范围,消除量纲对数据特征的影响,不改变数据分布,加快模型的训练学习。
4.2.2 Z -Score 归一化
Z -Score 归一化是将原始数据进行标准化,其中方差为a ,均值为b ,具体公式如下:
x-b y a
= (4.2) Z -Score 归一化可以将离群点的数据规范化,改变原有数据分布,减少离群点数据对模型的影响。
根据非线性函数的特点,本实验选择最大-最小归一化方法,并将数据归一化在[-1,1]之间。
4.3 BP 神经网络模型的结构设计原则
4.3.1 网络层数的确定
由于在数学上已经证明,三层神经网络可以处理任何复杂的线性或者非线性问题,能完成任意m 维度到n 维度的映射。
由此本文使用三层感知器的神经网络结构,其包含了输入层、隐含层和输出层。
4.3.2 输入数据和输出数据的确定
将第二章中给出的非线性函数的输入作为输入向量。
根据公式(4.1)对输入数据进行数据预处理。
本实验将非线性函数作为样本,对其进行模型的建立、仿真和预测。
根据第三章的研究,将2个输入分别用x1,x2进行表示,并将这两个输入当作BP 神经网络的输入变量。
将非线性函数的输出值当作输出变量。
当前非线性函数一共
生成了2000 个数据,在本文中随机选取1900个数据作为Training Sample 来构建神经网络,剩下的100个数据作为Test Sample 进行仿真。
4.3.3 各层节点的设计原则
(1)输入层节点设计原则
输入层节点要与第二章的非线性数据输入个数相匹配,彼此之间一一对应。
输入层节点数确定为2个。
(2)隐含层节点数设计原则
隐含层节点的作用是从输入的训练样本中提取有用的训练信息并且存储样本之间的联系和规律,它能够将输入数据和输出数据之间的函数映射关系很好地反映出来。
因此隐含层节点数的多少直接说明了该神经网络抓取数据有效信息能力的强弱。
当网络的隐含层节点数较少的时候,网络获取有效信息的能力也就越差,获取的数据可信度较低,输出的结果没有说服力;隐含层节点过多的时候,会导致网络结构过于复杂,这样会让网络学习过程变得极为漫长,并且最后会出现过度拟合的现象。
当前学术界还没有一个公认的理论公式确切计算隐含层的节点数,但是比较常用的一个方法是试凑法。
做法是对同一训练样本,从小到大依次设置隐含层节点数,从中找出误差最小时候所对应的隐含层阶段数。
此外,以下的经验公式可以作为试凑法的初始值。
∂++=l n m
(4.3)
n
2log m =
(4-4)
nl =m
(4-5)
利用上式,根据算法的特性,不断的训练过程中能将对网络影响小的权值逐步调整到0,这样就能够删除多余的节点。
迭代到最后不能再删除的时候,就是最适合的隐含层节点数。
本文的隐含层神经元节点数的确定由试凑法在后面进行。
(3)输出层节点数设置原则
输出层的数据来源于我们最后期望评估的结果,因此输出层节点数取1。
4.4 神经网络结构设计和训练
根据总结上述原则,因此本文所构建的模型是三层BP 神经网络模型,输入层节点数为20,隐含层节点数为未定,学习率暂选默认0.01,输出层节点数为1,
学习率取0.01,允许误差选择系统默认值,Hidden Layer 激活函数选择Sigmoid Function ,输出层激活函数采用Tanh Function ,训练函数采用traiglm ,
学习函数采用learndm,性能函数选择Mse 函数。
MATLAB对应BP神经网络语句如下:
net=newff(trainsample(1:2,:),trainsample(3,:),23,{'logsig','tansig'},'trainlm');
图4-3 非线性函数拟合模型的MATLAB结构图
4.4.1 神经网络模型隐含层节点数的确定
综合4.3.3中的公式,将Hidden Layer神经元个数范围确定在[14,25]之间的正整数。
之后根据控制变量法,保持其他参数不变,变动隐含层神经元节点数,对每一次的训练数据的误差进行统计和分析,将Mse最低的神经元节点数确定为本文的Hidden Layer神经元个数。
先将学习率设置为系统默认值0.01,以此为依据对[14,25]间不同的隐含层节点数进行数据训练,以期得到最优的结果,最终得到的不同隐含层节点数下网络的结果误差统计表如表4-1所示。
表4-1 隐藏层神经元训练对比表
隐含层的
均方误差训练次数
神经元数
14 0.1524 2000
15 0.0647 2000
16 0.0522 2000
17 0.0482 2000
18 0.0349 2000
19 0.0312 2000
20 0.0375 2000
21 0.0240 2000
22 0.0318 2000
23 0.0274 2000
24 0.0397 2000
25 0.0090 2000
由表4-1所得,均方误差最小值出现在隐含层神经元为25时。
因此神经网
络的最优隐含层神经元数目确定为25,其神经网络结构图如图4-3所示。
图4-3 BP神经网络拟合模型的结构图
4.4.2 神经网络模型学习率的确定
由于BP神经网络的学习率一般默认在0.01-0.1之间,因此本文选择分别取[0.01,0.1]之间的10 组数据,将隐含层神经元固定在25个,并且保持其他参数不变的条件之下分别将学习率设定为0.01,0.02....0.1,并且对原始数据进行网络训练,将所得的误差结果进行统计得到表4-2。
表4-2 学习率训练表
学习率均方误差训练次数
0.01 0.0090 2000
0.02 0.0127 2000
0.03 0.0291 2000
0.04 0.0220 2000
0.05 0.0132 2000
0.06 0.0153 2000
0.07 0.0151 2000
0.08 0.0095 2000
0.09 0.0151 2000
0.1 0.0224 2000
根据表4-2的内容所示,当学习率取0.01时整个原始数据集的均方误差值最小。
4.4.3 神经网络模型训练及仿真结果
本文使用MATLAB软件的神经网络工具箱对整个非线性函数拟合模型进行仿真和训练。
(1)训练数据的输入和输出在MATLAB软件中新建脚本,并且清空环境变量,导入数据包‘d.mat’中的数据文本,得到输入2000×3的数值矩阵,如下图4-4 所示。
图4-4 神经网络数据导入图
(2)随机产生训练集和测试集
为了保证神经网络训练结果的可信性,因此本文从输入的2000个Sample 中随机选取1900个Sample 作为样本的训练集‘trainsample ’,剩下的100个Sample 作为Sample 的测试集 ‘testsample ’,从而对训练结果进行检验和误差分析。
(3)创建网络并进行网络训练
根据前文所确定的神经网络的层数、Input Layer 节点数、Hidden Layer 节点数、Output Layer 节点数、Activation Function 和学习函数,设定各参数值、创建所需的神经网络并进行网络训练。
(4)训练结果分析
把上一步计算得到的规范化后的数据样本导入MATLAB 软件,利用建立好的 BP 网络对样本数据进行训练,样本的预测值与测试集的真实结果之间的评价指标用相对误差E 和决定系数R 的平方进行表示。
相对误差E 越小,说明模型的性能越好。
),.....,2,1(ˆn i y y y E i i i i =-=
(4-6) 经过训练之后,所得决定系数的值为0.99994,说明了整个网络性能非常好。
下图4-5是对整个神经网络进行回归分析的过程,从图可知,基本上所有的回归分析系数都接近于1,这说明了整个神经网络模型具有良好的非线性映射能力和学习能力。
图4-5 BP神经网络模型表现
图4-6为误差分析图,从图中可以看出误差均小于0.2,满足拟合性能要求。
图4-7为预测值与实际值的对比图,从图中可以看出预测值和实际值十分接近,说明拟合效果很好。
图4-6 误差分析图
图4-7 预测值和真实值的对比图
(5)预测结果与评价
在训练结束之后,根据上述的训练结果,获得评价指标结果,如图4-8所示。
平均绝对误差MAE为0.0090368,均方误差MSE为0.0063983,均方根误差RMSE 为:0.07999,满足系统性能指标要求。
图4-8 性能指标结果图。