神经网络学习.doc_第1页
神经网络学习.doc_第2页
神经网络学习.doc_第3页
神经网络学习.doc_第4页
神经网络学习.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向MATLAB工具箱的神经网络理论与应用 一个具有r个输入和一个隐含层的神经网络模型如图: 感知器和自适应线性元件的主要差别在激活函数上:前者是二值型的,后者是线性的。BP网络具有一层或多层隐含层,BP网络的激活函数必须是处处可微的,BP网络经常使用的是S型的对数或正切激活函数和线性函数。由于激活函数是连续可微的,它以严格利用梯度法进行推算,它的权值修正的解析式十分明确,其算法被称为反向传播法,也称BP算法。BP网络的S型激活函数如下: 因为S型函数具有非线性放大系数功能,它可以把输入从负无穷大到正无穷大的信号,变换成-1到1之间输出。在一般情况下,均是在隐含层采用S型函数,输出层采用线性激活函数。1 BP网络的学习规则 BP网络的产生归功于BP算法的获得。BP算法是一种监督式的学习算法。其主要思想为:对于q个输入学习样本:P1,P2.,已知与其对应的输出样本为T1,T2。学习的目的是用网络的实际输出A1,A2与目标矢量T1,T2之间的误差来修改其权值。使A与期望的T尽量可能地接近;既使网络输出层的误差平方和达到最小。它是通过连续不断的在相对于误差函数斜率下降的方向上计算网络权值和偏差的变化而逐渐逼近目标。每一次权值和偏差的变化都与网络误差的影响成正比,并以反向传播的方式传递到每一层的。 BP算法由两部分组成:信息的正向传递与误差的反向传播。在正向传播过程中,输入信息从输入经隐含层逐层计算传向输出层,每一层神经元的状态只影响下一层神经元的状态。如果在输出层没有得到期望的输出,则计算输出层的误差变化值,然后转向反向传播,通过网络将误差信号沿原来的连接通路反传回来修改各层神经元的权值直至达到期望目标。1.1 信息的正向传递隐含层中第i个神经元的输出为: 输出层中第k个神经元的输出为 定义误差函数为:1.2 利用梯度下降法求权值变化及误差的反向传播1) 输出层的权值变化对从第i个输入到第k个输出的权值有:其中同理2) 隐含层权值变化对从第j个输入到第i个输出的权值,有:其中:同理可得Matlab工具箱中:1) 对于1.1中表示的隐含层输出,若采用对数S型激活函数,则用函数logsig.m;若采用双曲正切S型激活函数,则用函数tansig.m。2) 对于1.1中表示的输出层输出,若采用线性激活函数有purelin.m与之对应3) 对于1.1中的误差函数,可用函数sumsqr.m求之;4) 有learnbp.m函数专门求1.2中所表示的输出层以及隐含层中权值与偏差的变化量;5) 1.2中的误差变化可用函数deltalin.m、deltatan.m、deltalog.m来解决。它们分别用于线性层、双曲正切层和对数层。误差反向传播的流程图与图形解释2 BP网络的训练过程为了训练一个BP网络,需要计算网络加权输入矢量以及网络输出和误差矢量,然后求得误差平方和。当所训练矢量的误差平方和小于误差目标,训练则停止,否则在输出层计算误差变化。且采用反向传播学习规则来调整权值,并重复此过程。当网络完成训练后,对网络输入一个不是训练集合中的矢量,网络将以泛化方式给出输出结果。首先需要根据输入矢量P与目标矢量T来选定设计的神经网络的结构,包括以下内容1) 网络的层数;2)每层的神经元数;3)每层的激活函数训练步骤为:1)用小的随机数对每一层的权值w和b初始化,以保证网络不被大的加权输入饱和;并进行以下参数的设定或初始化:a%期望误差最小值err_goal。 b%最大循环次数max_epoch。 c%修正权值的学习速率lr,一般情况下lr=0.010.07;d%从1开始的循环训练: for epoch=1:max_epoch;2)计算网络各层输出矢量A1和A2以及网络误差E;3)计算各层反转的误差变化D2和D1并计算各层权值的修正值以及新权值4)再次计算权值修正后误差平方和:5)检查SSE是否小于err_goal,若是,则训练结束;否则继续。以上就是BP网络在MATLAB中的训练过程。这个训练过程可以使用trainbp.m来完成。它的使用同样只需要定义有关函数;显示间隔次数,最大循环次数,目标误差,以及学习速率。而调用后返回训练后权值,循环总数和最终误差。函数右端的F为网络的激活函数名称。 3 BP网络的设计准则3.1 网络的层数理论上已经证明:具有偏差和至少一个S型隐含层加上一个线性输出层的网络能够逼近任何有理函数。这实际上已经给了我们一个基本的设计BP网络的准则。增加层数主要可以更进一步的降低误差,提高精度,但同时也使网络复杂化,从而增加了网络权值的训练时间。而误差精度的提高实际上也可以通过增加隐含层中的神经元数目来获得,其训练效果也比增加层数更加容易观察和调整。所以一般情况下,应优先考虑增加隐含层中的神经元数。3.2 隐含层的神经元数网络训练精度的提高,可以通过采用一个隐含层,而增加其神经元数的方法来获得。而在这结构实现上,要比增加更多的隐含层要简单得多。选取多少个隐含层节点才合适在理论上并没有一个明确的规定。在具体设计时比较实际的做法是通过对不同神经元数进行训练对比,然后适当地加上一点余量。 评价一个网络设计的好坏;首先是它的精度,再一个就是训练时间。时间包含有两层:一个是循环次数,二是每一次循环中计算所花费的时间。1) 神经元太少时,网络不能很好的学习,需要训练的次数很多,精度也不高。2) 一般而言隐含层神经元数太多会导致训练时间增加,在进行函数逼近时可能导致不协调拟合。3.3 初始权值的选取由于系统是非线性的,初始值对于学习是否达到局部最小、是否能够收敛以及训练时间的长短的关系很大。如果初始权值太大,使得加权后的输入和n落在了S型激活函数的饱和区导致其导数非常小,会使得调节过程几乎停顿下来。所以,一般总是希望经过初始加权后的每个神经元的输出值都接近于零,这样可以保证每个神经元的权值都能够在它们的S型激活函数变化最大处进行调节。Matlab中可采用函数nwlog.m或nwtan.m来初始化隐含层权值W1和B1。3.4 学习速率学习速率决定每一次循环训练中所产生的权值变化量。大的学习速率可能导致系统的不稳定;但小的学习速率导致较长的训练时间,可能收敛很慢,不过不能保证网络的误差值不跳出误差表面的低谷而最终趋于最小误差值。一般情况下学习速率的选取范围在0.010.8之间。3.5 期望误差的选取在设计网络的训练过程中,期望误差值也应当通过对比训练后确定一个合适的值,这个所谓的“合适”,是相对于所需要的隐含层节点数来确定,因为较小的期望误差值时要靠增加隐含层的节点,以及训练时间来获得的。一般情况下,作为对比可同时对两个不同期望误差值的网络进行训练,最后通过综合因素的考虑来确定采用其中一个网络。P152面处对字母识别的举例分析。补充:W-H学习规则 采用W-H学习规则可以用来训练一层网络的权值和偏差使之线性地逼近一个函数式而进行模式联想。定义一个线性网络的输出误差函数为: 从式中可以看出线性网络具有抛物线型误差函数所形成的误差表面,所只有一个误差最小值,通过W-H学习规则来计算权值和偏差的变化,并使网络误差的平方和最小。 我们的目的是通过调节权矢量,使E(W,B)达到最小值。所以在给定E(W,B)后,利用W-H学习规则修正权矢量和偏差矢量,使E(W,B)从误差空间的某一点开始,沿着E(W,B)的斜面向下滑行。根据梯度下降法,权矢量的修正值正比于当前位置上E(W,B)的梯度,对于第i个输出节点有或表示为这里定义为第i个输出节点的误差。上式被称为W-H学习规则,又叫规则,或为最小均方算法(LMS)。W-H学习规则的权值变化量正比于网络的输出误差及网络的输入矢量,不需要求到处,所以算法简单;又具有收敛速度快和精度高的优点。其中为学习速率。在一般的实际运用中,实践表明,通常取一接近1的数。matlab人工神经网络工具箱中的BP工具函数及其应用BP算法的基本思想是:对于一个输入样本,经过权值、阈值和激励函数运算后,得到一个输出,然后让它与期望的样本进行比较,若有偏差,则从输出开始反向传播该偏差,进行权值、阈值调整,使网络输出逐渐与希望输出一致。BP算法由四个过程组成:输入模式由输入层经过中间层向输出层的“模式顺传播”过程,网络的希望输出与网络的实际输出之间的误差信号由输出层经过中间层向输入层逐层修正连接权的“误差逆传播”过程,由“模式顺传播”与“误差逆传播”的反复交替进行的记忆训练过程,网络趋向于收敛即网络的全局误差趋向极小值的“学习收敛”过程。采用BP神经网络的车牌字符识别方法研究 通常神经网络字符识别系统由预处理,特征提取和神经网络分类器组成。预处理就是将原始数据中的无用信息删除、平滑、二值化和进行幅度归一化等。神经网络字符识别系统分为两大类:1)有特征提取部分的:这一类系统实际上是传统方法与神经网络方法技术的结合,这种方法可以充分利用人的经验来获取模式特征以及神经网络分类能力来识别字符。特征提取必须能反映整个字符的特征。但它的抗干扰能力不如第二类。2)无特征提取部分的:省去特征抽取,整个字符直接作为神经网络的输入(也被称为字符网格特征),这种方式下,系统的神经网络结构的复杂度大大增加了,输入模式维数的增加导致了网络规模的扩大,此外神经网络需要自己消除变形的影响,但是网络的抗干扰性能好,识别率高。常用的车牌识别神经网络matlab代码.基于BP神经网络车牌字符识别的研究由于字符与数字相对简单,所以在大小归一化时取的像素矩阵,因此输入层的节点为35,由于识别的字符与数字只有36个,故输出层的节点数为36,权值初始化为(-1,1)之间的随机数,期望误差为0.01,隐层节点设为12,隐层和输出层均采用logsig函数。createnn(P,T) /创建字符识别的BP神经网络及训练函数function net=createnn(P,T)alphabet=P; /网络输出targets=T; /正确输出net=newff(minmax(alphabet),S1 S2,logsig logsig,traingdx); /创建BP神经网络net.LW2,1=net.LW2,1*0.01; /层权重net.b2=net.b2*0.01; /偏置向量net.performFcn=sse; /性能函数net.trainParam.goal=0.01; /训练目标误差net.trainParam.show=20; /显示训练结果的间隔步数net.trainParam.epochs=5000; /最大训练步数net.trainParam.mc=0.7; /动量因子P=alphabet;T=targets;net,tr=train(net,P,T); /对BP神经网络进行训练 字符的特征提取方法基于改进特征提取的BP神经网络车牌识别对各个被独立提取出来的字符进行二值化和细化,消除冗余信息,使图像变得适合进行特征提取。粗网格特征提取使用均匀粗网格特征将标准化图像划分成固定或有弹性的网格,求出每个网格中的平均灰度或黑像素点的个数。从而得到维数为网格数目的特征向量。此方法能够对字符进行大致分类。若目标字符为汉字,可以采用非均匀的网格划分,把每个小区域点阵中的1作为特征数据。外围特征提取为了反映字体的轮廓,需要提取字符的外围特征,步骤是把归一化的字符点阵图像进行等分,然后计算每行(或某些行)从图像左边缘至第一项由白变黑的长度,最后计算其他三个边缘的特征,并进行统计。笔划密度特征提取笔划密度能够较好地反映字符的纹理特征.简单实用的笔划密度特征提取方法是:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论