当前位置:文档之家› BP神经网络函数逼近

BP神经网络函数逼近


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; %最大训练次数 %前期学习率 %前期目标误差 %输入层到隐层的权值 %隐层到输出层的初始权值
相关主题