数字识别系统的毕业论文 下载本文

自输入数据特征提取出来进行分类,经过这样训练的网络可以识别训练集以外新的输入并得到相应的不同的输出。可以看出,无监督的学习网络具有自组织和自学习的功能。

(3)强化学习(再励学习):这种学习介于上述两种学习方式之间 )。外部环境对学习后的输出结果只给出评价信息(奖或惩),而不给出正确答案。神经网络学习系统通过强化那些受奖励的行为来改善自身的性能。 2.2.3 神经网络的学习规则

神经网络学习算法的研究是人工神经网络发展的一个重要组成部分,人工神经网络具备学习能力的强弱代表这对人脑神经系统模拟程度,也具有广泛的实用价值。因此,有关神经网络的学习算法的研究一直占有特殊的地位。无论哪种学习方式,其学习过程都有一定的规则,神经网络典型的学习规则有Hebb学习规则、误差纠正学习规则、竞争学习规则等 2.3 BP神经网络概述

2.3.1 基于BP算法的多层前馈网络模型

前馈网络是目前研究最多的网络形式之一。如图2.3所示,此为应用最为普遍的单隐层前馈型网络,一般称为三层前馈网或者三层感知器。在此模式中,包含了三层分别是输入层、隐层和输出层。每层都由若干节点组成,第n层的节点与第n+1层的节点相连。不同层次之间节点相连都设有权值,网络的学习功能就是通过修改这些联结之间的权值来实现的。

图2.3 三层BP网络结构

8

输入向量X?(x1,x2,?,xi,?,xn)T,隐层输入向量为Y?(y1,y2,?,yi,?,ym)T,输出层输入向量为O?(o1,o2,?,ok,?,ol)T;期望输出向量为

d?(d1,d2,?,dk,?,dl)T。输入层到隐层之间的权值矩阵用V表示,

V?(V1,V2,?,Vi,?,Vm),其中Vi为隐层第i个神经元对应的权向量;隐层到输出层

之间的权值矩阵用W表示,W?(W1,W2,?,Wk,?,Wl),其中列向量Wk为输出层第k个神经元对应的权向量。以下是各层信号之间的数学关系。

对于输出层,有

ok?f?netk? netk??wjkyj对于隐层,有

nmk?1,2,?,l 2-(3)

k?1,2,?,l 2-(4)

j?0 yj?f(netj) netj??vijxii?0j?1,2,?,m 2-(5)

j?1,2,?,m 2-(6)

式2-(5),式2-(6)中,转移函数f(x)均为单极性Sigmoid函数:

1 2-(7) ?x1?e f(x)?2.3.2 BP网络学习算法

BP算法不仅有输入层节点、输出层节点,还可有1个或多个隐含层节点。对于输入信号,要先向前传播到隐含层节点,经作用函数后,再把隐节点的输出信号传播到输出节点,最后给出输出结果。

以下通过三层前馈型网络介绍BP网络学习算法:

假设输入层有n个神经元,隐含层有p个神经元,输出层有q个神经元,输入向量为x?(x1,x2,?,xn),隐层输入向量为hi?(hi1,hi2,?,hip),隐层输出向量为

ho?(ho1,ho2,?,hop),输出层输入向量为yi?(yi1,yi2,?,yiq),输出层输出向量为yo?(yo1,yo2,?,yoq),期望输出向量为do?(d1,d2,?,dq);输入层与中间层的连接

权值为wih,隐层与输入层的连接权值为who,隐层各神经元之间的阀值为bh,输出层各神经元的阀值为bo,样本数据个数k?1,2,?,m,

激活函数为f(?),误差函数为

1qe??(do(k)?yoo(k))2 2-(8)

2o?1

9

第一步,神经网络初始化:给神经网络中个神经元之间的权值分别赋(-1,1)内的一个随机数,设定误差函数e,设计算精度值ε和最大学习次数M。

第二步,任意选取第 k个输入样本以及对应期望输出:

x(k)?(x1(k),x2(k),?,xn(k)) 2-(9) do(k)?(d1(k),d2(k),?,dq(k)) 2-(10)

第三步,计算隐层个神经元输入和输出: hih(k)??wihxi(k)?bhi?1nh?1,2,?,p 2-(11)

hoh(k)?f(hih(k))ph?1,2,?,p 2-(12)

yio(k)??whohoh(k)?boh?1o?1,2,?,q 2-(13)

yoo(k)?f(yio(k))o?1,2,?,q 2-(14)

第四步,利用网络期望输出和实际输出误差计算函数对输出层的每个神经元求偏导数?o(k)。 ?e?e?yio? 2-(15) ?who?yio?who?p???who(k)?b?hoho????yio(k)h???ho(k)? 2-(16) h?who?who?1q????(d(k)?yo(k))?oo??2o?1?e????(d(k)?yo(k))yo?(k)? 2-(17) ooo?yio?yio2第五步,利用隐层到输出层的连接权值、输出层的?o?k?和隐层的输出计算误差函数对隐层每个神经元求偏导数?h(k)。 ?e?e?yio????o(k)hoh(k) 2-(18)

?who?yio?who

?e?e?hih(k)? 2-(19) ?wih?hih(k)?wih?n????wihxi(k)?bn??hi(k)i?1??x(k)?? 2-(20) i?wih?wih

10

1q2?(??do(k)?yoo(k)?)?hoh(k)?e2o?1??hoh(k)?hih(k) ?hih(k)????do(k)?yoo(k)?f?(yio(k))whoo?1q 2-(21)

?hoh(k)?hih(k)第六步,利用输出层各神经元的?o(k)和隐含层各神经元的输出来修正连接权值

who(k)。

?who(k)????o(k)hoh(k) 2-(22)

N?1N?who???o(k)hoh(k) 2-(23) who第七步,利用隐含层各神经元的?h(k)和输入层各神经元的输入修正连接权。 ?e?e?hih(k)?wih(k)????????h(k)xi(k) 2-(24)

?wih?hih(k)?wihN?1Nwih?wih???h(k)xi(k) 2-(25)

第八步,计算全局误差

1mqE?(do(k)?yo(k))2 2-(26) ??2mk?1o?1第九步,判断网络误差是否满足要求。当误差达到预设精度或学习次数大于设定的最大次数,则结束算法。否则,选取下一个学习样本及对应的期望输出,返回到第三步,进入下一轮学

11

12