1、智能信息处理技术智能信息处理技术1第第5章章 人工神经网络人工神经网络 前馈神经网络前馈神经网络2 人工神经网络基础知识人工神经网络基础知识1 自组织神经网络自组织神经网络3 反馈神经网络反馈神经网络45.2 前馈神经网络前馈神经网络 单层感知器单层感知器1 多层感知器多层感知器2 误差反传误差反传(BP)算法算法3 标准标准BP算法的改进算法的改进4基于基于BP算法的多层前馈网络设计基础算法的多层前馈网络设计基础55.2.1、单层感知器单层感知器v 1958年,罗森布拉特(Rosenblatt)提出一种具有单层计算单元的神经网络,称为“感知器”(Perceptron)。感知器是模拟人的视觉接
2、受环境信息,并由神经冲动进行信息传递。感知器研究中首次提出了自组织、自学习的思想,而且对所能解决的问题存在着收敛算法,并能从数学上严格证明。v 单层感知器的结构与功能非常简单,较易学习和理解,是研究其他网络的基础。v 感知器模型:如图所示,单层感知器是指只有一层处理单元的感知器。图中输入层也称感知层,有n个神经元节点,这些节点只负责引入外部信息,自身无信息处理能力,每个节点接收一个输入信号。输出层也称处理层,有m个神经元节点,每个节点均有信息处理能力。输入列向量:X=(x1,x2,xn)T输出列向量:O=(o1,o2,om)T权值列向量:Wj=(w1j,w2j,wnj)T离散型单层感知器的转移
3、函数一般采用符号函数:x1x2xixno1ojomW1WjWm)sgn()sgn(0XWxwoTjniiijj5.2.1、单层感知器单层感知器v 感知器功能考虑如图所示单计算节点感知器的情况。则 设输入向量X=(x1,x2)T,则两个输入分量在几何上构成一个二维平面,输入样本可以用该平面上的一个点表示。则由方程 确定的直线成为二维输入样本空间上的一条分界线。设输入向量X=(x1,x2,x3)T,则三个输入分量在几何上构成一个三维空间。节点j的输出为由方程 确定的平面成为三维输入样本空间上的一个分界面。推广到n维空间的一般情况,设输入X=(x1,x2,xn)T,则n个输入分量在几何上构成一个n维
4、空间。由方程 可定义一个n维空间上的超平面。此平面可以将输入样本分为两类。0,10,1XWXWoTjTjjojx1x2xixnWj0,10,122112211jjjjjjjTxwxwTxwxwo0,10,1332211332211jjjjjjjjjTxwxwxwTxwxwxwo02211jjjTxwxw0332211jjjjTxwxwxw032211jnjjjTxwxwxw5.2.1、单层感知器单层感知器v 感知器的局限性如果两类样本可以用直线、平面或超平面分开,称为线性可分,否则称为线性不可分。由感知器分量的几何意义可知,由于净输入为零确定的分类判决方程是线性方程,因而它只能解决线性可分问题
5、而不能解决线性不可分问题。由此可知,单计算层感知器的局限性为:仅对线性可分问题具有分类能力。v 感知器的学习算法采用感知器学习规则进行训练。训练步骤为:对各初始权值w0j(0),w1j(0),w2j(0),wnj(0),j=1,2,m(m为计算层的节点数)赋予较小的非零随机数;输入样本对Xp,dp,其中Xp=(-1,),dp为期望的输出向量(教师信号),上标p代表样本对的模式序号,设样本集中的样本总数为P,则p=1,2,P;计算各节点的实际输出 ;调整各节点对应的权值,其中为学习率,用于控制调整速度,太大会影响训练的稳定性,太小则使训练的收敛速度变慢,一般取01;返回步骤输入下一对样本,周而复
6、始直到对所有样本感知器的实际输出与期望输出相等。px1px2pnxmjXtXtoTjpj,2,1,)(sgn)(mjXodtWtWppjpjjj,2,1,)()1(5.2.1、单层感知器单层感知器例 单计算节点感知器有3个输入,给定3对训练样本如下X1=(-1,1,-2,0)Td1=-1X2=(-1,0,1.5,0.5)Td2=-1X3=(-1,-1,1,0.5)Td3=1设初始权向量W(0)=(0.5,1,-1,0)T,=0.1,训练该感知器。解:第一步 输入X1,得第二步 输入X2,得TTTTTXodWWoXW)0,6.0,8,0,7.0()0,2,1,1)(11(1.0)0,1,1,5.
7、0()0()0()1(1)5.2sgn()0(5.2)0,2,1,1)(0,1,1,5.0()0(11111TTTTTXodWWoXW)0,6.0,8.0,7.0()5.0,5.1,0,1)(1(1 1.0)0,6.0,8,0,7.0()1()1()2(1)6.1sgn()1(6.1)5.0,5.1,0,1)(0,6.0,8,0,7.0()1(22222第三步 输入X3,得TTTTTXodWWoXW)1.0,4.0,6.0,5.0()5.0,1,1,1)(1(1 1.0)0,6.0,8,0,7.0()2()2()3(1)1.2sgn()2(1.2)5.0,1,1,1)(0,6.0,8,0,7.
8、0()2(33333第四步 返回到第一步,继续训练直到dp-op=0,p=1,2,3。5.2 前馈神经网络前馈神经网络 多层感知器多层感知器2 单层感知器单层感知器1 误差反传误差反传(BP)算法算法3 标准标准BP算法的改进算法的改进4基于基于BP算法的多层前馈网络设计基础算法的多层前馈网络设计基础55.2.2、多层感知器多层感知器v 单计算层感知器只能解决线性可分问题,在输入层和输出层之间引入隐层作为输入模式的“内部表示”,将单计算层感知器变成多(计算)层感知器,可以实现线性不可分问题。v 例:用两输入层感知器解决“异或”问题。如图具有单隐层的感知器,其中隐层的两个节点相当于两个独立的符号
9、单元。这两个符号单元可分别在x1和x2构成的平面上确定两条分界直线S1和S2,构成如图所示的开放式凸域。通过适当调整两条直线的位置,可使两类线性不可分样本分别位于开放式凸域内部和外部。输出层节点以隐层两节点的输出y1、y2作为输入,其结构也相当于一个符号单元。经过训练,使其具有逻辑“与非”功能,则“异或”问题即可得到解决。x1x2w11OT1w12w21w22y1y2T3T2-1-1x1x2S1S2x1x2y1y2o001100101110101111105.2.2、多层感知器多层感知器v 当输入样本为二维向量时,隐层中的每个节点确定了二维平面上的一条分界直线。多条直线经输出节点组后后构成下图
10、所示的各种形状的凸域(所谓凸域是指其边界上任意两点之连线均在域内)。通过训练调整凸域的形状,可将两类线性不可分样本分为域内和域外。输出层节点负责将域内外的两类样本进行分类。单隐层节点数量增加可以使多边形凸域边数增加,从而在输出层构建出任意形状的凸域。如果在此基础上增加第二个隐层,则该隐层的每个节点确定一个凸域,各种凸域经输出层节点组合后可称为下图所示的任意形状域。已经证明,双隐层感知器足以解决任何复杂的分类问题。v 采用非线性连线函数作为神经元节点的转移函数将使区域边界线的基本线素由直线变成曲线,从而使整个边界线变成连线光滑的曲线。开域闭域5.2.2、多层感知器多层感知器v 从感知器学习规则看
11、,其权值调整量取决于感知器期望输出与实际输出之差,即 。对于各隐层来说,不存在期望输出,因而该学习规则对隐层权值不适用。XtodtWjjj)()(5.2 前馈神经网络前馈神经网络3 误差反传误差反传(BP)算法算法 单层感知器单层感知器12 多层感知器多层感知器 标准标准BP算法的改进算法的改进4基于基于BP算法的多层前馈网络设计基础算法的多层前馈网络设计基础55.2.3、误差反传误差反传(BP)算法算法v 20世纪80年代中期,帕克(Parker)和鲁姆尔哈特(Rumelhart)等人研究了非线性连线转移函数的多层前馈网络的误差反向传播算法(Error Back Proragation,简称
12、BP)。BP算法解决了多层感知器的学习问题,促进了神经网络的发展。v BP学习过程描述为:工作信号的正向传播:输入信号从输入层经隐层,传向输出层,在输出端产生输出信号,这是工作信号的正向传播。在信号的向前传递过程中网络的权值是固定不变的,每一层神经元的状态只影响下一层神经元的状态。如果输出层不能得到期望的输出,则转入误差信号反向传播。误差信号的反向传播:网络的实际输出与期望输出之间的差值即为误差信号,误差信号由输出端开始逐层向前传播,这是误差信号的反向传播。在误差信号反向传播过程中,网络的权值由误差反馈进行调节。通过权值的不断修正使网络的实际输出更接近期望输出。5.2.3、误差反传误差反传(B
13、P)算法算法v 基于BP算法的多层前馈网络模型 以单隐层网络为例,输入向量为X=(x1,x2,xi,xn)T,隐层的输出向量为Y=(y1,y2,yj,ym)T,输出层输出向量为O=(o1,o2,ok,ol)T,期望输出向量为d=(d1,d2,dk,dl)T,输入层到隐层之间的权值矩阵用V表示,V=(V1,V2,Vj,Vm),其中列向量Vj为隐层第j个神经元对应的权向量;隐层到输出层之间的权值矩阵用W表示,W=(W1,W2,Wk,Wl),其中列向量Wk为输出层第k个神经元对应的权向量。x1x2xixn-1o1okolW1WKWlxny1y2yjymV1Vmlkywnetlknetfomjjjkk
14、kk,2,1,2,1)(0mjxvnetmjnetfyniiijjjj,2,1,2,1)(0对于输出层,有对于隐层,有5.2.3、误差反传误差反传(BP)算法算法v BP学习算法(以三层前馈网络为例,然后推广到一般多层前馈网络)网络误差与权值调整 当网络输出与期望输出不等时,存在输出误差E,定义如下:将以上误差定义展开到隐层,有 进一步展开至输入层,有 权值的调整原则是使误差不断减小,因此应使权值的调整量与误差的负梯度成正比,即lkkkodOdE122)(21)(21lkmjjjkklkkkywfdnetfdE12012)(21)(21lkmjniiijjkklkmjjjkkxvfwfdnet
15、fwfdE1200120)(21)(21mjnivEvlkmjwEwijijjkjk,2,1;,2,1,0,2,1;,2,1,05.2.3、误差反传误差反传(BP)算法算法v BP学习算法(续)BP算法推导 对于输出层,有 对于隐层,有 令 ,则 令 ,则 对于输出层,可展开为 对于隐层,可展开为 其中koknetEjkkkjkjkwnetnetEwEwijjjijijvnetnetEvEvjyjnetEjokjkywiyjijxvokyj)(kkkkkkoknetfoEnetooEnetE)(jjjjjjyjnetfyEnetyyEnetElkjkkkkjkkkwnetfodyEodoE1)
16、()(,)(5.2.3、误差反传误差反传(BP)算法算法v BP学习算法(续)取转移函数为单极性Sigmoid函数f(x)=1/(1+e-x),则f(x)=f(x)1-f(x)得到三层前馈网络的BP学习算法权值调整计算公式为 对于一般多层前馈网,设共有h个隐层,按前向顺序各隐层节点数分别记为m1,m2,mh,各隐层输出分别记为y1,y2,yh,各层权值矩阵分别记为W1,W2,Wh,Wh+1,则各层取值调整 计算公式为:输出层:第h隐层:)1()(kkkkokoood)1()()()()(11jjlkjkokjjkklkkkyjyywnetfwnetfodijjlkjkokiyjijjkkkkj
17、okjkxyywxvyooodyw)1()()1()(1lkmjyooodywhhjkkkkhjhkhjk,.,2,1;,.,2,1,0)1()(11mjmiyyywywhhihjhjlkhjkokhihjhij,.,2,1;,.,2,1,0)1()(111115.2.3、误差反传误差反传(BP)算法算法v标准BP算法的程序实现(单样本训练)初始化。对权值矩阵W、V赋随机数,将样本模式计数器p和训练次数计数器q置为1,误差E置0,学习率设为01间小数,网络训练后达到的精度Emin设为一正的小数;输入训练样本对,计算各层输出;计算网络误差,设公有P对训练样本,网络对应不同的样本具有不同的误差Ep
18、,可用其中最大者或均方根为网络总误差;计算各层误差信号,计算 ;调整各层权值,计算W、V中各分量;检查是否对所有样本完成一次轮训,若pP,计数器p、q增1,返回步骤,否则转步骤;检查网络总误差是否达到精度要求,若EEmin,训练结束,否则E置0,p置1返回步骤。初始化V、M计数器q=1,p=1pP结束EEmin输入样本,计算各层输出mjXVfyTjj,2,1),(lkXWfoTkk,2,1),(计算误差lkpkpkpodE12)(P增1,q增1E=0,p=1计算各层误差信号lkooodkkkkok,2,1,)1)(mjyywlllkjkokyj,2,1,)1)(1调整各层权值mjlkywwjo
19、kjkjk,2,1,2,1,nimjxwviyjjkij,2,1,2,1,YYNNyjok和5.2.3、误差反传误差反传(BP)算法算法v标准BP算法的程序实现(批训练)采用单样本训练,每输入一个样本都要回传误差并调整权值,使整个训练的次数增加,收敛速度过慢。可以采用批处理方式,输入所有样本后,计算网络的总误差E总,然后根据总误差计算各层的误差信号并调整权值。采用批训练方式,在样本数较多时,收敛速度快于单样本训练。初始化V、M计数器q=1,p=1pP结束EEmin输入第一对样本计算误差PplkkkpodE112)(21P增1E=0,p=1用E计算各层误差信号YYNN计算各层输出调整各层权值q增
20、15.2.3、误差反传误差反传(BP)算法算法v 多层前馈神经网络的主要能力 非线性映射能力:只要能提供足够多的样本模式对供BP网络进行学习训练,便能误差由n维输入空间到m维输出空间的非线性映射。泛化能力:多层前馈网络训练后将非线性映射关系存储在权值矩阵中,当网络输入训练时未曾见过的非样本数据时,网络也能误差由输入空间向输出空间的正确映射。容错能力:允许输入样本中带有较大的误差甚至个别错误。v BP算法的局限性 存在平坦区域:梯度变化很小,收敛缓慢。存在多个极小点:使训练陷入局部极小点。5.2 前馈神经网络前馈神经网络 标准标准BP算法的改进算法的改进4 单层感知器单层感知器1 误差反传误差反
21、传(BP)算法算法3 多层感知器多层感知器2基于基于BP算法的多层前馈网络设计基础算法的多层前馈网络设计基础55.2.4、标准标准BP算法的改进算法的改进v 标准BP算法缺陷 易形成局部极小而得不到全局最优;训练次数多使得学习效率低,收敛速度慢;隐节点的选取缺乏理论指导;训练时学习新样本有遗忘旧样本的趋势。5.2.4、标准标准BP算法的改进算法的改进v 3种常用的改进方法 增加动量项标准BP算法调整权值时,没有考虑t时刻以前的梯度方向,常使训练过程发生振荡,收敛缓慢。提出在权值调整公式中增加一动量项:即从前一次权值调整量中取出一部分叠加到本次权值调整量中,称为动量系数,一般有(0,1)。动量项
22、反映了以前积累的调整经验,对于t时刻的调整起阻尼作用。自适应调节学习率学习率在标准BP算法中定为常数,而在实际应用中,很难确定一个从始至终都合适的最佳学习率。在平坦区域太小会使训练次数增加,因而希望增大值;而在误差变化剧烈的区域,太大会因为调整量过大而夸过较窄的“坑凹”处,使训练出现振荡,反而增加迭代次数。因此在训练过程中采用自适应的学习率,使其该大时增大,该小时减小:设一初始学习率,若经过一批次权值调整后使总误差E总,则本次调整无效,且=(1)。)1()(tWXtW5.2.4、标准标准BP算法的改进算法的改进v 3种常用的改进方法(续)引入陡度因子权值调整存在平坦区域是因为神经元输出进入到转
23、移函数的饱和区。如果调整进入平坦区后,设法压缩神经元的净输入,使其输出退出转移函数的饱和区,就可以改变误差函数的形状,从而使调整脱离平坦区。在原转移函数中引入一个陡度因子:当发现E接近零而d-o仍较大时,可判断已进入平坦区,此时令1;当退出平坦区后,再令=1。应用结果表明,该方法对于提高BP算法的收敛速度十分有效。neteo115.2 前馈神经网络前馈神经网络基于基于BP算法的多层前馈网络设计基础算法的多层前馈网络设计基础5 单层感知器单层感知器1 误差反传误差反传(BP)算法算法3 标准标准BP算法的改进算法的改进4 多层感知器多层感知器25.2.55.2.5、基于基于BPBP算法的多层前馈
24、神经网络设计基础算法的多层前馈神经网络设计基础v 神经网络的开放设计方面至今还没有一套完善的理论作为指导。应用中主要采用的设计方法是,在充分了解待解决问题的基础上将经验和试探相结合,通过多次改进性实验,最终选出一个较好的设计方案。v1、网络信息容量与训练样本数 多层前馈网络的分类能力与网络的信息容量相关。如用网络权值和阈值总数nw表征网络信息容量,研究表明,训练样本数P与给定的训练误差之间应满足以下匹配关系:v2、训练样本集的准备 输入输出量的选择:输出量代表系统要实现的功能目标;输入量必须选择对输出影响大且能够检测或提取的变量。输入量的提取与表示:连续型和离散型。输出量的表示 输入输出数据的
25、预处理 训练集的设计:(1)训练样本数的确定。经验规则:训练样本数是网络连接权总数的510倍。(2)样本的组织与选择。样本类别均衡,尽量使每个类别数量大致相同,另外样本的输入顺序应将不同类别样本交叉输入。wnP 5.2.55.2.5、基于基于BPBP算法的多层前馈神经网络设计基础算法的多层前馈神经网络设计基础v3、初始权值的设计 网络权值的初始化对缩短网络的训练时间至关重要。神经元的转移函数都是关于零点对称的,如果每个的节点的净输入均在零点附近,则其输出均处在转移函数的中点。这个位置不仅远离转移函数的饱和区,而且是其变化最灵敏的区域,必然使网络的学习速度较快。为了使各节点的初始净输入在零点附近
26、,有两种方法:一是使初始权值足够小;另一种方法是使初始值为1和1的权值数相等。应用中对隐层权值可采用第一种方法,而对输出层可采用第二种方法。5.2.55.2.5、基于基于BPBP算法的多层前馈神经网络设计基础算法的多层前馈神经网络设计基础v4、多层前馈网络结构设计 网络的训练样本确定后,网络的输入层节点数和输出层节点数便确定,多层前馈网络的结构设计主要是解决隐层数和隐节点数的问题。隐层数的设计理论分析证明,具有单隐层的前馈网络可以映射所有连续函数,只要当学习不连续函数时,才需要两个隐层。在设计多层前馈网时,先考虑一个隐层,当一个隐层的节点数很多仍不能改善网络性能时,才考虑增加一个隐层。隐节点数
27、的设计隐节点的作用是从样本中提取并存储其内在规律。隐节点数量太少,网络不足以概括和体现训练集中的样本规律;隐节点数量过多,又可能把样本中非规律性的内容如噪声也学会记牢,反而降低了泛化能力,而且还会增加训练时间。确定最佳隐节点数常用试凑法,先设置较少的隐节点,逐渐增加隐节点数,用同一样本集进行训练,从中确定网络误差最小时对于的隐节点数。常用一些经验公式对隐节点数进行估计,可作为试凑法的初始值。nlmmlnmn2log其中m为隐层节点数,n为输入层节点数,l为输出节点数,为110之间的常数。5.2.55.2.5、基于基于BPBP算法的多层前馈神经网络设计基础算法的多层前馈神经网络设计基础v5、网络
28、训练与测试 训练时对所有样本正向运行一轮并反向修改权值一次称为一次训练。在训练过程中要反复使用样本集数据,但每一轮最好不要按固定的顺序取数据。通常训练一个网络需要成千上万次。网络的性能好坏主要看其是否具有很好的泛化能力。测试网络性能的方法一般为,将收集到的可用样本随机的分为两部分:一部分作为训练集,另一部分作为测试集。在隐节点数一定的情况下,存在一个最佳训练次数。训练过程中,将训练和测试交替进行,每训练一次记录一次训练均方误差,然后保持网络权值不变,用测试数据正向运行网络,记录测试均方误差,绘制均方误差曲线,在某一训练次数之前,随着训练次数的增加,两条曲线同时下降,当超过这个训练次数时,训练误差继续减小而测试误差则开始上升。该训练次数即为最佳训练次数。在此前停止训练称为训练不足,在此之后则称训练过度。训练数据测试数据训练次数均方误差Click to edit company slogan.30