《第7章人工智能BP网络.ppt》由会员分享,可在线阅读,更多相关《第7章人工智能BP网络.ppt(16页珍藏版)》请在第壹文秘上搜索。
1、BP网络BP网络结构 一个具有两个隐含层的神经网络模型结构BP网络理论n 与感知器模型不同的是,BP网络的隐含层传递函数要求必须是可微的,所以不能使用感知器网络的二值函数,常用的有S型的对数、正切函数或线性函数。由于传递函数是处处可微的,所以对于BP网络来说,一方面,所划分酌区域不再是一个线性划分,而是由一个非线性超平面组成的区域,它是曲面,因而它的分类比线性划分更加精确,容错性也比线性划分更好。n BP网络是一种单向传播的多层前向网络。nBP网络是一种具有三层或三层以上的神经网络,包括输入层、中间层(隐层)和输出层。上下层之间实现全连接,而每层神经元之间无连接。n当一对学习样本提供给网络后,
2、神经元的激活值从输入层经备中间层向输出层传播,在输出层的各神经元获得网络的输入响应。n接下来,按照减少目标输出与实际误差的方向,从输出层经过各中间层逐层修正备连接权值,最后回到输入层,这种算法称为“误差逆传播算法”,即BP算法。随着这种误差逆的传播修正不断进行,网络对输入模式响应的正确率也不断上升。BP学习规则nBP网络的产生归功于BP算法的获得。BP算法属于 算法,是一种监督式的学习算法。其主要思想为:对于q个输入学习样本:,已知与其对应的输出样本为:。学习的目的是用网络的实际输出 与目标矢量 之间的误差来修正其权值,使其 ,(l=1,2,q)与期望的尽可能地接近;即使网络输出层 的误差平方
3、和达到最小。它是通过连续不断地在相对于误差函数斜率下降的方向上计算网络权值和偏差的变化而逐渐逼近目标的。每一次权值和偏差的变化都与网络误差的影响成正比,并以反向传播的方式传递到每一层的。12,.,qppp12,.,qAAA12,.,qTTTlA12,.,qTTT具有个隐含层的简化网络图n BP算法是由两部分组成:信息的正向传递与误差的反向传播。在正向传播过程中,输入信息从输入经隐含层逐层计算传向输出层,每一层神经元的状态只影响下一层神经元的状态。如果在输出层没有得到期望的输出,则计算输出层的误差变化值,然后转向反向传播,通过网络将误差信号沿原来的连接通路反传回来修改各层神经元的权值直至达到期望
4、目标。n设输入为P,输入神经元有r个,隐含层内有s1的神经元,激活函数为F1,输出层内有s2个神经元,对应的激活函数为F2,输出为A,目标矢量为T。4.2.1 信息的正向传递(1)隐含层中第i个神经元输出为:i=1,2,s1(2)输出层第k个神经元的输出为:k=1,2,s2(3)定义误差函数为:2211(,)22skkkE W Bta1122212skkiikiafwab11111riijjijafwpbn(2)隐含层权值变化 对从第j个输入到第i个输出的权值有:其中:同理可得:2111211kiijijkiijaaEEwwaaw 212221srrkkkijijjktafwfpp 211,2
5、srijiiijkike few1iijb BP网络的缺陷和不足n 首先,由于学习速率是固定的,出此,网络的收敛速度慢,需要校长的训练时间。对于一些复杂的问题,BP算法需要的训练时间可能会非常长。这主要是由于学习速率太小造成的,可采用变化的学习速率或自适应的学习速率加以改进。n 其次,BP算法可以使权值收敛到某个值,但并不能保证其为误差平面的全局最小值,这是因为采用梯皮下降法可能会产生个局部最小值。对于这个问题,可以采用附加动量法来解决。n 再次,网络隐含居的层数和单元数的选择尚无理论上的指导,一般是根据经验或者通过反复实验确定。因此,网络往往存在很大的冗余性,在一定程度上也增加了网络学习的负
6、担。人工智能大作业人工智能大作业2 2BPBP神经网络神经网络要求:1:函数1和2以0,2等间距取11点为样本(样本间距为0.2)进行BP神经网络学习训练。训练后,绘图以0,2等间距取361个点(检测间距为/360)。初始权阈值随机。最后给出不同误差精度的拟合效果图,并给出训练误差和训词次数的关系图。隐含层数量2层。2:函数3,要求在X1X2平面内,样本间距为21*21(间距0.1)进行训练,绘图间距0.01。要求同上。3:进阶任务:隐含层数量1、2、3的训练效果比较。题目:三个函数:)sin(xy 2,0 x2211)sin()sin(xxxxy10,1021xx)sin(xy 2,0 x1
7、:2:3:n例4.1用于函数逼近的BP网络设计。下面给出一个典型的用来进行函数逼近的两层结构的神经网络,它具有一个双曲正切型的激活函数隐含层,其输出层采用线性函数。n定义一个密度较大的第二个输入矢量:nP2=-1:0.025:1;n首先对网络进行初始化:nR,Q=size(P);S2,Q=size(T);S1=5;nW1,B1=rands(S1,R);W2,B2=rands(S2,S1);n通过测试,用输入矢量P2来计算网络输出:nA2=purelin(W2*tansig(W1*P2,B1),B2);n下面定义训练参数并进行训练:disp_fqre=10;max_epoch=8000;err_goal=0.02;lr=0.01;TP=diap_frep max_epoch err_goal lr;trainbp(W1,B1,tansig,W2 B2,purelin,P,T,TP)