- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 
                        查看更多
                        
                    
                2016年数模培训——人工神经网络分析
                    2.建立BP网络  (1)确定输入和输出 (2)确定网络结构(几个隐层?隐层神经元个数多少?) 为尽可能避免训练时出现“过拟合”现象,保证足够高的网络性能和泛化能力,确定隐层节点数的最基本原则是:在满足精度要求的前提下取尽可能紧凑的结构,即取尽可能少的隐层节点数。 3.设置网络参数 1)设置初始连接权值    BP算法决定了误差函数一般存在多个局部极小点,不同的网络初始权值直接决定了BP算法收敛于哪个局部极小点或是全局极小点。因此,要求计算程序必须能够自由改变网络初始连接权值.  由于Sigmoid转换函数的特性,一般要求初始权值分布在-0.5~0.5之间比较有效. 2)设置BP(改进)算法的参数 应用最广的带动量的梯度下降法或是LM算法 为避免陷入局部极小值,学习率和动量系数的选择一般要求: ——学习率通常在0.01~0.8之间; ——动量系数通常在0~1之间,而且一般比学习率要大。  4.网络训练 目的是什么?怎么实现的? BP网络的训练就是通过应用误差反传原理不断调整网络权值使网络模型输出值与已知的训练样本输出值之间的误差平方和达到最小或小于某一期望值。 BP算法是局部优化算法,容易陷入局部极小点,找不到最优值。(梯度下降法等)  在给定有限个(训练)样本的情况下,如何设计一个合理的BP网络模型并通过向所给的有限个样本的学习(训练)来满意地逼近样本所蕴含的规律(函数关系)的问题,经验很重要——“艺术创造的过程”  5.仿真并分析网络模型的泛化能力      训练神经网络的首要和根本任务是确保训练好的网络模型对非训练样本具有好的泛化能力(推广性),即有效逼近样本蕴含的内在规律,而不是看网络模型对训练样本的拟合能力。     因此,仅给出训练样本误差大小而不给出非训练样本(检验样本、测试样本)误差大小是没有任何意义的。  要分析建立的网络模型对样本所蕴含的规律的逼近情况——泛化能力,应该用非训练样本误差的大小来表示和评价,这也是之所以必须将总样本分成训练样本和非训练样本而绝不能将全部样本用于网络训练的主要原因之一。  如何判断建立的模型能否有效逼近训练样本所蕴含的规律? ——最直接和客观的方法是比较非训练样本误差和训练样本误差。 (1)差不多或稍小, ——能有效逼近。  (2) 相差很多(如几倍、几十倍甚至上千倍) ——不能有效逼近。 ※判断网络模型泛化能力的好坏,主要不是看测试样本误差大小的本身,而是要看测试样本的误差是否接近于训练样本和检验样本的误差。  ※测试样本的误差可以表示网络模型的计算精度或是预测精度(可用于稳定性分析)  6应用网络模型解决实际问题 ——实现预测或是分类     通过仿真和数学预处理的逆变换实现 2、程序实现——MATLAB神经网络工具箱的应用(Neural Networks Toolbox for Matlab) BP网络函数   数据归一化——mapminmax;mapstd 创建BP网络——newff 初始化——init 仿真—— sim; 训练算法——trainlm(速度快,需存储空间大) 学习规则——learngdm 网络训练——train   例:BP算法实现的简单例子(采用LM算法训练)  %%  定义训练样本  P=[-1,  -2,    3,    1;       -1,    1,    5,  -3]; % P 为输入矢量  T=[-1, -1, 1, 1]; % T 为输出(目标)矢量   %% 定义检验样本 Pn=[1 2;4 3];%输入 Tn=[-1 1];%输出   %%  创建一个新的前向神经网络  net=newff(minmax(P),[3,1],{tansig,purelin}, trainlm); %%  设置训练参数  net.trainParam.show = 50;  net.trainParam.lr = 0.05;  net.trainParam.mc = 0.9;  net.trainParam.epochs = 100;  net.trainParam.goal = 0.1; %%  调用 TRAINLM 算法训练 BP 网络  [net,tr]=train(net,P,T);    %%  仿真,分析网络的性能(逼近能力) A = sim(net,P); %  计算仿真误差 (训练样本的) E = T - A ;MSE = mse(E); %训练样本的误差  An=sim(net,Pn); %对检验样本仿真 En = Tn - An;MSEn = mse(En); %检验样本的误差 err=[MSE MSEn]%对比训练样本的误差和检验样本的误差  %% 显示网络的权值和阈值     inputWeights=net.IW{1,
                
原创力文档
                        

文档评论(0)