BP神经网络算法
三层BP神经网络如图:
设网络的输入模式为
,隐含层有h个单元,隐含层的输出为
,输出层有m个单元,他们的输出为
,目标输出为
设隐含层到输出层的传递函数为
,输出层的传递函数为g
于是:
:隐含层第j个神经元的输出;其中
:输出层第k个神经元的输出
此时网络输出与目标输出的误差为
,显然,它是
的函数。
下面的步骤就是想办法调整权值,使
减小。
由高等数学的知识知道:负梯度方向是函数值减小最快的方向
因此,可以设定一个步长
,每次沿负梯度方向调整
个单位,即每次权值的调整为:
,
在神经网络中称为学习速率
可以证明:按这个方法调整,误差会逐渐减小。
BP神经网络(反向传播)的调整顺序为:
1)先调整隐含层到输出层的权值
设
为输出层第k个神经元的输入
-------复合函数偏导公式
若取
,则
于是隐含层到输出层的权值调整迭代公式为:
2)从输入层到隐含层的权值调整迭代公式为:
其中
为隐含层第j个神经元的输入:
注意:隐含层第j个神经元与输出层的各个神经元都有连接,即
涉及所有的权值
,因此
于是:
因此从输入层到隐含层的权值调整迭代为公式为:
例:
下
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
给出了某地区公路运力的历史统计数据,请建立相应的预测模型,并对给出的2010和2011年的数据,预测相应的公路客运量和货运量。
时间
人数(单位:万人)
机动车数(单位:万辆)
公路面积(单位:万平方公里)
公路客运量(单位:万人)
公路货运量(单位:万吨)
1990
20.55
0.6
0.09
5126
1237
1991
22.44
0.75
0.11
6217
1379
1992
25.37
0.85
0.11
7730
1385
1993
27.13
0.9
0.14
9145
1399
1994
29.45
1.05
0.2
10460
1663
1995
30.1
1.35
0.23
11387
1714
1996
30.96
1.45
0.23
12353
1834
1997
34.06
1.6
0.32
15750
4322
1998
36.42
1.7
0.32
18304
8132
1999
38.09
1.85
0.34
19836
8936
2000
39.13
2.15
0.36
21024
11099
2001
39.99
2.2
0.36
19490
11203
2002
41.93
2.25
0.38
20433
10524
2003
44.59
2.35
0.49
22598
11115
2004
47.3
2.5
0.56
25107
13320
2005
52.89
2.6
0.59
33442
16762
2006
55.73
2.7
0.59
36836
18673
2007
56.76
2.85
0.67
40548
20724
2008
59.17
2.95
0.69
42927
20803
2009
60.63
3.1
0.79
43462
21804
2010
73.3900
3.9635
0.9880
2011
75.5500
4.0975
1.0268
function main()
clc % 清屏
clear all; %清除内存以便加快运算速度
close all; %关闭当前所有figure图像
SamNum=20; %输入样本数量为20
TestSamNum=20; %测试样本数量也是20
ForcastSamNum=2; %预测样本数量为2
HiddenUnitNum=8; %中间层隐节点数量取8,比工具箱程序多了1个
InDim=3; %网络输入维度为3
OutDim=2; %网络输出维度为2
%原始数据
%人数(单位:万人)
sqrs=[20.55 22.44 25.37 27.13 29.45 30.10 30.96 34.06 36.42 38.09 39.13 39.99 ...
41.93 44.59 47.30 52.89 55.73 56.76 59.17 60.63];
%机动车数(单位:万辆)
sqjdcs=[0.6 0.75 0.85 0.9 1.05 1.35 1.45 1.6 1.7 1.85 2.15 2.2 2.25 2.35 2.5 2.6...
2.7 2.85 2.95 3.1];
%公路面积(单位:万平方公里)
sqglmj=[0.09 0.11 0.11 0.14 0.20 0.23 0.23 0.32 0.32 0.34 0.36 0.36 0.38 0.49 ...
0.56 0.59 0.59 0.67 0.69 0.79];
%公路客运量(单位:万人)
glkyl=[5126 6217 7730 9145 10460 11387 12353 15750 18304 19836 21024 19490 20433 ...
22598 25107 33442 36836 40548 42927 43462];
%公路货运量(单位:万吨)
glhyl=[1237 1379 1385 1399 1663 1714 1834 4322 8132 8936 11099 11203 10524 11115 ...
13320 16762 18673 20724 20803 21804];
p=[sqrs;sqjdcs;sqglmj]; %输入数据矩阵
t=[glkyl;glhyl]; %目标数据矩阵
[SamIn,minp,maxp,tn,mint,maxt]=premnmx(p,t); %原始样本对(输入和输出)初始化
rand('state',sum(100*clock)) %依据系统时钟种子产生随机数 rand是产生0到1的均匀分布,randn是产生均值为0,方差为1的正态分布 rand(n)或randn(n)产生n*n阶矩阵,rand(m,n)或randn(n)产生m*n的随机数矩阵
NoiseVar=0.01; %噪声强度为0.01(添加噪声的目的是为了防止网络过度拟合)
Noise=NoiseVar*randn(2,SamNum); %生成噪声
SamOut=tn + Noise; %将噪声添加到输出样本上
TestSamIn=SamIn; %这里取输入样本与测试样本相同因为样本容量偏少
TestSamOut=SamOut; %也取输出样本与测试样本相同
MaxEpochs=50000; %最多训练次数为50000
lr=0.035; %学习速率为0.035
E0=0.65*10^(-3); %目标误差为0.65*10^(-3)
W1=0.5*rand(HiddenUnitNum,InDim)-0.1; %初始化输入层与隐含层之间的权值
B1=0.5*rand(HiddenUnitNum,1)-0.1; %初始化输入层与隐含层之间的阈值
W2=0.5*rand(OutDim,HiddenUnitNum)-0.1; %初始化输出层与隐含层之间的权值
B2=0.5*rand(OutDim,1)-0.1; %初始化输出层与隐含层之间的阈值
ErrHistory=[]; %给中间变量预先占据内存
for i=1:MaxEpochs
HiddenOut=logsig(W1*SamIn+repmat(B1,1,SamNum)); % 隐含层网络输出
NetworkOut=W2*HiddenOut+repmat(B2,1,SamNum); % 输出层网络输出
Error=SamOut-NetworkOut; % 实际输出与网络输出之差
SSE=sumsqr(Error) %能量函数(误差平方和)
ErrHistory=[ErrHistory SSE];
if SSE
本文档为【bp神经网络算法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。