机器学习大作业_第1页
机器学习大作业_第2页
机器学习大作业_第3页
机器学习大作业_第4页
机器学习大作业_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

机器学习大作业RevisedonNovember25,2020题目:机器学习授课老师:韩红基于BP神经网络的非线性函数拟合摘要:BP(BackPropagation)神经网络是1986年由Rumelhart和McCelland提出的,它是一种误差按反向传播的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP神经网络具有非常强的非线性映射能力,能以任意精度逼近任意连续函数,因此在人工智能的许多领域都得到了广泛的应用。通常,BP算法是通过一些学习规则来调整神经元之间的连接权值,在学习过程中,学习规则以及网络的拓扑结构不变。然而一个神经网络的信息处理功能不仅取决于神经元之间的连接强度,而且与网络的拓扑结构(神经元的连接方式)、神经元的输入输出特性和神经元的阈值有关,因而神经网络模型要加强自身的适应和学习能力,应该知道如何合理地自组织网络的拓扑结构,知道改变神经元的激活特性以及在必要时调整网络的学习参数等。1BP神经网络概述BP神经网络是一种多层前馈神经网络,该网络的主要特点是信号前向传递,误差反向传播。在前向传递中,输入信号从输入层经隐含层逐层处理,直至输出层。每一层的神经元状态只影响下一层神经元状态。如果输出层得不到期望输出,则转入反向传播,根据预测误差调整网络权值和阈值,从而使BP神经网络预测输出不断逼近期望输出。BP神经网络的拓扑结构如图图1中,X1,X2,…,Xn是BP神经网络的输入值,Y1,Y2,…,Ym是BP神经网络的预测值,3和3为BP神经网络权值。从图2可以看出,BP神经网络可以看成一个ijjk非线性函数,网络输入值和预测值分别为该函数的自变量和因变量。当输入节点数为n,输出节点数为m时,BP神经网络就表达了从n个自变量到m个因变量的函数映射关系。2主要用途BP网络主要用于:函数逼近:用输入矢量和相应的输出矢量训练网络逼近某个函数;模式识别:用一个特定的输出矢量将它与输入矢量联系起来;分类:把输入矢量以所定义的合适的方法进行分类;数据压缩:减少输出矢量维数以便于传输或存储。在人工神经网络的实际工程应用中,特别在自动控制领域中,大多数神经网络模型是采用BP网络或它的变化形式,它也是前向网络的核心部分,体现了人工神经网络最精华的部分。算法的数学描述:三层前馈网中,输入向量为:X=(x,xxx)T;隐层输入向量为:12in=(y,yy,…y)t;输出层输出向量为:O=(o,o,…,o,...o)t;期望输出12jm12kl向量为:d=(d,d,...d,...d)T。输入层到隐层之间的权值矩阵用V表示,12kl=(v,v,…v,…v)Y,其中列向量v.为隐层第j个神经元对应的权向量;隐层12jmj到输出层之间的权值矩阵用W表示,W=(w,w,...w,…w),其中列向量w为12klk输出层第k个神经元对应的权向量。对于输出层,有对于隐层,有f(x)具有连续、可导的特点,且有f'(x)=f(x)[l-f(x)],以上共同构成了三层前馈网了的数学模型。当网络输出和期望输出不相等时,存在输出误差E如下:将以上误差定义式展开至隐层,有进一步展开至输入层,有由上式可以看出,网络输入误差是两层权值W和V的函数,因此调整权值可以改变误差E。显然,调整权值的原则是使误差不断的减小,因此应使权值的调整量与误差的负梯度成正比,即:式中负号表示梯度下降,常数HW(0,1)表示比例系数,在训练中反映了学习速率。容易看出,BP学习算法中,各层权值调整公式形式上都是一样的,均有3个因素决定,即:学习速率、本层误差信号和本层输入信号X/Y。其中输出层误差信号同网络的期望输出与实际输出之差有关,直接反映了输出误差,而各隐层的误差信号与前面各层的误差信号都有关,是从输出层开始逐层反传过来的。在建立BP神经网络时,首先要根据应用的问题确定网络结构,即选择网络的层数和隐层节点数。由于本例中实验数据较少,采用最基本的两层网络就可以很好地逼近未知函数了。隐层节点数的选择在神经网络的应用中一直是一个复杂的问题:隐层节点数过多,将导致网络的预测能力不够,并容易导致网络陷入局部极小值难以跳出;隐层节点数过少,网络训练不出来,或不能识别以前没有的样本,且容错性差。在设计中,比较实际的做法是通过对不同神经元数的网络进行训练、对比,找出网络效果最好时的隐层节点数。在本例中,经大量的训练、对比,最终取中间隐层节点数为10。在建立模型的过程中也发现了一些问题,主要有两个方面:一是样本数过少,很难精确反映出待建模型的特性,而且容易导致网络在学习过程中难以退出局部极小值。解决的办法是在实验部分增加实验点以增加训练样本数。二是BP网络本身存在的一些问题,主要表现在收敛速度很慢,有时在局部极小值收敛,不能找到全局极小值。针对这样的情况,可以考虑采用其他算法如:模拟退火、遗传算法等,以保证网络能收敛到全局极小值。神经网络的结构设计是一个非常重要但却十分复杂的问题。网络的结构设计主要指对于给定的任务:①如何选择网络层数因为网络的输入和输出层易于确定,所以这一问题实际上就是隐层应该为几层;②每层应选多少神经元;③神经元的传递函数应如何选定。所有这些都是使用神经网络时必须加以解决的问题。但目前对此并没有一个确切的答案,MATLAB下的神经网络工具箱也不例外。综合以往的研究成果,可以得到BP网络结构的一些结论:①对于3层(1个输入层、1个隐层和1个输出层)的BP网络,只要其隐层的神经元数可选,就可以任意精度逼近任何连续函数(Kolmogorov定理);②随着所逼近函数的波动性增加,隐层的神经元数也应适当增加;③随着学习样本数的增加,隐层神经元数也应增加;④增加隐层数目可以减少各隐层的神经元数,减少陷入局部极小的机会;⑤随着网络复杂程度和学习样本数的增加,其收敛速度变慢,所以网络的规模不应随意增大。四、BP网络实现1.初始化初始化隐层的权值向量和隐层到输出层的权值矩阵。确定每层的学习速率。设定最小误差率以及网络的最大迭代次数。生成sin(x)的训练样本集。测试数据:P2=*pi:*pi:2*pi;输入数据:P1=*pi:*pi:2*pi;2.生成并训练BP网络产生训练样本集。然后依据实验原理初始化并计算隐层的权值向量,以及隐层到输出层权值矩阵。根据计算出来的实际输出和目标输出做比较,得到误差,从而计算出输出层和隐层的权值变化,并反向调整输出层和隐层的权值大小,直到满足条件退出训练。将计算出的误差率与初始化设定的最小误差率进行比较,当误差率小于或者迭代次数达到1000次时,退出BP网络。3.实验结果:前两张图为最大训练次数为4000时得到的输入输出数据曲线和学习误差曲线以下两张图像为最大训练次数为40000时得到的输入输出数据曲线和学习误差曲线由以上图像可知,(1)BP网络迭代的前几步,错误率下降的趋势非常的强,当错误率下降到一定时候,就几乎不再变化,总体来说,达到了函数逼近的目的。(2)由以上通过改变最大训练次数的变化导致的图像变化可知,训练次数从4000到40000时,函数逼近效果明显变好,学习误差明显更快的减小。MATLAB的实现程序:打开commandSamNum=100;%训练样本TestSamNum=100;%测试样本数HiddenUnitNum=10;%隐节点数InDim=1;%样本输入维数OutDim=1;%样本输出维数%根据目标样本获得样本输入输出SamIn=*pi:*pi:2*pi;SamOut=sin(SamIn);TestSamIn=*pi:*pi:2*pi;TestSamOut=sin(TestSamIn);figureholdongridplot(TestSamIn,TestSamOut,'k--')xlabel('Inputx');ylabel('Outputy');MaxEpochs=50000;%最大训练次数lr=;%前期学习率E0=1;%前期目标误差W1=*rand(HiddenUnitNum,InDim);%输入层到隐层的权值B1=*rand(HiddenUnitNum,1);%隐节点初始偏移W2=*rand(OutDim,HiddenUnitNum);%隐层到输出层的初始权值B2=*rand(OutDim,1);%输出层初始偏移W1Ex=[W1B1]W2Ex=[W2B2]SamInEx=[SamIn'ones(SamNum,1)]'ErrHistory=[];fori=1:MaxEpochs%正向传播网络输出HiddenOut=logsig(W1Ex*SamInEx);HiddenOutEx=[HiddenOut'ones(SamNum,1)]'NetworkOut=W2Ex*HiddenOutEx;%停止学习判断Error=SamOut-NetworkOut;SSE=sumsqr(Error)%记录每次权值调整后的训练误差ErrHistory=[ErrHistorySSE];switchround(SSE*10)case4lr=;case3lr=;case2lr=;case1lr=;case0break;otherwiselr=;end%计算方向传播误差Delta2=Error;Delta1=W2'*Delta2.*HiddenOut.*(1-HiddenOut);%计算权值调节量dW2Ex=Delta2*HiddenOutEx';dW1Ex=Delta1*SamInEx';%权值调节W1Ex=W1Ex+lr*dW1Ex;W2Ex=W2Ex+lr*dW2Ex;%分离隐层到输出层的初始权值,以便后面使用W2=W2Ex(:,1:HiddenUnitNum);end%显示计算结果iW1=W1Ex(:,1:InDim)B1=W1Ex(:,InDim+1)W2B2=W2Ex(:,1+HiddenUnitNum);%测试TestHiddenOut=logsig(W1*TestSamIn+repmat(B1,1,TestSamNum));TestNNOut=W2*TestHiddenOut+repmat(B2,1,TestSamNum);plot(TestSamIn,TestNNOut,'r*')%绘制学习误差曲线figureholdongrid[xx,Num]=size(ErrHistory);plot(1:Num,ErrHistory,'k-');五、实验结论通过编程实现使用BP网络对函数进行逼近,对BP网络的信号和误差传递的原理以及隐层、输出层权值调整的规则有了充分的理解和认识。BP网络是一个强大的工具,它是应用最为广泛的网络。用于文字识别、模式分

温馨提示

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

评论

0/150

提交评论