BP神经网络函数逼近
BP神经网络逼近非线性函数

3、 试用BP 神经网络逼近非线性函数f(u) =)5.0u (9.1e+-sin(10u) 其中,u ∈[-0.5,0.5](1)解题步骤:①网络建立:使用“net=newff(minmax(x), [20, 1], {'tansig ’,’ purelin' });,语句建立个前馈BP 神经网络。
该BP 神经网络只含个隐含层,且神经元的个数为20。
隐含层和输出层神经元的传递函数分别为tansig 和pure-lin 。
其他参数默认。
②网络训练:使用“net=train (net, x , y) ;”语句训练建立好的BP 神经网络。
当然在网络训练之前必须设置好训练参数。
如设定训练时间为50个单位时间,训练目标的误差小于0.01,用“net.trainParam.epochs=50; net.train-Param.goal=0.01;”,语句实现。
其他参数默认。
③网络仿真:使用“y1=sim(net, x); y2=sim(net, x};”语句仿真训练前后的BP 神经网络。
(2)程序如下:clear all ;x=[-0.5:0.01:0.5];y=exp(-1.9*(0.5+x)).*sin(10*x);net=newff(minmax(x),[20,1],{'tansig' 'purelin'});y1=sim(net,x); %未训练网络的仿真结果 net.trainParam.epochs=50;net.trainParam.goal=0.01;net=train(net,x,y);y2=sim(net,x); %训练后网络的仿真结果 figure;plot(x,y,'-',x,y1,'-',x,y2,'--')title('原函数与网络训练前后的仿真结果比较');xlabel('x');ylabel('y');legend('y','y1','y2');grid on(3)仿真结果如图:图1图1为原函数y与网络训练前后(y1,y2)的仿真结果比较图。
(采用BP神经网络完成非线性函数的逼近)神经网络

控制系统仿真与模型处理设计报告(采用BP神经网络完成非线性函数的逼近)1、题目要求:(1)确定一种神经网络、网络结构参数和学习算法。
(2)选择适当的训练样本和检验样本,给出选取方法。
(3)训练网络使学习目标误差函数达到0.01,写出学习结束后的网络各参数,并绘制学习之前、第100次学习和学习结束后各期望输出曲线、实际输出曲线。
绘制网络训练过程的目标误差函数曲线。
(4)验证网络的泛化能力,给出网络的泛化误差。
绘制网络检验样本的期望输出曲线和网络输出曲线。
(5)分别改变神经网络的中间节点个数、改变网络的层数、改变学习算法进行比较实验,讨论系统的逼近情况,给出你自己的结论和看法。
2、设计方案:在MATLAB中建立M文件下输入如下命令:x=[0:0.01:1];y=2.2*power(x-0.25,2)+sin(5*pi*x);plot(x,y)xlabel('x');ylabel('y');title('非线性函数');得到如下图形,即所给的非线性函数曲线图:构造一个1-7-1的BP神经网络,第一层为输入层,节点个数为1;第二层为隐层,节点个数为7;变换函数选正切s型函数(tansig);第三层为输出层,节点个数为1,输出层神经元传递函数为purelin函数。
并且选Levenberg-Marquardt算法(trainlm)为BP网络的学习算法。
对于该初始网络,我们选用sim()函数观察网络输出。
继续在M函数中如下输入。
net=newff(minmax(x),[1,7,1],{'tansig','tansig','purelin'},'trainlm'); y1=sim(net,x);figure;plot(x,y,'b',x,y1,'r')title('期望输出与实际输出比较');xlabel('t');则得到以下所示训练的BP网络期望输出与实际输出曲线比较:应用函数train()对网络进行训练之前,需要预先设置训练参数。
神经网络在函数逼近中的应用

二 基于BP神经网络逼近函数 基于BP神经网络逼近函数
步骤1:假设频率参数k=1,绘制要逼近的非线性 步骤1:假设频率参数k=1,绘制要逼近的非线性 函数的曲线。函数的曲线如图1 函数的曲线。函数的曲线如图1所示 k=1; p=[p=[-1:.05:8]; t=1+sin(k*pi/4*p); plot( plot(p,t,'-'); '); title('要逼近的非线性函数'); title('要逼近的非线性函数'); xlabel('时间'); xlabel('时间'); ylabel('非线性函数'); ylabel('非线性函数');
图3 训练过程 从以上结果可以看出,网络训练速度很快,很 快就达到了要求的精度0.001。 快就达到了要求的精度0.001。
步骤4 步骤4: 网络测试 对于训练好的网络进行仿真: y2=sim(net,p); figure; plot(p,t,'plot(p,t,'-',p,y1,':',p,y2, '--') '--') title('训练后网络的输出结果'); title('训练后网络的输出结果'); xlabel('时间'); xlabel('时间'); ylabel('仿真输出'); ylabel('仿真输出'); 绘制网络输出曲线,并与原始非线性函数曲线以 及未训练网络的输出结果曲线相比较,比较出来 的结果如图4 的结果如图4所示。
BP网络在函数逼近中的应用 BP网络在函数逼近中的应用
bp使用方法

bp使用方法BP(反向传播算法)是一种用于训练神经网络的算法。
它通过反向传播误差来调整神经网络中的权重和偏差,以使其能够更好地逼近目标函数。
BP算法是一种有监督学习算法,它需要有标记的训练集作为输入,并且可以通过梯度下降法来最小化目标函数的误差。
BP算法的基本思想是在神经网络中,从输入层到输出层的正向传播过程中,通过计算网络的输出值与目标值之间的差异(即误差),然后将这个误差反向传播到网络的每一层,在每一层中调整权重和偏差,以最小化误差。
这个反向传播的过程将误差逐层传递,使得网络的每一层都能对误差进行一定程度的“贡献”,并根据这个贡献来调整自己的权重和偏差。
具体来说,BP算法可以分为以下几个步骤:1. 初始化网络:首先需要确定神经网络的结构,包括输入层、隐藏层和输出层的神经元个数,以及每层之间的连接权重和偏差。
这些权重和偏差可以初始化为随机值。
2. 前向传播:将输入样本送入网络,按照从输入层到输出层的顺序,逐层计算每个神经元的输出值。
具体计算的方法是将输入值和各个连接的权重相乘,然后将结果求和,并通过一个非线性激活函数(如Sigmoid函数)进行映射得到最终的输出值。
3. 计算误差:将网络的输出值与目标值进行比较,计算误差。
常用的误差函数有均方误差函数(Mean Squared Error,MSE)和交叉熵函数(Cross Entropy),可以根据具体问题选择合适的误差函数。
4. 反向传播:从输出层开始,根据误差对权重和偏差进行调整。
首先计算输出层神经元的误差,然后根据误差和激活函数的导数计算输出层的敏感度(即对权重的影响),并根据敏感度和学习率更新输出层的权重和偏差。
5. 更新隐藏层权重:同样地,根据输出层的敏感度,计算隐藏层的敏感度,并更新隐藏层的权重和偏差。
隐藏层的敏感度可以通过将输出层的敏感度按权重加权求和得到。
6. 重复步骤4和5:重复执行步骤4和5,将误差逐层传播,更新每一层的权重和偏差,直到达到训练的停止条件(如达到最大迭代次数或误差降至某个阈值)。
BP网络逼近函数方法

BP网络逼近函数方法B P 网络逼近函数方法题目:使用 BP 网络迫近对象 y(k)=u(k) 3 +y(k-1)/(1+2y(k-1) 2),采样时间取 2ms,输入信号为 u(k)=(2π t)。
解答:本题采纳 matlab 编写程序,其编程思路是:(1)将时间轴范围定为从 0 秒到 1 秒,每隔 2ms 采样一次,即增添时间间隔为,计算 y 值,依据点值画出要迫近函数的图像;(2)用 newff ()函数建立二层 BP 神经网络,隐层神经元数量设为 10,输出层有一个神经元,选择隐层和输出层神经元传达函数分别为 tansig()和 purelin(),网络训练用 trainlm ,建立开初始网络后,用 sim()函数观察网络输出,同时绘制输出曲线,并与原函数比较;(3)设置训练参数,将学习速率定为,最大迭代次数定为 100,训练精度设为用 train ()函数对网络进行训练,训练后绘制曲线,并与原函数比较。
详尽程序以下:p=0::1;y(1)=*sin(2*pi*0))^3;for i=2:501y(i)=*sin(2*pi*(i-1)*)^3+y(i-1)/(1+2*(y(i-1))^2);endplot(p,y,'o');title('要迫近的函数 ');xlabel('时间 ');ylabel('迫近函数 ');net=newff(minmax(p),[10,1],{'tansig','purelin'},'trainlm');% 建立 BP 网络结构y1=sim(net,p);figureplot(p,y,'bo',p,y1,'r-');title('未训练网络的输出结果 ')xlabel('时间 ');ylabel('仿真输出 - 原函数 o');[net,tr]=train(net,p,y);y2=sim(net,p);plot(p,y,'bo',p,y2,'r-');title('训练后网络的输出结果 ')xlabel('时间 ');ylabel('仿真输出 - 原函数 o');程序出图以下:所要迫近的函数图像:未训练的初始网络输出结果(红线)和原函数图像(蓝线):训练后的网络输出结果(红线)和原函数图像(蓝线):从最后一图中可看出网络输出结果与原函数图形一致,迫近成效很好。
BP网络逼近sin函数

alpha = 0.4;%学习速率
error = 0.0001;%误差阈值
M = 200;
%%训练数据200
for m = 1:M
y = sin(0.01*pi*m);%实际样本输出
for k = 1:50
%%对每个数据训练50次
for i = 1:hideLayer %隐层
hold on
plot (x,y1,'r-');
legend('标准sin图像','BP逼近的sin图像')
figure;
plot(e1);
title('错误率')
p(i) = logsig(w1(i) * x(m) + b1(i));
end
a = 0; %输出层
for j = 1:hideLayer
q(j) = p(j) * w2(j);
a = a + q(j);
end
a = a + b2;
if m <= 100
A = logsig(a);
elseif m > 100
bp网络函数逼近神经网络函数逼近函数逼近函数逼近论matlab函数逼近函数逼近理论函数逼近论方法样条函数逼近样条函数及其逼近复变函数逼近
%%网络结构1-2-1,学习率alpha=0.4
clear all;
close all;
clc;
input = 1; %输入层像两个数
hideLayer = 2;%隐藏层神经元个数
outputLayer = 1;%输出层神经元个数
x = [0.01*pi:0.01*pi:2*pi];%输入向量(1*200)
BP神经网络函数逼近论文

本科毕业论文(设计)题目指数型(对数型)函数的改进BP神经网络逼近学院数学与统计学院专业数学与应用数学年级2008级学号22200831 4011姓名陈曦指导教师王建军成绩2012年4月16日目录第一章引言 (1)1.背景介绍 (1)2. BP神经网络介绍 (1)2.1 BP网络模型 (1)2.2 BP网络的主要能力: (2)2.3 BP学习算法 (3)2.3.1信号的正向传播 (3)2.3.2BP学习算法的误差反向传播与权值阈值更新增量 (3)2.3.3网络权值阈值跟新公式 (4)2.4 BP网络的局限 (5)2.4.1 局部极小点 (5)2.4.2 学习/收敛速度慢 (6)2.5 标准BP算法的改进 (6)2.5.1 增加动量项的BP学习算法 (6)2.5.2 可变学习率的BP算法 (7)2.5.3 弹性BP学习算法 (7)2.5.4 LM算法 (8)第二章指数(对数)函数的神经网络逼近 (9)3 . 指数(对数)函数逼近区间的确定 (9)4. BP网络设计基础 (9)4.1 输入输出量的选择 (9)4.2 隐含层节点数设计 (9)4.3 改进的BP算法 (10)5. BP神经网络逼近对指数(对数)函数 (10)5.1 传统BP神经网络逼近一元指数和对数函数 (10)5.2 利用改进的BP神经网络逼近指数函数和对数函数 (13)5.2.1 利用改进的BP神经网络逼近一元和二元指数函数 (13)5.2.2 利用改进的BP神经网络逼近一元和二元对数函数 (16)第三章总结与展望 (19)参考文献 (20)致谢 (20)指数型(对数型)函数的改进BP神经网络逼近陈曦西南大学数学与统计学院,重庆 400715摘要: BP(Back-Propagation)网络的职能是对非线性可微分函数进行权值训练,是一种多层前馈网络,它采用最小均方差的学习方式,应用广泛。
大量应用于模式识别、函数逼近、数据压缩以及分类。
智能计算bp网络设计基于bp网络的分类和非线性函数逼近

1、基于BP网络的分类(1)问题的提出:在平直直角坐标系A 区域中 = x,y :x∈−4 ,0 ,y∈−4 ,0随机生成1000个点,令B 区域中的点为一类:B= x,y :x∈(−2.5 ,1) ,y∈(−2.5 ,1)A 区域的其他点为一类,现在利用BP神经网络学习这个分类,并用测试集C 中的点C= x k,y k: x k=−4+0.05k ,y k=−4+0.05k ,k=0,1,…,80测试C 中位于B 区域中的点能否被识别。
(2)网络的结构:net=newff([-4 0;-4 0],[n 2],{'logsig' 'logsig'},'trainlm','learngdm');(3)网络训练(采用不同的隐单元个数,使用常数及自适应学习率,加动量项,数值优化算法)采用不同的隐单元个数:隐层节点个数为n,本次实验取n=8和n=14并对其进行比较。
使用常数及自适应学习率:常数:net.trainParam.lr=0.1。
自适应学习率:'trainlm' 这个位置替换为'traingda' (在分类中并不能换)加动量项:'trainlm' 这个位置替换为'traingdm'(在分类中并不能换)数值优化算法:'trainlm' 这个位置替换为'traingdx'(在分类中并不能换)(4)网络测试与结果分析:①条件:隐层节点个数n=8 + 学习率常数net.trainParam.lr=0.1 + 梯度下降训练'trainglm'clear all;clc%给定训练点及目标值x=(rand(1,1000)*(-0.4))*10;y=(rand(1,1000)*(-0.4))*10;x=[x;y];T=zeros(2,size(x,2));for i=1:size(x,2);if abs(x(1,i)) < 2.5 && abs(x(1,i)) > 1 && abs(x(2,i)) < 2.5 && abs(x(2,i)) > 1 T(1,i)=1;endendfor i = 1:size(x,2);if T(1,i) == 1T(2,i) = 0;else T(2,i) = 1;endendinputs = x;targets = T;% 创建网络n = 8;net=newff([-4 0;-4 0],[n 2],{'logsig' 'logsig'},'trainlm','learngdm'); %Levenberg-Marquardtnet.inputs{1}.processFcns = {'removeconstantrows','mapminmax'}; %数据归一化net.outputs{2}.processFcns = {'removeconstantrows','mapminmax'}; %数据归一化%% 训练参数net.trainParam.epochs = 2000;net.trainParam.goal = 1e-4;net.trainParam.lr = 0.1;% 训练网络[net,tr] = train(net,inputs,targets);% 测试网络outputs = net(inputs);errors = gsubtract(targets,outputs); performance = perform(net,targets,outputs);%% 训练集合绘图figure(1);hold onfor i=1:size(x,2)if T(1,i)==1plot(x(1,i),x(2,i),'b*');endif T(2,i)==1plot(x(1,i),x(2,i),'r*');endend%% 模拟绘图figure(2);test=-4:0.05:0;output=[];[A,B]=meshgrid(test,test);C=[];v=size(test,2);for i=1:vC(1,1+(i-1)*v:i*v)=A(i,:);C(2,1+(i-1)*v:i*v)=B(i,:);endoutput=abs(net(C));N=zeros(1,v*v);for i=1:v*vif output(1,i)>=output(2,i)N(1,i)=1;endendplot3(C(1,:),C(2,:),N,'o');结果分析:说明8个隐藏层节点太少了,没有达到精度就到了最大迭代次数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4
院系:理学院
专业:光学工程
学号:s111201003
姓名:李润
60
50
40
30
20
10
0
0
0.5
1
1.5
2
2.5
3
3.5 x 10
4
图 3 BP 神经网络误差曲线
参考文献:
[1] 魏海坤.神经网络结构设计的理论与方法 [M].北京:国防工业出版社, 2005 . [2] 易宏杰. BP 网络原理及应用研究 [D].青岛:中国海洋大学, 2004 . [3] 韩立群.人工神经网络理论、设计及应用[M].北京: 化学工业出版社, 2002. [4] 余立雪.神经网络与实例学习[M].北京: 中国铁道出版社,1996. [5] 周志华,曹存根.神经网络及其应用[M].北京: 清华大学出版社,2004.
BP 神经网络函数逼近
专业:光学工程 学院:理学院 姓名: 学号:
院系:理学院
专业:光学工程
学号:s111201003
姓名:李润
BP 神经网络函数逼近
李润 (江南大学 理学院,江苏 无锡) 摘要:BP 神经网络主要应用于函数逼近,模式识别,分类以及数据压缩。本文 主要是说 BP 神经网络的函数逼近,通过正弦函数,我们得到了很好的 matlab 仿真结果。 关键词:BP 神经网络,函数逼近,正弦函数
W1=0.2*rand(HiddenUnitNum,InDim)-0.1; B1=0.2*rand(HiddenUnitNum,1)-0.1; B2=0.2*rand(OutDim,1)-0.1; W1Ex=[W1 B1] W2Ex=[W2 B2] SamInEx=[SamIn' ones(SamNum,1)]' ErrHistory=[]; for i=1:MaxEpochs %正向传播网络输出 HiddenOut=logsig(W1Ex*SamInEx); W2=0.2*rand(OutDim,HiddenUnitNum)-0.1;
1 BP 神经网络概述
BP 神经网络是一种多层前馈神经网络,该网络的主要特点是信号前向传递, 误差反向传播。在前向传递中,输入信号从输入层经隐含层逐层处理, 直至输出 层。 每一层的神经元状态只影响下一层神经元状态。 如果输出层得不到期望输出, 则转入反向传播,根据预测误差调整网络权值和阈值,从而使 B P 神经网络预测输 出不断逼近期望输出。BP 神经网络的拓扑结构如图 1 所示。
X1 Wij Wjk Y1
X2
Ym Xn
输入层
隐含层
输出层
图 1 BP 神经网络拓扑结构图 图 1 中, X1, X2, …, Xn 是 BP 神经网络的输入值, Y1, Y2, …, Ym 是 BP 神 经网络的预测值,ωij 和ωjk 为 BP 神经网络权值。从图 2 可以看出, BP 神经网络 可以看成一个非线性函数, 网络输入值和预测值分别为该函数的自变量和因变 量。当输入节点数为 n, 输出节点数为 m 时, BP 神经网络就表达了从 n 个自变量 到 m 个因变量的函数映射关系。
3 学习训练
BP 神经网络预测前首先要训练网络, 通过训练使网络具有联想记忆和预测 能力。BP 神经网络的训练过程包括以下几个步骤。 步骤 1:网络初始化。 根据系统输入输出序列(X, Y)确定网络输入层节点数 n、 隐含层节点数 l,输出层节点数 m,初始化输入层、隐含层和输出层神经元之间的 连接权值ωij,ωjk,初始化隐含层阈值 a,输出层阈值 b,给定学习速率和神经元激 励函数。 步骤 2:隐含层输出计算。根据输入向量 X, 输入层和隐含层间连接权值ωij 以及隐含层阈值 a,计算隐含层输出 H。
5
院系:理学院
专业:光学工程
学号:s111201003
姓名:李润
附录:
function main() SamNum=100; TestSamNum=100; HiddenUnitNum=10; InDim=1; OutDim=1; %训练样本 %测试样本数 %隐节点数 %样本输入维数 %样本输出维数
学号:s111201003
姓名:李润
%记录每次权值调整后的训练误差 ErrHistory=[ErrHistory SSE]; switch round(SSE*10) case 4 lr=0.003; case 3 lr=0.001; case 2 lr=0.0005; case 1 lr=0.01; case 0 break; otherwise lr=0.005; end %计算方向传播误差 Delta2=Error; Delta1=W2'*Delta2.*HiddenOut.*(1-HiddenOut); %计算权值调节量 dW2Ex=Delta2*HiddenOutEx'; dW1Ex=Delta1*SamInEx'; %权值调节 W1Ex=W1Ex+lr*dW1Ex; W2Ex=W2Ex+lr*dW2Ex; %分离隐层到输出层的初始权值,以便后面使用 W2=W2Ex(:,1:HiddenUnitNum); end %显示计算结果 i W1=W1Ex(:,1:InDim) B1=W1Ex(:,InDim+1) W2 B2=W2Ex(:,1+HiddenUnitNum); %测试 TestHiddenOut=logsig(W1*TestSamIn+repmat(B1,1,TestSamNum)); TestNNOut=W2*TestHiddenOut+repmat(B2,1,TestSamNum); plot(TestSamIn,TestNNOut,'r*') %绘制学习误差曲线 figure hold on grid [xx,Num]=size(ErrHistory); plot(1:Num,ErrHistory,'k-');
H j f( w ijx i - a j)
i 1
n
j=1,2,…,l
(1)
式中,l 为隐含层节点数; f 为隐含层激励函数,该函数有多种表达形式,本文 所选函数为:
1 (2) 1 e- x 步骤 3:输出层输出计算。根据隐含层输出 H,连接权值ωjk 和阈值 b,计算 BP f(x) 神经网络预测输出 O。
O k H j w jk - b k
j 1 l
k=1,2,…,m
(3)
步骤 4:误差计算。根据网络预测输出 O 和期望输出 Y,计算网络预测误差 e。
e k Yk - O k
k=1,2,…,m
(4)
步骤 5:权值更新。根据网络预测误差 e 更新网络连接权值ωij,ωjk。 w ij w ij H ( w jk ek j 1 - H j)x(i)
2
院系:理学院
专业:光学工程
学号:s111201003
姓名:李润
2 主要用途
BP 网络主要用于: (1)函数逼近:用输入矢量和相应的输出矢量训练网络逼近某个函数; (2)模式识别:用一个特定的输出矢量将它与输入矢量联系起来; (3)分类:把输入矢量以所定义的合适的方法进行分类; (4)数据压缩:减少输出矢量维数以便于传输或存储。 在人工神经网络的实际工程应用中,特别在自动控制领域中,大多数神经网 络模型是采用 BP 网络或它的变化形式,它也是前向网络的核心部分,体现了人 工神经网络最精华的部分。
7
大训练次数为 50000,前期学习速率为 0.005,前期目标误差为 1.通过调节权值 和阈值,达到正弦函数的逼近。函数逼近结果如图 2,误差函数曲线如图 3.
1 0.8 0.6 0.4 0.2 Output y 0 -0.2 -0.4 -0.6 -0.8 -1
0
1
2
3 Input x
4
5
6
7
图 2 正弦函数逼近结果
k 1
m
j=1,2,…,l
(7) (8)
bk bk ek
k=1,2,…,m
步骤 7:判断算法迭代是否结束,若没有结束,返回步骤 2
4 matlab 仿真结果
我们选取 100 个训练样本,100 个测试样本,隐含层节点数为 10,输入和输 出都是一维的。 选取 y sin(x) 为逼近函数,输入从 0.01π到 2π,增长率为 0.02π.最
k 1 m
j=1,2,…,n;j=1,2,…,l
(5)
3
院系:理学院
专业:光学工程
学号:s111201003
姓名:李润
w jk w jk H je k
式中,η为学习速率。
j=1,2,…l;k=1,2,…,m
(6)
步骤 6:阈值更新。根据网络预测误差 e 更新网络节点阈值 a, b。
a j a i H ( w jk ek j 1 - H j)
%隐节点初始偏移
%输出层初始偏移
HiddenOutEx=[HiddenOut' ones(SamNum,1)]'; NetworkOut=W2Ex*HiddenOutEx; %停止学习判断 Error=SamOut-NetworkOut; SSE=sums程
% 根据目标样本获得样本输入输出 SamIn=0.01*pi:0.02*pi:2*pi; SamOut=sin(SamIn); TestSamIn=0.01*pi:0.02*pi:2*pi; TestSamOut=sin(TestSamIn); figure hold on grid plot(TestSamIn,TestSamOut,'k--') xlabel('Input x'); ylabel('Output y'); MaxEpochs=50000; lr=0.005; E0=1; %最大训练次数 %前期学习率 %前期目标误差 %输入层到隐层的权值 %隐层到输出层的初始权值