基于MATLAB的BP神经网络实现研究
BP神经网络应用DOC
西南大学电子信息工程学院2014级研究生文献阅读报告报告题目:基于MATLAB的BP神经网络应用研究生姓名:代祥光学号 012014333000272 研究生类别: 1. 博士生 2. 学术型硕士生 3. 专业型硕士生评语:成绩任课教师评阅时间基于MATLAB的BP神经网络应用摘要:本文首先说明课题研究的目的和意义,评述课题的国内外研究现状,引出目前存在的问题。
然后分析了神经网络算法的基本原理,给出经典神经网络算法的具体实现方法,总结神经网络算法的特点,并给出神经网络算法的基本流程。
采用Matlab软件编程实现BP神经网络算法。
将神经网络算法应用于函数逼近和样本含量估计问题中,并分析相关参数对算法运行结果的影响。
最后对BP神经网络算法进行了展望。
关键词:神经网络;BP神经网络;函数逼近BP Neural Network And Application based on MATLABAbstract: First, the research purpose and significance of neural network is expound in this article. Commentary studies current situation at the problem home and abroad. Leads to the existing problems, and then have analysed algorithmic basal principle of neural networks, give algorithmic concre of classics neural networks out the realization method.Summing up the characteristics of neural network algorithm. Neural network algorithm is given the basic processes. The arithmetic of BP neural network is realized in Matlab software. The algorithm applies of BP neural networks to the function approximation problem and compute theswatch content.And analysis of relevant parameters on the results of algorithm.Finally, The BP neural network algorithm is Outlook.Key word:neural network ; BP neural network; function approximation1绪论人工神经网络(Artificial Neural Networks,NN)是由大量的、简单的处理单元(称为神经元)广泛地互相连接而形成的复杂网络系统,它反映了人脑功能的许多基本特征,是一个高度复杂的非线性动力学系统[1]。
Bp神经网络的Matlab实现
式, 同一层之 间不存 在相 互连接 , 隐层 可 以有 一层或 多层 . 层与层 之 间有 两种 信号在 流通 : 一种是 工 作信 号 ( 实线 表 示 )它是 施 加输 入信 号 后 用 , 向前传 播直 到在输 出端 产生 实 际输 出的信 号 , 是输 入 和权 值 的 函数 . 另
我们 可 以直观 、 便地进 行分 析 、 算 及仿 真 工作 _ . 经 网络 工 具箱 是 M tb以神 经 网 络 为基 础 , 方 计 2神 j aa l 包含 着 大
量B p网络 的作 用 函数和算 法 函数 , B 为 p网络 的仿 真研 究 提供 了便 利 的工 具 . 运用 神 经 网络 工具 箱 一般 按 照
21年 1 00 0月
湘 南 学 院 学报
J u n lo a g a o ra f Xin n n Umv  ̄i e t y
Oc . 2 0 t . 01 V0 . l No. J3 5
第 3 卷第 5期 1
B p神 经 网络 的 Ma a 现 t b实 l
石 云
一
输 入层
隐 层
输 出层
种是 误差信 号 ( 虚线 表示 )网络实 际输 出与期望 输 出间的差 值 即为 用 ,
图 1 典型 B p网络 模 型
误差 , 由输 出端开 始逐层 向后传 播 . p网络 的学 习过程 程 由前 向计 算 它 B
用matlab编BP神经网络预测程序
求用matlab编BP神经网络预测程序求一用matlab编的程序P=[。
];输入T=[。
];输出% 创建一个新的前向神经网络net_1=newff(minmax(P),[10,1],{'tansig','purelin'},'traingdm')% 当前输入层权值和阈值inputWeights=net_1.IW{1,1}inputbias=net_1.b{1}% 当前网络层权值和阈值layerWeights=net_1.LW{2,1}layerbias=net_1.b{2}% 设置训练参数net_1.trainParam.show = 50;net_1.trainParam.lr = 0.05;net_1.trainParam.mc = 0.9;net_1.trainParam.epochs = 10000;net_1.trainParam.goal = 1e-3;% 调用TRAINGDM 算法训练BP 网络[net_1,tr]=train(net_1,P,T);% 对BP 网络进行仿真A = sim(net_1,P);% 计算仿真误差E = T - A;MSE=mse(E)x=[。
]';%测试sim(net_1,x) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%不可能啊我200928对初学神经网络者的小提示第二步:掌握如下算法:2.最小均方误差,这个原理是下面提到的神经网络学习算法的理论核心,入门者要先看《高等数学》(高等教育出版社,同济大学版)第8章的第十节:“最小二乘法”。
3.在第2步的基础上看Hebb学习算法、SOM和K-近邻算法,上述算法都是在最小均方误差基础上的改进算法,参考书籍是《神经网络原理》(机械工业出版社,Simon Haykin著,中英文都有)、《人工神经网络与模拟进化计算》(清华大学出版社,阎平凡,张长水著)、《模式分类》(机械工业出版社,Richard O. Duda等著,中英文都有)、《神经网络设计》(机械工业出版社,Martin T. Hargan等著,中英文都有)。
BP神经网络原理及其MATLAB应用
BP神经网络原理及其MATLAB应用BP神经网络(Back Propagation Neural Network)是一种基于梯度下降算法的人工神经网络模型,具有较广泛的应用。
它具有模拟人类神经系统的记忆能力和学习能力,可以用来解决函数逼近、分类和模式识别等问题。
本文将介绍BP神经网络的原理及其在MATLAB中的应用。
BP神经网络的原理基于神经元间的权值和偏置进行计算。
一个标准的BP神经网络通常包含三层:输入层、隐藏层和输出层。
输入层负责接收输入信息,其节点数与输入维度相同;隐藏层用于提取输入信息的特征,其节点数可以根据具体问题进行设定;输出层负责输出最终的结果,其节点数根据问题的要求决定。
BP神经网络的训练过程可以分为前向传播和反向传播两个阶段。
前向传播过程中,输入信息逐层传递至输出层,通过对神经元的激活函数进行计算,得到神经网络的输出值。
反向传播过程中,通过最小化损失函数的梯度下降算法,不断调整神经元间的权值和偏置,以减小网络输出与实际输出之间的误差,达到训练网络的目的。
在MATLAB中,可以使用Neural Network Toolbox工具箱来实现BP神经网络。
以下是BP神经网络在MATLAB中的应用示例:首先,需导入BP神经网络所需的样本数据。
可以使用MATLAB中的load函数读取数据文件,并将其分为训练集和测试集:```data = load('dataset.mat');inputs = data(:, 1:end-1);targets = data(:, end);[trainInd, valInd, testInd] = dividerand(size(inputs, 1), 0.6, 0.2, 0.2);trainInputs = inputs(trainInd, :);trainTargets = targets(trainInd, :);valInputs = inputs(valInd, :);valTargets = targets(valInd, :);testInputs = inputs(testInd, :);testTargets = targets(testInd, :);```接下来,可以使用MATLAB的feedforwardnet函数构建BP神经网络模型,并进行网络训练和测试:```hiddenLayerSize = 10;net = feedforwardnet(hiddenLayerSize);net = train(net, trainInputs', trainTargets');outputs = net(testInputs');```最后,可以使用MATLAB提供的performance函数计算网络的性能指标,如均方误差、相关系数等:```performance = perform(net, testTargets', outputs);```通过逐步调整网络模型的参数和拓扑结构,如隐藏层节点数、学习率等,可以进一步优化BP神经网络的性能。
用MATLAB的神经网络工具箱实现三层BP网络
用MATLAB的神经网络工具箱实现三层BP网络用MATLAB的神经网络工具箱实现三层BP网络% 读入训练数据和测试数据Input = [];Output = [];str = {'Test','Check'};Data = textread([str{1},'.txt']);% 读训练数据Input = Data(:,1:end-1);% 取数据表的前五列(主从成分)Output = Data(:,end);% 取数据表的最后一列(输出值)Data = textread([str{2},'.txt']);% 读测试数据CheckIn = Data(:,1:end-1);% 取数据表的前五列(主从成分)CheckOut = Data(:,end);% 取数据表的最后一列(输出值)Input = Input';Output = Output';CheckIn = CheckIn';CheckOut = CheckOut';% 矩阵赚置[Input,minp,maxp,Output,mint,maxt] = premnmx(Input,Output);% 标准化数据%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%% 神经网络参数设置%====可以修正处Para.Goal = 0.0001;% 网络训练目标误差Para.Epochs = 800;% 网络训练代数Para.LearnRate = 0.1;% 网络学习速率%====Para.Show = 5;% 网络训练显示间隔Para.InRange = repmat([-1 1],size(Input,1),1);% 网络的输入变量区间Para.Neurons = [size(Input,1)*2+1 1];% 网络后两层神经元配置Para.TransferFcn= {'logsig' 'purelin'};% 各层的阈值函数Para.TrainFcn = 'trainlm';% 网络训练函数赋值% traingd : 梯度下降后向传播法% traingda : 自适应学习速率的梯度下降法% traingdm : 带动量的梯度下降法% traingdx :% 带动量,自适应学习速率的梯度下降法Para.LearnFcn = 'learngdm';% 网络学习函数Para.PerformFcn = 'sse';% 网络的误差函数Para.InNum = size(Input,1);% 输入量维数Para.IWNum = Para.InNum*Para.Neurons(1);% 输入权重个数Para.LWNum = prod(Para.Neurons);% 层权重个数Para.BiasNum = sum(Para.Neurons);% 偏置个数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%Net = newff(Para.InRange,Para.Neurons,Para.TransferFcn,...Para.TrainFcn,Para.LearnFcn,Para.PerformFcn);% 建立网络%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%Net.trainParam.show = Para.Show;% 训练显示间隔赋值Net.trainParam.goal = Para.Goal;% 训练目标误差赋值Net.trainParam.lr = Para.LearnRate;% 网络学习速率赋值Net.trainParam.epochs = Para.Epochs;% 训练代数赋值Net.trainParam.lr = Para.LearnRate;Net.performFcn = Para.PerformFcn;% 误差函数赋值%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 调试Out1 =sim(Net,Input);% 仿真刚建立的网络Sse1 =sse(Output-Out1);% 刚建立的网络误差%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [Net TR] = train(Net,Input,Output);% 训练网络并返回%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Out3 =sim(Net,Input);% 对学习训练后的网络仿真。
BP神经网络matlab实现的基本步骤
1、数据归一化2、数据分类,主要包括打乱数据顺序,抽取正常训练用数据、变量数据、测试数据3、建立神经网络,包括设置多少层网络(一般3层以内既可以,每层的节点数(具体节点数,尚无科学的模型和公式方法确定,可采用试凑法,但输出层的节点数应和需要输出的量个数相等),设置隐含层的传输函数等。
关于网络具体建立使用方法,在后几节的例子中将会说到。
4、指定训练参数进行训练,这步非常重要,在例子中,将详细进行说明5、完成训练后,就可以调用训练结果,输入测试数据,进行测试6、数据进行反归一化7、误差分析、结果预测或分类,作图等数据归一化问题归一化的意义:首先说一下,在工程应用领域中,应用BP网络的好坏最关键的仍然是输入特征选择和训练样本集的准备,若样本集代表性差、矛盾样本多、数据归一化存在问题,那么,使用多复杂的综合算法、多精致的网络结构,建立起来的模型预测效果不会多好。
若想取得实际有价值的应用效果,从最基础的数据整理工作做起吧,会少走弯路的。
归一化是为了加快训练网络的收敛性,具体做法是:1 把数变为(0,1)之间的小数主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速,应该归到数字信号处理范畴之内。
2 把有量纲表达式变为无量纲表达式归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量比如,复数阻抗可以归一化书写:Z = R + jωL = R(1 + jωL/R) ,复数部分变成了纯数量了,没有量纲。
另外,微波之中也就是电路分析、信号系统、电磁波传输等,有很多运算都可以如此处理,既保证了运算的便捷,又能凸现出物理量的本质含义。
神经网络归一化方法:由于采集的各数据单位不一致,因而须对数据进行[-1,1]归一化处理,归一化方法主要有如下几种,供大家参考:1、线性函数转换,表达式如下:复制内容到剪贴板代码:y=(x-MinValue)/(MaxValue-MinValue)说明:x、y分别为转换前、后的值,MaxValue、MinValue分别为样本的最大值和最小值。
MATLAB神经网络(2)BP神经网络的非线性系统建模——非线性函数拟合
MATLAB神经⽹络(2)BP神经⽹络的⾮线性系统建模——⾮线性函数拟合2.1 案例背景在⼯程应⽤中经常会遇到⼀些复杂的⾮线性系统,这些系统状态⽅程复杂,难以⽤数学⽅法准确建模。
在这种情况下,可以建⽴BP神经⽹络表达这些⾮线性系统。
该⽅法把未知系统看成是⼀个⿊箱,⾸先⽤系统输⼊输出数据训练BP神经⽹络,使⽹络能够表达该未知函数,然后⽤训练好的BP神经⽹络预测系统输出。
本章拟合的⾮线性函数为y=x12+x22该函数的图形如下图所⽰。
t=-5:0.1:5;[x1,x2] =meshgrid(t);y=x1.^2+x2.^2;surfc(x1,x2,y);shading interpxlabel('x1');ylabel('x2');zlabel('y');title('⾮线性函数');2.2 模型建⽴神经⽹络结构:2-5-1从⾮线性函数中随机得到2000组输⼊输出数据,从中随机选择1900 组作为训练数据,⽤于⽹络训练,100组作为测试数据,⽤于测试⽹络的拟合性能。
2.3 MATLAB实现2.3.1 BP神经⽹络⼯具箱函数newffBP神经⽹络参数设置函数。
net=newff(P, T, S, TF, BTF, BLF, PF, IPF, OPF, DDF)P:输⼊数据矩阵;T:输出数据矩阵;S:隐含层节点数;TF:结点传递函数。
包括硬限幅传递函数hardlim、对称硬限幅传递函数hardlims、线性传递函数purelin、正切型传递函数tansig、对数型传递函数logsig;x=-5:0.1:5;subplot(2,6,[2,3]);y=hardlim(x);plot(x,y,'LineWidth',1.5);title('hardlim');subplot(2,6,[4,5]);y=hardlims(x);plot(x,y,'LineWidth',1.5);title('hardlims');subplot(2,6,[7,8]);y=purelin(x);plot(x,y,'LineWidth',1.5);title('purelin');subplot(2,6,[9,10]);y=tansig(x);plot(x,y,'LineWidth',1.5);title('tansig');subplot(2,6,[11,12]);y=logsig(x);plot(x,y,'LineWidth',1.5);title('logsig');BTF:训练函数。
BP神经网络实验详解(MATLAB实现)
BP神经网络实验详解(MATLAB实现)BP(Back Propagation)神经网络是一种常用的人工神经网络结构,用于解决分类和回归问题。
在本文中,将详细介绍如何使用MATLAB实现BP神经网络的实验。
首先,需要准备一个数据集来训练和测试BP神经网络。
数据集可以是一个CSV文件,每一行代表一个样本,每一列代表一个特征。
一般来说,数据集应该被分成训练集和测试集,用于训练和测试模型的性能。
在MATLAB中,可以使用`csvread`函数来读取CSV文件,并将数据集划分为输入和输出。
假设数据集的前几列是输入特征,最后一列是输出。
可以使用以下代码来实现:```matlabdata = csvread('dataset.csv');input = data(:, 1:end-1);output = data(:, end);```然后,需要创建一个BP神经网络模型。
可以使用MATLAB的`patternnet`函数来创建一个全连接的神经网络模型。
该函数的输入参数为每个隐藏层的神经元数量。
下面的代码创建了一个具有10个隐藏神经元的单隐藏层BP神经网络:```matlabhidden_neurons = 10;net = patternnet(hidden_neurons);```接下来,需要对BP神经网络进行训练。
可以使用`train`函数来训练模型。
该函数的输入参数包括训练集的输入和输出,以及其他可选参数,如最大训练次数和停止条件。
下面的代码展示了如何使用`train`函数来训练模型:```matlabnet = train(net, input_train, output_train);```训练完成后,可以使用训练好的BP神经网络进行预测。
可以使用`net`模型的`sim`函数来进行预测。
下面的代码展示了如何使用`sim`函数预测测试集的输出:```matlaboutput_pred = sim(net, input_test);```最后,可以使用各种性能指标来评估预测的准确性。
(完整版)BP神经网络matlab实例(简单而经典)
p=p1';t=t1';[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); %原始数据归一化net=newff(minmax(pn),[5,1],{'tansig','purelin'},'traingdx');%设置网络,建立相应的BP网络net.trainParam.show=2000; % 训练网络net.trainParam.lr=0.01;net.trainParam.epochs=100000;net.trainParam.goal=1e-5;[net,tr]=train(net ,pn,tn); %调用TRAINGDM算法训练BP 网络pnew=pnew1';pnewn=tramnmx(pnew,minp,maxp);anewn=sim(net,pnewn); %对BP网络进行仿真anew=postmnmx(anewn,mint,maxt); %还原数据y=anew';1、BP网络构建(1)生成BP网络=net newff PR S S SNl TF TF TFNl BTF BLF PF(,[1 2...],{ 1 2...},,,)PR:由R维的输入样本最小最大值构成的2R⨯维矩阵。
S S SNl:各层的神经元个数。
[ 1 2...]{ 1 2...}TF TF TFNl:各层的神经元传递函数。
BTF:训练用函数的名称。
(2)网络训练[,,,,,] (,,,,,,)=net tr Y E Pf Af train net P T Pi Ai VV TV(3)网络仿真=[,,,,] (,,,,)Y Pf Af E perf sim net P Pi Ai T{'tansig','purelin'},'trainrp'2、BP网络举例举例1、%traingdclear;clc;P=[-1 -1 2 2 4;0 5 0 5 7];T=[-1 -1 1 1 -1];%利用minmax函数求输入样本范围net = newff(minmax(P),T,[5,1],{'tansig','purelin'},'trainrp');net.trainParam.show=50;%net.trainParam.lr=0.05;net.trainParam.epochs=300;net.trainParam.goal=1e-5;[net,tr]=train(net,P,T);net.iw{1,1}%隐层权值net.b{1}%隐层阈值net.lw{2,1}%输出层权值net.b{2}%输出层阈值sim(net,P)举例2、利用三层BP神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个。
BPNN在matlab中的实现学习
BPNN在matlab中的实现学习运用Matlab创建BP神经网络(R2022b)BP神经网络属于前向网络以下为创建BP神经网络的方法及参数意义(1)net=newff(P,T,S)或者net=newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)P:输入参数矩阵。
(R某Q1)T:目标参数矩阵。
(SN某Q2)S:N-1个隐含层的数目(S(i)到S(N-1)),输出层的单元数目取决于T,默认为空矩阵。
TF:相关层的传递函数,默认隐含层为tanig函数,输出层为purelin函数。
BTF:BP神经网络学习训练函数,默认值为trainlm函数。
BLF:权重学习函数,默认值为learngdm。
PF:性能函数,默认值为me。
IPF,OPF,DDF均为默认值即可。
(2)传递函数purelin线性传递函数tanig正切S型传递函数logig对数S型传递函数隐含层和输出层函数的选择对BP神经网络预测精度有较大影响,一般隐含层节点转移函数选用tanig函数或logig函数,输出层节点转移函数选用tanig函数或purelin函数。
(3)学习训练函数神经网络的学习分为有导师学习和无导师学习。
最速下降BP算法:traingd动量BP算法:traingdm学习率可变的BP算法:trainda(学习率可变的最速下降BP算法);traind某(学习率可变的动量BP算法)弹性算法:trainrp变梯度算法:traincgf(Fletcher-Reeve修正算法)traincgp(Polak_Ribiere修正算法)traincgb(Powell-Beale复位算法)trainbfg(BFGS拟牛顿算法)traino(OSS算法)trainlm(LM算法)参数说明:通过net.trainParam可以查看参数ShowTrainingWindowFeedbackhowWindow:trueMinimumGradientmin_grad:性能函数最小梯度Ma某imumValidationCheckma某_fail:最大验证失败次数LearningRatelr:学习速率LearningRateIncreaelr_inc:学习速率增长值LearningRatelr_dec:学习速率下降值Ma某imumPerformanceIncreaema某_perf_inc:MomentumContantmc:动量因子(4)BP神经网络预测函数SimOut=im('model',Parameter)&y=im(net,某)函数功能:用训练好的BP神经网络预测函数输出net:训练好的网络某:输入数据y:网络预测数据(5)训练函数[net,tr]=train(Net,P,T,Pi,Ai)其中,Net待训练的网络P输入数据矩阵T输出数据矩阵(default=zero)Pi初始化输入层条件(default=zero)Ai初始化输出层条件(default=zero)net训练好的网络tr训练过程记录注意:PNi-by-TScellarrayEachelementP{i,j,t}ianNi-by-Qmatri 某.TNl-by-TScellarrayEachelementT{i,t}iaUi-by-Qmatri某.现给出一药品商店一年当中12个月的药品销售量(单位:箱)如下:205623952600229816341600187314871900150020461556训练一个BP网络,用当前的所有数据预测下一个月的药品销售量。
BP神经网络的设计实例(MATLAB编程)
神经网络的设计实例(MATLAB编程)例1 采用动量梯度下降算法训练BP 网络。
训练样本定义如下:输入矢量为p =[-1 -2 3 1-1 1 5 -3]目标矢量为t = [-1 -1 1 1]解:本例的MATLAB 程序如下:close allclearecho onclc% NEWFF——生成一个新的前向神经网络% TRAIN——对BP 神经网络进行训练% SIM——对BP 神经网络进行仿真pause% 敲任意键开始clc% 定义训练样本P=[-1, -2, 3, 1; -1, 1, 5, -3]; % P 为输入矢量T=[-1, -1, 1, 1]; % T 为目标矢量pause;clc% 创建一个新的前向神经网络net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm') % 当前输入层权值和阈值inputWeights=net.IW{1,1}inputbias=net.b{1}% 当前网络层权值和阈值layerWeights=net.LW{2,1}layerbias=net.b{2}pauseclc% 设置训练参数net.trainParam.show = 50;net.trainParam.lr = 0.05;net.trainParam.mc = 0.9;net.trainParam.epochs = 1000;net.trainParam.goal = 1e-3;pauseclc% 调用TRAINGDM 算法训练BP 网络[net,tr]=train(net,P,T);pauseclc% 对BP 网络进行仿真A = sim(net,P)% 计算仿真误差E = T - AMSE=mse(E)pauseclcecho off例2 采用贝叶斯正则化算法提高BP 网络的推广能力。
在本例中,我们采用两种训练方法,即L-M 优化算法(trainlm)和贝叶斯正则化算法(trainbr),用以训练BP 网络,使其能够拟合某一附加有白噪声的正弦样本数据。
基于MATLAB的BP神经网络的应用
1.前言在传统的智能识别系统中,控制规则的获取完全按照设计者和操作人员的经验进行,在某些系统中,由于设计者和操作人员的局限性,智能识别系统的设计无法保证最优或次优的控制性能[1]。
而本文是基于人工神经网络的智能识别系统[2],着力从行为上模拟人的控制推理和决策过程的实用控制方法,运用模糊控制理论[3],将神经网络和模糊控制结合起来,提高人工神经网络的智能性。
基于神经网络的人工智能模糊控制适用于难以建模的对象,而且最终控制形式简单、容易实现,控制效果取决于是否正确、全面和有效的将操作人员的控制经验总结为一系列的语言控制规则[4]。
2.BP神经网络与BP算法2.1BP网络结构BP网络是一种多层前馈神经网络,包括输入层,隐层(中间层)和输出层,其中隐层可以是一层也可以是多层,一般而言,三层BP神经网络就可以解决大部分比较简单的问题。
BP网络前后层之间实现全连接,每层神经元之间无连接。
学习样本给了BP网络后,各神经元响应输入,信号从输入层,经隐层(中间层),向输出层传播,根据减少预期输出与实际输出差距这一原则,从输出层,经过各中间层,最后回到输入层,逐层修正各个连接权值,这种算法被称为“误差逆传播算法”,简称BP算法,随着误差逆传播的不断进行,网络响应输入的正确率也不断上升。
基本的BP网络结构如图1所示:图1基本的BP网络结构2.2BP算法BP算法的基本框图如图2所示:图2BP算法的基本框图3.洗衣机的人工网络智能系统3.1人工神经网络的模糊控制的结构特征人工神经网络的模糊控制器是由神经网络和模糊控制共同组成的混合系统,这种混合系统具备了这两种技术的优点。
人工神经网络模糊控制结构一般有3种组合形式,如图3所示。
图3人工神经网络模糊控制结构的一般组合形3.2洗衣机的神经网络模糊控制器的设计3.2.1基本推理图在设计洗衣机控制系统时,首先应该考虑其被控参量,一般来说主要为洗涤时间和水流强度;其次考虑影响这一输出参量的因子,主要是被洗涤物品的浑浊程度和浑浊性质。
基于BP神经网络的函数逼近实验及MATLAB实现_曹旭帆
! ( 3) 由 ymj = F
W y m m- 1 ij i
计算从第一层直至输
i
出层各节点 j的输出 ymj , 其中上标 m 为 BP 网络的层
标号, F 为神经元的激励函数 ymi - 1为 BP网络 m - 1层
的 i节点的输出, Wmij为 m - 1层的 i节点到 m 层的 j节
点的连接权值, M = M, M - 1, ∀, 1。
!mj = !mj +
m j
( 9) 返回 2, 输入下一组数据前重复 ( 2) ∃ ( 8)的
过程。由此可见, BP 算法的主要思路是从后向前逐层
传播输出层的误差, 并用此误差修正前层权值。
对于 BP 神经网络, 有一个重要定理, 对于任何闭
区间内的连续函数, 都可以用一个三层的 BP 网络逼
近, 本文要研究的问题就是 BP 网络的 隐层神经元个
根据上述一系列实验以及各种算法的训练速度计算量及内存需求量我们设计的bp网络net隐层神经元数目定为16输入输出层神经元数目为1隐层输出层传递函数均为tansig训练函数为traingdx用样本训练网络net训练步数为10000步目标误差0000001bp网络net经过训练达到误差精度要求逼近误差e为00044959netiw11表示隐层16个神经元和输入层1神经元之间的连接权值netlw21表示输出层1个神经元和隐层16个神经元之间的连接权值netb1表示隐层16个神经元的阈值netb2表示输出个神经元的阈值bp网络net的各项权值和阈值如下
关键词: BP 神经网络; MATLAB; 函数逼近; 多项式拟合
中图分类号: TP183
文献标识码: A
文章编号: 1006- 7167( 2008) 05- 0034- 05
基于MATLAB的BP神经网络设计
维普资讯
第 3 (0 7 第 8期 5卷 20 )
计算 机与数字工程
15 2
数太 少 , 错性 差 , 别未 经学 习的能力 样本 低 , 容 识 所 以必 须综合 多方 面 的 因素进行 设计 。 ①根 据 前 人 经 验 , 以 参 考 以 下 公 式 进 行 可
一
隐层节点数太多会导致学习时间过长 ; 而隐层节点
・
收 到本 文 时 间 :06年 1 20 O月 1 日 9
作者简介 : 孙帆 , , 男 硕士研究生 , 研究方 向: 神经 网络算法 , 电站 电价预测 。施学 勤 , , 水 女 硕士研究生 , 研究方 向 : 数 据库理论 与设计 , 管理信息系统 。
B 神经 网络 P T 13 P 8 M TA A L B语言 设计
定, 无规律 可寻。简要介 绍利用 MA L B语 言进行 B TA P网络建立 、 训练 、 真的方法及注意事项 。 仿
关键词 中图分类号
1 引 言
人工 神经 网络 ( rfil erl e ok 简 称 At c ua N t rs i aN i w A N) 近 年 来 发 展 起 来 的模 拟 人 脑 生 物 过 程 的 N 是
设计 :
针对 不 同 的应 用 ,P网络 提供 了多 种训 练 , B 学 习方法 , 常 对 于 包 含 数 百 个 权 值 的 函数 逼 近 网 通 络 , 练 函数 t il 收敛 速度 最 快 。将 R R P算 训 r nm a PO 法 的训 练 函数 t ir 用 于模 式 识 别 时 , 速 度 r np应 a 其
映射 。在模式样本相对较少的情的超平 面划 分 , 时 , 可 此 选择 两层 B P网络就 可以 了; 当模式样本数 很多 时 , 小 网络规模 , 一个 隐层 是有必 要 的 , 减 增加 但是
神经网络PPT课件-基于MATLAB算法(BP.遗传算法.RBF.小波)
正因为人工神经网络是对生物神经网络的模仿,它具有一些传统 逻辑运算不具有的优点。主要包括: 一、非线性。非线性是自然界的普遍特性。人脑的思考过程就是 非线性的。人工神经网络通过模仿人脑神经元结构的信息传递过 程,可以进行线性或者非线性的运算,这是人工神经网络的最特 出的特性。
二、自适应性。神经网络的结构中设置了权值和阈值参数。网络 能够随着输入输出端的环境变化,自动调节神经节点上的权值和 阈值。因此,神经网络对在一定范围变化的环境有பைடு நூலகம்强的适应能 力。适用于完成信号处理、模式识别、自动控制等任务。系统运 行起来也相当稳定。
③引入陡度因子
误差曲面上存在着平坦区域。权值调整进入平坦区的原因是神经元输出进入了转 移函数的饱和区。如果在调整进入平坦区域后,设法压缩神经元的净输入,使其 输出退出转移函数的饱和区,就可以改变误差函数的形状,从而使调整脱离平坦 区。实现这一思路的具体作法是在原转移函数中引入一个陡度因子。
BP神经网络的MATLAB算法
BP神经网络模型
• BP (Back Propagation)神经网络,即误差反向传播算法的学习过 程,由信息的正向传播和误差的反向传播两个过程组成。输入 层各神经元负责接收来自外界的输入信息,并传递给中间层各 神经元;中间层是内部信息处理层,负责信息变换,根据信息 变化能力的需求,中间层可以设计为单隐含层或者多隐含层结 构;最后一个隐含层传递到输出层各神经元的信息,经进一步 处理后,完成一次学习的正向传播处理过程,由输出层向外界 输出信息处理结果。
l n 1 l
m n a
l log 2 n
步骤2:隐含层输出计算 根据输入变量 X,输入层和隐含层间连接权值 ij 以及隐含层阈值 a, 计算隐含层输出H。
基于MATLAB的BP神经网络人群流量预测的实现
论文题目MATLAB基础上的BP神经网络人群流量预测学生姓名学号专业MATLAB基础上的BP神经网络人群流量预测摘要:通过对旅游景点、商业网点等人口密集场所的人群流量进行预测,对于合理控制旅游景点、商业网点等场所的人口数量,预防人群踩踏事故的发生具有非常重要的意义.本文首先介绍了人群流量的BP神经网络预测方法,并建立了四个BP神经网络模型,并结合模型编写了相应的MATLAB运算程序,随后用所建立的网络模型对德州市某路口单向的人群流量进行了预测,最后还分析了不同输入、输出结构、隐含层神经元的个数、以及不同传递函数等因素对BP神经网络性能的影响.关键词:人群流量;BP神经网络;MATLAB1 BP神经网络基本原理BP神经网络是一种常见的神经反馈网络,它是一种具有三层或者三层以上神经元的神经网络,其基本的结构包括输入层、隐含层以及输出层.当一个学习样本提供给输入神经元后,该神经元的激活值一般从输入层经过隐含层向输出层进行传播,在输出层的各个神经元获得网络的输入响应后,然后按照减少实际输出样本与网络输出之间误差的方向,从BP神经网络的输出层方向经过各隐含层最后回到输入层,进而达到逐步修正各连接权值的目的,这种算法就是BP算法.这也就是说BP神经网络是通过反向的误差传播,在传播过程中不断修正其权值和阀值,进而使误差达到或者接近其理想水平的一种神经网络.BP神经网络从本质上来说是高精度的数值拟合的一种神经网络方法,它的基本原理就是把激励函数串联起来,通过改变各个激励函数的系数,从而达到减小误差的目的.BP神经网络因为其预测的精度高,网络训练效果好,自适应性强,稳定性好等特点而得到了越来越广泛的使用.BP神经网络作为一种较智能型的网络预测模型,在数学建模以及实际问题的解决中发挥着越来越重要的作用.图一为常见的带一个隐含层的BP神经网络的一般结构,图二为一个基本的BP 神经元模型.图1 含一个隐含层的BP神经网络p p 图2 基本的神经元模型2 BP 网络求解过程利用BP 神经网络进行的求解过程可以按照以下六个步骤来进行(1)输入原始数据(2)将原始数据归一化处理(3)进行网络训练(4)对原始数据进行仿真(5)将仿真后得到的新数据与已知数据进行比较(6)对得到的新数据再进行仿真.3 数据处理与数据拟合对原始数据进行预处理的方法主要有下面几个:(1)对原始数据归一化处理:此方法是将原始数据都变为-1-1之间的数,尽量消除原始数据在收集过程中所带来的一系列对实验结果可能造成的影响,归一化处理所用到的函数主要有mapminmax 、postmnmx 、tramnmx 等函数.当然,也可以利用公式x x x x x kk minmax min --=进行MATLAB 编程实现原始数据的归一化.(2)标准化处理:这一方法的目的是将收集到的原始数据都化为均值为0,方差为1的一组新的数据,标准化处理所用到的函数主要有prestd 、poststd 、trastd 等函数.(3)主成分分析法:对原始数据进行正交处理,借此来减少输入的原始数据的维数,这一方法所用到的函数主要有prepca 、trapca 等函数.(4)相关性分析法和统计学回归分析法:对原始数据进行统计学的回归分析和相关性分析,可以借助有关统计学软件进行,或者借助postrg 函数编程实现.本文把收集到的德州市某路口2016年12月15—21日8:00—22:00的单向人群流量数据作为一个样本,每10分钟为一个时间间隔.我们每60分钟的数据作为一组,这样就把原始数据总共分成了14组.一般首先要对原始数据进行归一化处理,以防某些原始数据的特征被忽视.对原始数据进行归一化处理一般采用以下两种公式:x x x x x kkmin max min --=或x x x x x k k min max max --=.我们知道人群流量越大,发生踩踏事故的概率就越大,因此本文采用公式x x x x x k k min max min --=进行原始数据归一化处理.归一化后的数据如下表所示:归一化后2016年12月17日德州某路口单向8:10—22:00人群流量 时间 流量 时间 流量 时间 流量 时间 流量 时间 流量 时间 流量 8:10 0.0357 9:20 0.1753 10:30 0.5877 11:40 0.7922 12:50 0.5649 14:00 0.5617 8:20 0.0649 9:30 0.1429 10:40 0.6494 11:50 0.8701 13:00 0.4773 14:10 0.4741 8:30 0.1623 9:40 0.1753 10:50 0.6429 12:00 0.7013 13:10 0.7403 14:20 0.4545 8:40 0.1591 9:50 0.3734 11:00 0.737 12:10 0.8052 13:20 0.5844 14:30 0.4675 8:50 0.1916 10:00 0.3831 11:10 0.7922 12:20 1.0001 13:30 0.5649 14:40 0.3819 9:00 0.1591 10:10 0.4545 11:20 0.737 12:30 0.7891 13:40 0.4435 14:50 0.3377 9:10 0.1753 10:20 0.513 11:30 0.762 12:40 0.7371 13:50 0.4578 15:00 0.3019 15:10 0.2695 16:20 0.6234 17:30 0.7013 18:40 0.3442 19:50 0.1623 21:00 0.0974 15:20 0.2695 16:30 0.6201 17:40 0.5844 18:50 0.3922 20:00 0.1299 21:10 0.0292 15:30 0.289 16:40 0.3149 17:50 0.6006 19:00 0.3338 20:10 0.2208 21:20 0.0422 15:40 0.3214 16:50 0.6071 18:00 0.3409 19:10 0.2045 20:20 0.1169 21:30 0.0195 15:50 0.4968 17:00 0.5909 18:10 0.3961 19:20 0.2143 20:30 0.0974 21:40 0.0844 16:00 0.5877 17:10 0.6104 18:20 0.2468 19:30 0.1364 20:40 0.0409 21:50 0.0111 16:10 0.4448 17:20 0.6753 18:30 0.2078 19:40 0.2597 20:50 0.1201 22:00 0.0844 图3为对8:10到15:00所有人群流量进行的二阶、三阶以及四阶多项式拟合.图3 8:10-15:00人群流量多项式拟合-0.200.20.40.60.811.2图4为对15:10-22:00所有人群流量进行的二阶、三阶以及四阶多项式拟合.图4 15:10-22:00人群流量多项式拟合4 BP 神经网络结构设计 本文采用只含有一个隐含层的BP 神经网络实现,由于BP 神经网络的计算结果可能会受到输入层、隐含层以及输出层神经元个数以及输出层传递函数的影响.因此本文主要从隐含层神经元个数、输出层神经元个数和输出层传递函数等三个方面进行网络结构的设计和调整.由于输入向量有6个元素,所以网络输入层的神经元个数设为6,对于隐含层节点数使用经验公式nm m k s +⨯≥来确定,其中m 为输入层节点数,其值取为6,n 为输出层节点数,其值取为6,k 为学习样本个数,其值取为67.根据这一经验公式,代入相关数据,我们计算出的BP 神经网络隐含层所含有的节点数为34个.根据另一经验公式α++=n m s 或nn n m mn s 12.051.035.077.054.243.0+++++=,其中m 为输入层节点数,其值取为6,n 为输出层节点数,其值取为6,α为1—10之间的整数,其值取为9.根据这一经验公式,代入相关数据,我们计算出的BP 神经网络隐含层节点数为13个.根据上面两个经验公式我们可以得到隐含层节点数的一个初始值,然后再利用隐含层节点数不断修剪或者逐步增长的方法确定最终神经元的个数.051015202530354045-0.4-0.20.20.40.60.81逐步增长法就是从一个从较简单的BP神经网络开始进行网络训练,若网络训练的结果不符合要求,则逐步增加隐含层神经元个数直到最后的结果符合要求为止.而逐步修剪法则是从一个较复杂的BP神经网络通过逐渐减少隐含层神经元个数直到达到要求为止.BP神经网络的隐含层神经元传递函数一般采用S型正切函数tansig( ),输出层神经元传递函数一般采用纯线性函数purelin( )或者S型对数函数logsig( ).本文结合实际情况,将实际网络训练参数进行了以下设定:训练次数15000,训练目标0.0015,由于学习速率参数net.trainparam.lr不能选择的太大,如果选择的太大可能会使算法不收敛;同样学习速率参数net.trainparam.lr也不能选择的太小,如果选择的太小可能会使训练时间过长.而且学习速率参数一般选择0.01—0.1之间的值,本文结合具体要求,将学习速率选为0.1.5 利用设计的BP神经网络结构进行人群流量预测本文BP神经网络的输入向量为前一个小时的6个人群流量,目标向量为10分钟后的下一个小时的6个人群流量,即用8:10—9:00的6个人群流量来预测8:20—9:10的6个人群流量......依次迭代下去.因此,此BP神经网络的输入输出向量都是6维向量,将8:10—19:20共67组原始数据作为训练样本代入已经训练好的模型,通过对原始数据进行仿真模拟和对原始数据进行归一化处理,可以得到19:30—22:00人群流量的预测值共10组.图3为输入前9个时间点的人群流量预测出来的人群流量变化趋势图.图5 人群流量变化趋势一般我们认为,隐含层中的神经元数目越多,其收敛速度也就越快,但是随着隐含层中神经元数目的增多也很容易造成网络训练过度的不良后果.同时,由于纯线性函数purelin( )的输出值可能为任意值,因此BP神经网络训练的收敛速度较慢;S型对数函数logsig( )的输出值一般限制在[0,1]范围内,因此BP 神经网络的收敛速度较快.通过仿真模拟后的曲线,我们可以发现,以每十分钟为一个时间间隔的预测结果较为理想,且与BP神经网络的结构和传递函数特征相吻合.6 预测结果分析通过利用所设计的BP神经网络进行人群流量预测分析后,我们发现,该路口的人群流量在一段时间内比较密集,而在一段时间内人群流量较为稀疏.而且我们还发现不同日期内的人群流量总体趋势是处于波动的状态,我们猜想这可能与上下班高峰期以及与节假日等因素有关.其中在人群流量密集的时间段应该引起我们的注意,因为这个时间段内极易导致人群踩踏事件的发生.通过对人群流量的预测分析,我们发现,所建立的BP神经网络模型可以较好的实现预测的目的,其预测结果在一定程度上可以指导有关部门及时采取措施,避免踩踏事故的发生.7 结束语BP神经网络拥有独特的非线性、非凸性、自适应性和处理各种信息的能力,因而BP神经网络在数据的预测中有着广泛的应用.BP神经网络还有对信息并行处理及并行推理的能力,因此可以说BP神经网络从原理上就比传统的数据预测方法要快得多.通过对德州市某路口人群流量的预测分析可知,本文选用的BP 神经网络能够很好的进行人群流量预测.但是由于不同时间、不同地点的人群流量波动性较大,因此应该选取合适的时间间隔、及时的进行数据修复、筛选出合理的训练样本,而且还需要结合实际数据进行更加深入的调查研究,才能达到正确进行网络训练,进而达到准确预测的目的.参考文献:[1]张德丰,等.Matlab神经网络应用设计[M].北京:机械工业出版社,2009[2]魏海坤.神经网络结构设计的理论与方法[M].北京.国防工业出版社.2005[3]韩力群.人工神经网络教程[M].北京:北京邮电大学出版社,2006[4]卓金武,魏永生,秦健,李必文.MATLAB在数学建模中的应用[M].北京:北京航空航天大学出版社,2011.4[5]高宁,邵陆涛.基于Matlab的BP神经网路在农作物虫情测预报中的应用[J].计算机与农业,2003,(7)[6]姜启源.数学建模[M].3版.北京:高等教育出版社,2007[7]朱道元,等.数学建模案例精选[M].北京:科学出版社,2003[8]徐全智,杨晋浩.数学建模[M].北京:高等教育出版社,2003[9]张香云,金永仁.RMI原则在高等数学中的应用[J].雁北师范学院学报,2003, 19(5):76-79.[10]Minns,A.w.and Hall,M.J.Artificial Neural Networks as Rain fall-Run off Models[J],Hydnolosical Sciences Journal,1996,41,(3)附录程序1 % 8:10-15:00人群流量多项式拟合x=1:42;y=[0.0357 0.0649 0.1623 0.1591 0.1916 0.1591 0.1753 0.1753 0.1429...0.1753 0.3734 0.3831 0.4545 0.513 0.5877 0.6494 0.6429 0.737 0.7922...0.737 0.762 0.7922 0.8701 0.7013 0.8052 1.0001 0.7891 0.7371 0.5649...0.4773 0.7403 0.5844 0.5649 0.4435 0.4578 0.5617 0.4741 0.4545...0.4675 0.3819 0.3377 0.3019];plot(x,y,'r*')程序2 % 15:10-22:00人群流量多项式拟合x=1:42;y=[0.2695 0.2695 0.2891 0.3214 0.4968 0.5877 0.4448 0.623 0.6201...0.3149 0.6071 0.5909 0.6104 0.6753 0.7013 0.5844 0.6006 0.3409...0.3961 0.2468 0.2078 0.3442 0.3922 0.3338 0.2045 0.2143 0.1364...0.2597 0.1623 0.1299 0.2208 0.1169 0.0974 0.0409 0.1201 0.0974...0.0292 0.0422 0.0195 0.0844 0.0111 0.0844];plot(x,y,'r*')程序3 % 人群流量变化趋势clearsyms a b;c=[a b]';A=[0.0357 0.0649 0.1623 0.1591 0.1916 0.1591 0.1753 0.1753 0.1429]; B=cumsum(A); % 原始数据累加n=length(A);for i=1:(n-1)C(i)=(B(i)+B(i+1))/2; % 生成累加矩阵end% 计算待定参数的值D=A;D(1)=[];D=D';E=[-C;ones(1,n-1)];c=inv(E*E')*E*D;c=c';a=c(1);b=c(2);% 预测后续数据F=[];F(1)=A(1);for i=2:(n+9)F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a ;endG=[];G(1)=A(1);for i=2:(n+9)G(i)=F(i)-F(i-1); %得到预测出来的数据endt1=[6:14];t2=[6:23];G,a,b % 输出预测值xlabel(‘时间点’)ylabel(‘人群流量’)plot(t1,A,‘O’,t2,G) %原始数据与预测数据的比较程序4clearclc;close all;p=[];q=[];k=[];%数据文件data1.txt有两列,第一列是时间点,第二列是人群流量A=load data1.txt;n=size(A);A=A';B=[];for i=0:10000:60000 %此重循环的目的是锁定时间点8:10到9:00 for j=1:n %此重循环是逐个寻找if A(1,j)==20000101+iB=[B;A(2,j:j+84)];endendendfor i=1:84[y,p]=gm_1_1([B(1:6,i)'],2);q=[q,p(1,1)];k=[k,p(1,2)]enderrorss=abs((B(7,:)-q)./B(7,:))*100t=1:84;figure(1);h1=plot(t,errorss);set(h1,‘color’,[1 0 0],‘linestyle’,‘-’,...‘linewidth’,2.5,‘marker’,‘p’,‘markersize’,4); xlabelylabeltext(30,5.5,‘’);axis tight;grid on;titlefigure(2);h2=plot(t,k);set(h2,,[0 0 1],‘color’,‘linestyle’,‘-.’,...‘linewidth’ ,‘marker’,2.5,,‘-’,‘markersize’,4);。
BP神经网络在MATLAB上的实现与应用
收稿日期:2004-02-12作者简介:桂现才(1964)),海南临高人,湛江师范学院数学与计算科学学院讲师,从事数据分析与统计,数据挖掘研究.2004年6月第25卷第3期湛江师范学院学报JO URN AL OF Z HA NJI ANG NOR M AL CO LL EG E Jun 1,2004Vol 125 N o 13BP 神经网络在M ATLAB 上的实现与应用桂现才(湛江师范学院数学与计算科学学院,广东湛江524048)摘 要:BP 神经网络在非线性建模,函数逼近和模式识别中有广泛地应用,该文介绍了B P 神经网络的基本原理,利用MA TL AB 神经网络工具箱可以很方便地进行B P 神经网络的建立、训练和仿真,给出了建立BP 神经网络的注意事项和例子.关键词:人工神经网络;BP 网络;NN box MA TL AB中图分类号:TP311.52 文献标识码:A 文章编号:1006-4702(2004)03-0079-051 BP 神经网络简介人工神经网络(Artificial Neural Netw orks,简称为N N)是近年来发展起来的模拟人脑生物过程的人工智能技术.它由大量简单的神经元广泛互连形成的复杂的非线性系统,它不需要任何先验公式,就能从已有数据中自动地归纳规则,获得这些数据的内在规律,具有很强的非线性映射能力,特别适合于因果关系复杂的非确性推理、判断、识别和分类等问题.基于误差反向传播(Back propagation)算法的多层前馈网络(Multiple -layer feedf or ward net 2work,简记为BP 网络),是目前应用最多也是最成功的网络之一,构造一个BP 网络需要确定其处理单元)))神经元的特性和网络的拓扑结构.1.1神经元模型神经元是神经网络最基本的组成部分,一般地,一个有R 个输入的神经元模型如图1所示.其中P 为输入向量,w 为权向量,b 为阈值,f 为传递函数,a 为神经元输出.所有输入P 通过一个权重w 进行加权求和后加上阈值b 再经传递函数f 的作用后即为该神经元的输出a.传递函数可以是任何可微的函数,常用的有Sigmoid 型和线性型.1.2 神经网络的拓扑结构神经网络的拓扑结构是指神经元之间的互连结构.图2是一个三层的B P 网络结构.B P 网络由输入层、输出层以及一个或多个隐层节点互连而成的一种多层网,这种结构使多层前馈网络可在输入和输出间建立合适的线性或非线性关系,又不致使网络输出限制在-1和1之间.2 M A TLAB 中B P 神经网络的实现BP 网络的训练所采用的算法是反向传播法,可以以任意精度逼近任意的连续函数,近年来,为了解决BP 网络收敛速度慢,训练时间长等不足,提出了许多改进算法[1][2].在应用BP 网络解决实际问题的过程中,选择多少层网络、每层多少个神经元节点、选择何种传递函数、何种训练算法等,均无可行的理论指导,只能通过大量的实验计算获得.这无形增加了研究工作量和编程计算工作量.M AT L AB 软件提供了一个现成的神经网络工具箱(Neural Netw ork T oolbox,简称N Nbox),为解决这个矛盾提供了便利条件.下面针对BP 网络的建立、传递函数的选择、网络的训练等,在介绍NN box 相关函数的基础上,给出利用这些函数编程的方法.2.1 神经网络的建立M AT LAB 的N Nbox 提供了建立神经网络的专用函数ne wff().用ne wf f 函数来确定网络层数、每层中的神经元数和传递函数,其语法为:net =ne wf f(PR,[S1,S2,,,S N],{TF1,TF2,,,T FN},B TF,BL F,PF)其中PR 是一个由每个输入向量的最大最小值构成的Rx2矩阵.Si 是第i 层网络的神经元个数.TFi 是第i 层网络的传递函数,缺省为tansig,可选用的传递函数有tansig,logsig 或purelin.BT F )字符串变量,为网络的训练函数名,可在如下函数中选择:traingd 、traingdm 、traingdx 、trainbfg 、trainlm 等,缺省为trainlm.BL F )字符串变量,为网络的学习函数名,缺省为learngdm.BF )字符串变量,为网络的性能函数,缺省为均方差c mse cnew ff 在确定网络结构后会自动调用init 函数用缺省参数来初始化网络中各个权重和阈值,产生一个可训练的前馈网络,即该函数的返回值为net.由于非线性传递函数对输出具有压缩作用,故输出层通常采用线性传递函数,以保持输出范围.2.2 神经网络训练初始化后的网络即可用于训练,即将网络的输入和输出反复作用于网络,不断调整其权重和阈值,以使网络性能函数net.performFcn 达到最小,从而实现输入输出间的非线性映射.对于new ff 函数产生的网络,其缺省的性能函数是网络输出和实际输出间的均方差M SE.在N Nbox 中,给出了十多种网络学习、训练函数,其采用的算法可分为基本的梯度下降算法和快速算法,各种算法的推导参见文献[1][2].在M A T LAB 中训练网络有两类模式:逐变模式(incremental mode)和批变模式(batch mode).在逐变模式中,每一个输入被作用于网络后,权重和阈值被更新一次.在批变模式中,所有的输入被应用于网络后,权重和阈值才被更新一次.使用批变模式不需要为每一层的权重和阈值设定训80湛江师范学院学报(自然科学) 第25卷练函数,而只需为整个网络指定一个训练函数,使用起来相对方便,而且许多改进的快速训练算法只能采用批变模式,在这里我们只讨论批变模式,以批变模式来训练网络的函数是train ,其语法主要格式为:[net,tr]=train(N ET,p,t),其中p 和t 分别为输入输出矩阵,NET 为由ne wff 产生的要训练的网络,net 为修正后的网络,tr 为训练的记录(训练步数epoch 和性能perf).train 根据在new ff 函数中确定的训练函数来训练,不同的训练函数对应不同的训练算法.Traingd 基本梯度下降算法.收敛速度慢,可用于增量模式训练.Traingdm 带有趋势动量的梯度下降算法.收敛速度快于Traingd,可用于增量模式训练.Traingdx 自适应学习速度算法.收敛速度快于Traingd,仅用于批量模式训练.Trainnp 强适应性BP 算法.用于批量模式训练,收敛速度快,数据占用存储空间小.Traincgf Fletcher-reeves 变梯度算法.是一种数据占用存储空间最小的变梯度算法.Traincgp Polak -Ribiere 变梯度算法.存储空间略大于Traincgp,但对有些问题具有较快的收敛速度.Traincgb Powell-beale 变梯度算法.存储空间略大于Traincgp,具有较快的收敛速度.Trainsc g 固定变比的变梯度算法.是一种无需线性搜索的变梯度算法.Trainbf g BFGS 拟牛顿算法.数据存储量近似于Hessian 矩阵,每个训练周期计算虽大,但收敛速度较快.Trainoss 变梯度法与拟牛顿法的折中算法.Trainlm Levenberg -Marquardt 算法.对中度规模的网络具有较快的收敛速度.Trainbr 改进型L )M 算法.可大大降低确定优化网络结构的难度.训练时直接调用上述的函数名,调用前为下列变量赋初始值:net.trainParam.show )))每多少轮显示一次;net.trainPara m.L r )))学习速度;net.trainParam.epochs )))最大训练轮回数;net.trainPara m.goal )))目标函数误差.2.3 仿真函数及实例利用仿真函数可对训练好的网络进行求值运算及应用.函数调用形式为:a=sim(net,p);其中net 为训练好的网络对象,p 为输入向量或矩阵,a 为网络输出.如果P 为向量,则为单点仿真;P 为矩阵,则为多点仿真.作为应用示例利用上述的函数,可解决下述非线性单输入单输出系统的模型化问题.已知系统输入为:x(k)=sin(k*P /50)系统输出为:y(k)=0.7sin(P x)+0.3sin(3P x)假定采样点k I [0,50].采用含有一个隐层的三层BP 网络建模,为了便于比较建立了两个模型.模型一的神经元为{1,7,1},模型二为{3,7,1},输入层和隐层传递函数均为TA NSIG 函数,输出层为线性函数.网络训练分别采用基本梯度下降法和变学习速度的梯度下降法.可编制如下的应用程序:k=0:50;x(k)=sin(k*pi/50);y(k)=0.7*sin(pi*x)+0.3*sin(3*pi*x);net=new ff([0,1],[1,7,1],{-tansig .,.tansig .,.purelin .},.traingd .);%建立模型一,并采用基本梯度下降法训练.net.trainParam.show=100;%100轮回显示一次结果81第3期 桂现才:BP 神经网络在M A TL AB 上的实现与应用82湛江师范学院学报(自然科学)第25卷net.trainParam.L r=0.05;%学习速度为0.05net.trainParam.epochs=50000;%最大训练轮回为50000次net.trainParam.goal=1e-4;%均方误差为0.0001net=train(net,x,y);%开始训练,其中x,y分别为输入输出样本y1=sim(net,x);%用训练好的模型进行仿真plot(x,y,x,y1);%绘制结果曲线若采用模型二,仅需将程序第4句ne wf f函数中的第二个参数改为[3,7,1].若采用变学习速度算法,仅需将该函数第4个参数改为.traingda.,加入:net.trainparam.lr-inc=1.05%;训练速度增加系数.一句即可.模型一用基本梯度下降法,训练次数要5万次以上,用变学习速度的梯度下降法,训练次数为4214次.模型二用基本梯度下降法,训练次数要5万次以上,用变学习速度的梯度下降法,训练次数6511次.(M A TL AB6.0)以上结果反映出BP网络经有效训练后可很好地逼近非线性函数.但其训练次数过多,训练时间长.3建立BP神经网络的注意事项利用M A TL AB软件提供的工具箱编制采用BP网络解决非线性问题程序是一种便捷、有效、省事的途径,但在使用时要解决好以下几个关键环节.3.1神经元结点数网络的输入与输出结点数是由实际问题的本质决定的,与网络性能无关.网络训练前的一个关键步骤是确定隐层结点数L,隐层结点数的选择与其说具有科学性,不如说更具有技巧性,往往与输入数据中隐含的特征因素有关.L的选择至今仍得不到一个统一的规范.L的初始值可先由以下两个公式中的其中之一来确定[3][4].l=m+n(1)或l=0143mn+0112n2+2154m+0177n+0135+0151(2)其中m、n分别为输入结点数目与输出结点数目.隐层结点数可根据公式(1)或(2)得出一个初始值,然后利用逐步增长或逐步修剪法.所谓逐步增长是先从一个较简单的网络开始,若不符合要求则逐步增加隐层单元数到合适为止;逐步修剪则从一个较复杂的网络开始逐步删除隐层单元,具体实现已有不少文献讨论.3.2传递函数的选择工具箱提供了三种传递函数:L og-sigmoid、tan-sigmoid和线性函数.前两种为非线性函数,分别将x I(-],+])的输入压缩为y I[0,1]和y I[-1,+1]的输出.因此,对非线性问题,输入层和隐层多采用非线性传递函数,输出层采用线性函数,以保持输出的范围,就非线性传递函数而言,若样本输出均大于零时,多采用L og-sigmoid函数,否则,采用Tan-sigmoid函数.对线性系统而言,各层多采用线性函数.3.3数据预处理和后期处理如果对神经网络的输入和输出数据进行一定的预处理,可以加快网络的训练速度,M A TL AB 中提供的预处理方法有(1)归一化处理:将每组数据都变为-1至1之间数,所涉及的函数有pre mnmx、postmnmx、tramnmx;(2)标准化处理:将每组数据都化为均值为0,方差为1的一组数据,所涉及的函数有prestd、poststd、trastd;(3)主成分分析:进行正交处理,可减少输入数据的维数,所涉及的函数有prepca、trapca.(4)回归分析与相关性分析:所用函数为postrg,可得到回归系数与相关系数,也可用[5]介绍的方法进行置信区间分析.下面以归一化处理为例说明其用法,另外两种预处理方法的用法与此类似.对于输入矩阵p 和输出矩阵t 进行归一化处理的语句为:[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);训练时应该用归一化之后的数据,即:net =train(net,pn,tn);训练结束后还应对网络的输出an =sim(net ,pn)作如下处理:a =postmnmx(an,mint,maxt);当用训练好的网络对新数据pne w 进行预测时,也应作相应的处理:pnew n =tramnmx(pne w,minp,maxp);ane wn =sim(net,pne wn);ane w =postmnmx(anew,mint,ma xt);3.4 学习速度的选定学习速度参数net.trainparam.lr 不能选择的太大,否则会出现算法不收敛.也不能太小,会使训练过程时间太长.一般选择为0.01~0.1之间的值,再根据训练过程中梯度变化和均方误差变化值来确定.3.5 对过拟合的处理网络训练有时会产生/过拟合0,所谓/过拟合0就是训练集的误差被训练的非常小,而当把训练好的网络用于新的数据时却产生很大的误差的现象,也就是说此时网络适应新情况的泛化能力很差.提高网络泛化能力的方法是选择合适大小的网络结构,选择合适的网络结构是困难的,因为对于某一问题,事先很难判断多大的网络是合适的.为了提高泛化能力,可用修改性能函数和提前结束训练两类方法来实现,详见[6].参考文献:[1] 张乃尧、阎平凡.神经网络与模糊控制[M].北京:清华大学出版社,1998.[2] 刘增良、刘有才.模糊逻辑与神经网络)))理论研究与探索[M].北京:北京航空航天大学出版社,1996.[3] 徐庐生.微机神经网络[M].北京:中国医药科技出版社,1995.[4] 高大启.有教师的线性基本函数前向三层神经网络结构研究[J].计算机学报,1998,21(1):80-85[5] 陈小前,罗世彬,王振国,等1B P 神经网络应用中的前后处理过程研究[J].系统工程理论与实践,2002,22(1):65-70.[6] 闵惜琳、刘国华.用MA TLAB 神经网络工具箱开发B P 网络应用[J].计算机应用,2001,21(8):163-164.[7] 飞思科技产品研发中心.MA TLAB 6.5辅助神经网络分析与设计[M].北京:电子工业出版社,2003.Realization of BP Networks and Their Applications on MATLABG UI Xian-cai(Mathe matics and C omputational Science School,Zhanji ang Normal C ollege,Zhanjiang,Guangdong 524048,Chi na)Abstract:B P Neural Netw orks are widely applied in nonlinear modeling,f unction approach,and pat 2tern rec ognition.This paper introduces the fundmental of BP Neural Networks.Nnbox can be easily used to create,train and simulate a netw ork,w hile some e xamples and explanations are given.Key words:Artificial Neural Netw orks;B P Networks;Nnbox;M A TL AB 83第3期 桂现才:BP 神经网络在M A TL AB 上的实现与应用。
BP算法的改进在Matlab中的实现研究
BP算法的改进在Matlab中的实现研究[摘要]bp算法的改进是神经网络当前研究的热点之一。
本文应用matlab对bp网络进行研究分析,针对bp算法的缺点引入了bp 改进算法,并利用matlab软件对bp算法和改进bp算法进行仿真。
通过比较各种改进bp算法的仿真结果数据与图表,得到了较优的改进bp算法——lmbp算法,又针对lmbp算法的缺点提出了进一步改进的两个方案,得到了比较好的效果。
证明了改进bp算法比bp 算法功能强大,适用面广,泛化能力优良,计算时间短,并克服了易陷入局部极小的问题。
[关键词]神经网络 bp算法改进bp算法 matlab中图分类号:o1 文献标识码:a 文章编号:1009-914x(2013)08-197-021 概述近几十年来,一门新兴的交叉学科——人工神经网络(artificial neural networks,简称为ann)迅速的发展起来。
人工神经网络是近年来发展起来的模拟人脑生物过程的人工智能技术。
人工神经网络的研究已有较长的历史,最早的研究是心理学家w.mcculloch和数理逻辑学家w.pitts于1943年提出的简单的神经网络模型。
目前提出的神经网络已有几十种,其中应用最为广泛且富有成果的有bp网络、hopfield网络、自适应共振理论(art)网络、自组织特征映射网络和小脑模型关节控制器(cmac—cerebekkar modelarticulation controller)等[1]。
2. bp网络的仿真设置系统的数学模型是幅值为4,7,间隔为200的方波信号,隐含层神经元个数为10,神经网络模型结构为8-10-6,学习率的初始值为1.5,利用matlab软件编制出仿真程序,,图2-1为仿真结果图。
其中横坐标为训练步数,纵坐标为系统误差[2]。
3 改进的bp算法在matlab中的实现3.1 bp算法的改进bp算法最优化的方向主要有权值调整、自适应学习速率调整、网络结构调整等[3]。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Mirc mp tr pi t n o. 2 N . ,0 6 co o ue l ai sV i2 , o 8 2 0 Ap c o
的 工 具 箱 。 在 神 经 网 络 工 具 箱 中 , 提供 了许 多 有 关 神 经 网 如 它 络 设 计 、 练 和仿 真 的 函数 。 户 只要 根据 自己 的需 要 调 用 相 训 用
图 1 三层 B P网 络 结 构 图
隐 层 输 入 层
输 出层
B 网 络 由正 向 传 播 和 反 向 传 播 组 成 , 正 向 传 播 阶 段 , P 在
和 仿 真 的 函数 和 方 便 、 友好 的 图形 用 户 界 面来 实现 B 网络 , 可 实 时 将 仿 真 结 果 可视 化 , 而 使 应 用B 网络 来 解 决许 多领 域 的 P 还 从 P
实际问题 变得非常方便和有效 。
关 ■ 词 :P 神 经 网 络 I B MATL ABI 真 仿 中 圈 分 类 号 : P13 T 8 文献标识码 : A
每一层神 经元 的状 态只影 响下一层神 经元 的状态 , 若在 输 出 层得不到期望的输 出值 , 则进行 误差的反 向传播 阶段 。 其具体
的学习过程和步骤如 下:
关 的程 序 , 而 免除 了编 写复杂 而庞 大 的算 法程 序 的困扰 。 从
20 0 4年 , MATL AB 的最 新 版本 产 品 MATL 7发 布 。 AB MAT — L 7在 编 程 和 代 码 效 率 、 图 和 可 视 化 、 学 运 算 、 据 读 AB 绘 数 数 写 等 方 面 都 有 了很 大 的 改 进 。
引言
人 工 神 经 网络 ( ric l ua Newok A A t ia Nerl t r , NN) f i 的理 论
1 B P神 经 网络 的结构 与 学 习原 理
B 网络 是 前 向 网 络 的 核 心 部 分 , 现 了神 经 网 络 中最 精 P 体 华 、 完 美 的 内容 。 是 一 种 单 向 传播 的 具 有 三 层 或 三 层 以上 最 它 的 前 向 神 经 网络 , 括 输 入 层 、 层 和 输拙 层 , 下 层 之 间 实 包 隐 上
用计算机 辅助来进 行神经 网络的设计 与分析 是必 然的选择 。 目前 , 场 上 已 经 有 了一 些 比较 成 熟 的 神 经 网 络软 件 包 , 市 MAT A 就 是 其 中 一 个 非 常 优 秀 的代 表 。 L B MAT A 是 Mah ok L B t w rs公 司 开 发 的一 种 高 性 能 的 数 值
技 术 交 流
微 型 电脑 应 用
20 0 6年 第 2 2卷 第 8 期
基 于 MA L B 的 B T A P神 经 网络 实现 研 究
徐 远 芳 , 周 肠 , 郑 华
摘 要 :P神经网络是人工神经 网络 中的一 个典型代表 。 B MAT AB的神经 网络 工具 箱提供 了许 多有关神经 网络设计、 练 L 训
维普资讯
M i oo ue p l ain o. 2 N . ,0 6 c cmp trA pi t sV 12 , o 82 0 r c o
文 章组 号 :O 7 7 7 2 0 )8 O 4 一 O 1 O — 5 X( 0 60 - O 1 4
中l
() 别计算经神经元处理后 的各层结点的输 出I 3分
() 4 计算 网络 的实 际输 出与期望输 出的误 差 , 如果误 差达 作者筲介: 呖 长沙理工大学计算机与通信工程学院, 周 徐远羞, 长沙 407 106
郑 长沙理工大学计 算机与通 信工程学 院。 长沙 4 0 7 10 6 华, 广西财经学院计 算机与信息管理系, 南宁 50 0 30 3
于2 O世纪提 出 , 由于 自身固有 的超强适 应和学 习能力 , 今 至 已在 自动控{ 、 障诊 断与检测 、 }故 I 模式 识别和分类等很 多领域 获得 了极其广泛的应用 。 而据统计 , 在人工 神经网络的实际应
用 中 ,O O 均 采 用 了B 8 一9 P神 经 网络 或 它 的变 化 形 式 。 P网 B 络 是 一 种 多 层 前 馈 神 经 网 络 , 采 用 B b c -po a ain 因 P(ak rpg t , o 反 向 传 播 ) 法 而 得 名 。人 工 神 经 网络 的 建 立 需 要 不 断 尝 试 , 算
计算 和可视化软件 , 大的功能使 得它在 学术界 和工业 界都 强 得到 了广泛的应用 。 MAT A L B编程语 言被称为第四代计算机 语言 , 相对于其 它高级程 序设计语 言而 言 , 有可读 性强 , 具 调 试简单等 特点 , 过提供 丰富 的函数库省 去了大量 的重 复编 通 程。 MATL AB产 品支持从 概念设 计、 算法开发 、 建模仿真到实 时实现 的理想 的集 成环境 , 尤其是 它提供 了各种专 业性较 强
() 1选择一组训练样本 , 每个样 例 由输入信息 和期 望的输
出结果两部分组成 I
本 文以 MATL 7作为 开发环境 , AB 论述利用 其神经 网络
工 具箱 开 发 B 网络 的方 法 及 设 计 步 骤 , 给 出 了一 个 应 用 实 P 并
例。
( ) 训练样 本 中取一 样 本 , 输 入 的信息 输入 到 网络 2从 把
现全连接 , 每层 神经元之间无连接 。一个三层 的B 而 P网络理 论上可逼近任意 的非线性 映射 , 因此在实 际应用 中, 一般采用
三 层 的B P网 络 就 可 以满 足 需 要 。如 图 I所 示 的 就 是 一 个 三 层 的 B 网络 结 构 图 。 P
一 一 一
其学习算法通常较复杂 , 以通过手 工编程来实现 。因此 , 难 采