神经网络建模及Matlab中重要的BP网络
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
神经网络建模及Matlab中重要的BP网络
一、神经组织的基本特征
1.细胞体是一个基本的初等信号处理器,轴突是信号的输出通路,树
突是信号的输入通路。信号从一个神经细胞经过突触传递到另一个细
胞。
2.不同的神经元之间有不同的作用强度,称为联接强度。当某细胞收到信号时,它的电位发生变化,如果电位超过某一阈值时,该细胞处于激发态,否则处于抑制状态。
3.两神经元之间的联接强度随其激发与抑制行为相关性的时间平均值正比变化,也就是说神经元之间的联接强度不是一成不变的。这就是生物学上的Hebb 律。
二、人工神经元的M-P模型(McCulloch、Pitts,1943)1.构造一个模拟生物神经组织的人工神经网络的三要素:
(1).对单个神经元给出定义;
(2).定义网络结构:决定神经元数量及连接方式;
(3).给出一种方法,决定神经元之间的联接强度。
2.M-P模型
其中,t表示时间
S i (t)表示第i个神经元在t时刻的状态,S
i
(t)=1表示处于激发态,S
i
(t)=0表
示处于抑制态
w
ij
表示第j个神经元到第i个神经元的联接强度,称之为权,可正可负
表示第i个神经元在t时刻所接收到的所有信号的线性迭加。
μi表示神经元i的阈值, 可以在模型中增加一个S k(t)=1神经元k,并且w ik=-μi,则阈值可归并到和号中去。
注:
1.M-P神经元虽然简单,但可以完成任何计算。
2.神经元的状态可以取[0,1]中的连续值,如用以下函数代替θ(x): μi
Wi1
∑
Wi2
Wi3
I
2
H
2
H
3
I
3
O
1
H
1
I
4
I
1
O
2
输出层O
i
输入层I
k
隐含层H
j
权W
jk
权W
ij
三、多层前传网络
1.特点:
Ø相邻层全互连
Ø同层没有连接
Ø输出与输入没有直接联系
2.各层神经元个数的确定
输入层、输出层的神经元个数由研究对象的输入、输出信息来确定。隐含层:
3.符号说明
μ:表示一个确定的已知样品的标号;
i, j, k:分别对应于输出层、隐含层、输入层的下标;
将第μ个样品的原始数据输入网络时,相应输出单元状态;
将第μ个样品的原始数据输入网络时,相应隐含单元状态;
将第μ个样品的原始数据输入网络时,相应输入单元数据;
w
ij
:从隐含层第j个神经元到输出层第i个神经元的联接强度;
w
jk
:从输入层第k个神经元到隐含层第j个神经元的联接强度;4.网络数据流程
对应于输入层的输入:
隐单元j的输入是:
对应的输出是:
输出单元i收到的迭加信号是:
输出单元i的输出是:
显然输出是所有权w={w
ij ,w
jk
}的函数
四、向后传播算法(Back-Propagation)
设样品μ在输出单元i上的理想输出为,则函数:
表示了在一定的权下,理想输出与实际输出的差异。因此,确定权w的问题化为求E(w)的极小值问题。可以采用最速下降算法。
最速下降算法步骤:
1)任取初始点w
0,计算出w
的负梯度方向:-▽E(w
)
2)取新点w
1=w
+△w=w
-η▽E(w
),使E(w
1
) ) 3)判断 其中△w的计算如下: 对于隐单元到输出单元的权的修正量为 其中 对于输入单元到隐单元的权的修正量为 其中 五、Matlab中 BP神经网络的实现 1.BP神经网络的初始化 各层神经元个数,各层神经元之间的连接强度, 各层神经元的传递函数 1).人工初始化如下例 例1.有一个三输入两层神经网络,隐层有两个对数S形神经元,输出层有一个正切S形神经元,用于预测两个一元目标矢量. p=[0 0.5 -0.2;1 0.2 0.3]';%输入 t=[0.5,-0.5];%理想输出 r=3;s1=2;s2=1;%输入层、隐层、输出层的神经元个数 w1=rands(s1,r);%输入层到隐层的连接强度 b1=rands(s1,1); %隐层的阈值 w2=rands(s2,s1); %隐层到输出层的连接强度 b2=rands(s2,1);%输出层的阈值 lr=1;%学习速率 for epoch=1:40 %训练网络40次 a1=logsig(w1*p,b1); %隐层的输出 a2=tansig(w2*a1,b2); %输出层的输出 e=t-a2; %与理想输出的误差 d2=deltatan(a2,e); %输出层的δ值 d1=deltalog(a1,d2,w2); %隐层的δ值 [dw1,db1]=learnbp(p,d1,lr); %进行学习,获取隐层连接强度、阈值的调整值 w1=w1+dw1; %调整隐层的连接强度 b1=b1+db1; %调整隐层的阈值 [dw2,db2]=learnbp(a1,d2,lr); %进行学习,获取输出层连接强度、阈值的调整值 w2=w2+dw2; %调整输出层的连接强度 b2=b2+db2; %调整输出层阈值 end; a1=logsig(w1*p,b1); %学习后,对网络进行验证 a2=tansig(w2*a1,b2) 2).调用系统提供的函数 Ø格式: [w1,b1,w2,b2]=initff(p,s1,f1,s2,f2) [w1,b1,w2,b2]=initff(p,s1,f1,t,f2) Ø功能:至多三层的BP网络初始化,得到每层的权值和阈值。 Ø说明: 1)P为输入向量,P中每一行必须包含网络期望输入的最大值和最小值,这样才能合理地初始化连接强度与阈值。 2)T为理想输出向量 3)S1为隐层的神经元数,S2为输出层的神经元数,可用理想输出向量T代替S2,此时S2=T向量的行数 4)F1为隐层传递函数名,F2为输出层传递函数名 例2 应用两层BP网络进行函数逼近,其中隐层神经元个数设为5个