BP神经网络详解

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

BP神经网络模型与学习算法人工神经网络神经元是人脑信息处理系统的最小单元,大脑处理信息的结果是由各神经元状态地整体效果确定的,生物神经网络中各个神经元综合接收到的多个激励信号呈现出兴奋或抑制状态,神经元之间连接强度根据外部机理信息做自适应变化。人工神经网络是基于生物神经元网络机制提出的一种计算结构,是生物神经网络的某种模拟,神经元是这一网络的“节点”,即“处理单元”。概述Rumelhart,McClelland于1985年提出了BP网络的误差反向后传BP(BackPropagation)学习算法BP神经网络是一种利用误差反向传播训练算法的前馈性网络,是迄今为止应用最为广泛的神经网络,J.McClellandDavidRumelhartBP网络目前广泛应用于函数逼近、模式识别、数据挖掘、系统辨识与自动控制等领域BP算法基本原理实质是求取网络总误差函数的最小值问题。利用输出后的误差来估计输出层的直接前导层的误差,再用这个误差估计更前一层的误差,如此一层一层的反传下去,就获得了所有其他各层的误差估计。具体学习算法包括两大过程:其一是输入信号的正向传播过程,其二是输出误差信号的反向传播过程BP网络的问题1.网络的训练易陷入局部极小值2.网络的学习收敛速度缓慢3.网络的结构难以确定4.网络的泛化能力不能保证BP神经网络的结构复杂性、训练样本的数量和质量、网络的初始权值、训练时间、目标函数的复杂性和先验知识等因素都对神经网络的泛化能力有一定影响。这也影响了BP神经网络的进一步发展和应用BP神经网络模型三层BP网络BP神经网络模型激活函数必须处处可导一般都使用S型函数使用S型激活函数时BP网络输入与输出关系输入输出1122...nnnetxwxwxw1f()1enetynetBP神经网络模型输出的导数211f'()(1)1e(1e)-netnetnetyy根据S型激活函数的图形可知,对神经网络进行训练,应该将net的值尽量控制在收敛比较快的范围内BP网络的标准学习算法学习的过程:神经网络在外界输入样本的刺激下不断改变网络的连接权值,以使网络的输出不断地接近期望的输出。学习的本质:对各连接权值的动态调整学习规则:权值调整规则,即在学习过程中网络中各神经元的连接权变化所依据的一定的调整规则。BP网络的标准学习算法-算法思想学习的类型:有导师学习核心思想:将输出误差以某种形式通过隐层向输入层逐层反传学习的过程:信号的正向传播误差的反向传播将误差分摊给各层的所有单元---各层单元的误差信号修正各单元权值BP网络的标准学习算法-学习过程正向传播:输入样本---输入层---各隐层---输出层判断是否转入反向传播阶段:若输出层的实际输出与期望的输出(教师信号)不符误差反传误差以某种形式在各层表示----修正各层单元的权值网络输出的误差减少到可接受的程度进行到预先设定的学习次数为止BP网络的标准学习算法网络结构输入层有n个神经元,隐含层有p个神经元,输出层有q个神经元变量定义输入向量;隐含层输入向量;隐含层输出向量;输出层输入向量;输出层输出向量;期望输出向量;12,,,nxxxx12,,,phihihihi12,,,phohohoho12,,,qyiyiyiyi12,,,qyoyoyoyo12,,,qdddodBP网络的标准学习算法输入层与中间层的连接权值:隐含层与输出层的连接权值:隐含层各神经元的阈值:输出层各神经元的阈值:样本数据个数:激活函数:误差函数:ihwf()howhb1,2,kmob211(()())2qoooedkyokBP网络的标准学习算法第一步,网络初始化给各连接权值分别赋一个区间(-1,1)内的随机数,设定误差函数e,给定计算精度值和最大学习次数M。第二步,随机选取第个输入样本及对应期望输出k12()(),(),,()nkxkxkxkx12()(),(),,()qkdkdkdkodBP网络的标准学习算法第三步,计算隐含层各神经元的输入和输出1()()1,2,,nhihihihikwxkbhp()f(())1,2,,hhhokhikhp1()()1,2,pohohohyikwhokboq()f(())1,2,ooyokyikoqBP网络的标准学习算法第四步,利用网络期望输出和实际输出,计算误差函数对输出层的各神经元的偏导数。ohoohoeeyiwyiw(())()()phohoohhhohowhokbyikhokww211((()()))2(()())()(()())f(())()qoooooooooooodkyokedkyokyokyiyidkyokyikk()okBP网络的标准学习算法()()oohhoohoeeyikhokwyiw1()()(())()()hihhihnihihhiiihiheehikwhikwwxkbhikxkww第五步,利用隐含层到输出层的连接权值、输出层的和隐含层的输出计算误差函数对隐含层各神经元的偏导数。()hk()okBP网络的标准学习算法21212111((()()))()2()()()1((()f(())))()2()()1(((()f(())))()2()()qoohohhhqoohohhqpohohohohhhdkyokehokhikhokhikdkyikhokhokhikdkwhokbhokhokhik11()(()())f(())()(())f(())()qhooohoohqohohhohokdkyokyikwhikkwhikkBP网络的标准学习算法第六步,利用输出层各神经元的和隐含层各神经元的输出来修正连接权值。1()()()()()hoohhoNNhohoohewkkhok()ok()howkBP网络的标准学习算法第七步,利用隐含层各神经元的和输入层各神经元的输入修正连接权。()hk1()()()()()()()hihhiihhihNNihihhieehikwkkxkwhikBP网络的标准学习算法第八步,计算全局误差第九步,判断网络误差是否满足要求。当误差达到预设精度或学习次数大于设定的最大次数,则结束算法。否则,选取下一个学习样本及对应的期望输出,返回到第三步,进入下一轮学习。2111(()())2qmookoEdkykmBP网络的标准学习算法BP算法直观解释情况一直观表达当误差对权值的偏导数大于零时,权值调整量为负,实际输出大于期望输出,权值向减少方向调整,使得实际输出与期望输出的差减少。whohoewe0,此时Δwho0BP网络的标准学习算法BP算法直观解释情况二直观表达当误差对权值的偏导数小于零时,权值调整量为正,实际输出少于期望输出,权值向增大方向调整,使得实际输出与期望输出的差减少。hoewe0,此时Δwho0whoBP神经网络收敛速度阈值、学习率、隐层层数、隐层节点个数等对神经网络的学习速度(收敛速度)都有较大的影响。本文在BP网络的基础上,研究讨论了各个参数对收敛速度的影响,以减小选取网络结构和决定各参数值的盲目性,达到提高收敛速度的目的。(1)初始权值和阈值对收敛速度的影响初始权值和阈值要选得小一些。选择隐层节点数的原则是尽量使网络结构简单,运算量小。从实验数据分析可知:当节点数太少时,每个节点负担过重,迭代而有的选择却要迭代几千次,或者更多,甚至不收敛。(2)学习率对收敛速度的影响学习率的设置对BP算法的收敛性有很大的影响。学习率过小,误差波动小,但学习速度慢,往往由于训练时间的限制而得不到满意解;学习率过大,学习速度加快,会引起网络出现摆动现象,导致不收敛的危险。因此,选择一个合适的学习率是BP算法的一个较关键的问题。学习率的主要作用是调整权值、阈值的修正量。一般情况下,倾向于选取较小的学习速率以保证系统的稳定性。学习速率的选取范围在0.01-0.8之间。(3)隐层层数的选择对收敛速度的影响增加隐层层数可以提高训练精度,但是,通过实验发现,用两个隐层比用一个隐层的收敛速度还要慢。(4)隐层节点数对收敛速度的影响目前,对隐层节点数的设定缺乏理论指导,但是实验研究表明,隐含节点数增加会影响收敛速度。BP神经网络设计步骤BP网络的设计主要包括输入层,隐层,输出层及各层之间的传输函数几个方面。(1)网络层数大多数通用的神经网络都预先预定了网络的层数,而BP网络可以包含不同的隐层。对多层BP神经网络,隐层层数至少为1层或1层以上,每个隐层的神经元个数至少为1个或1个以上,否则与多层网络的命题矛盾而不成立。(2)输入层的节点数网络的输入个数应等于应用问题的输入数,MATLAB的BP网络的建立是通过函数newff或newcf实现的.(3)网络数据的预处理预处理方法有归一化处理、标准化处理和主成分分析。常采用的是归一化处理,即将输入、输出数据映射到[-1,1]范围内,训练结束后再反映射到原数据范围。(4)输出层的节点数输出层节点数取决于两个方面,输出数据类型和表示该类型所需要的数据大小。(5)隐层的节点数i.根据经验,可以参考以下公式进行设计:𝐦=𝒏+𝒍+𝜶m=lbn𝒎=𝒏𝒍式中:m为隐层节点数;n为输入节点数;l为输出节点数;𝜶为1~10之间的常数。ii.改变m,用同一样本集训练,从中确定网络误差最小时对应的隐层节点数。(6)传输函数BP网络中传输函数常采用S(sigmoid)型函数.在某些特定情况下,还可能采用纯线性(Pureline)函数.(7)训练方法及其参数选择net.trainParam.show=..;%显示训练结果的间隔步数net.trainParam.epochs=..;%最大训练步数net.trainParam.goal=..;%训练目标误差net.trainParam.lr=..;%学习速率,Marquardt调整参数net.trainParam.mu_dec=..;%学习系数的下降因子net.trainParam.mu_inc=..;%学习系数的上升因子net.trainParam.mu_max=..;%学习系数的最大值net.trainParam.min_grad=..;%训练中最小允许梯度值BP神经网络学习算法的MATLAB实现MATLAB中BP神经网络的重要函数和基本功能函数名功能newff()生成一个前馈BP网络tansig()双曲正切S型(Tan-Sigmoid)传输函数purelin()纯线性函数传输函数traingd()梯度下降BP训练函数BP神经网络学习算法的MATLAB实现MATLAB中BP神经网络的重要函数和基本功能newff()功能建立一个前向BP网络格式net=newff(PR,[S1S2...SN1],{TF1TF2...TFN1},BTF,BLF,PF)说明net为创建的新BP神经网络;PR为网络输入取向量取值范围的矩阵;[S1S2…SNl]表示网络隐含层和输出层神经元的个数;{TFlTF2…TFN1}表示网络隐含层和输出层的传输函数,默认为‘tansig’;BTF表示网络的训练函数,默认为‘trainlm’;BLF表示网络的权值学习函数,默认为‘learngdm’;PF表示性能数,默认为‘mse’。BP神经网络学习算法的MATLAB实现MATLAB中BP神经网络的重要函数和基本功能tansig()功能正切sigmoid激活函数格式a=tansig(n)说明双曲正切Sigmoid函数把神经元的输入范围从

1 / 41
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功