BP神经网络教学课件

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

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

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

资源描述

数据挖掘——BP神经网络湖南大学工商管理学院兰秋军博士副教授内容神经网络概述BP神经网络神经网络概述导言人工神经网络是近年来得到迅速发展的一个前沿课题。神经网络由于其大规模并行处理、容错性、自组织和自适应能力和联想功能强等特点,已成为解决很多问题的有力工具。本讲对神经网络原理作简单介绍,然后介绍其在经济预测中的案例。脑神经信息活动的特征巨量并行性。信息处理和存储单元结合在一起。自组织自学习功能。神经网络研究的发展最早的研究可以追溯到20世纪40年代。1943年,心理学家McCulloch和数学家Pitts合作提出了形式神经元的数学模型。这一模型一般被简称M-P神经网络模型,至今仍在应用,可以说,人工神经网络的研究时代,就由此开始了。1949年,心理学家Hebb提出神经系统的学习规则,为神经网络的学习算法奠定了基础。现在,这个规则被称为Hebb规则,许多人工神经网络的学习还遵循这一规则。神经网络研究的发展1957年,F.Rosenblatt提出“感知器”(Perceptron)模型,第一次把神经网络的研究从纯理论的探讨付诸工程实践,掀起了人工神经网络研究的第一次高潮。20世纪60年代以后,数字计算机的发展达到全盛时期,人们误以为数字计算机可以解决人工智能、专家系统、模式识别问题,而放松了对“感知器”的研究。于是,从20世纪60年代末期起,人工神经网络的研究进入了低潮神经网络研究的发展1982年,美国加州工学院物理学家Hopfield提出了离散的神经网络模型,标志着神经网络的研究又进入了一个新高潮。1984年,Hopfield又提出连续神经网络模型,开拓了计算机应用神经网络的新途径。1986年,Rumelhart和Meclelland提出多层网络的误差反向传播(BackPropagation)学习算法,简称BP算法。BP算法是目前最为重要、应用最广的人工神经网络算法之一。自20世纪80年代中期以来,世界上许多国家掀起了神经网络的研究热潮,可以说神经网络已成为国际上的一个研究热点。生物神经元模型树突轴突神经末梢细胞体树突:细胞的输入端,接受外界的神经冲动轴突:细胞的输出端,传出神经冲动细胞体:处理神经冲动,有两种工作状态:当传入神经冲动使细胞膜电位升高到阈值(约40mV)时,进入兴奋状态产生神经冲动,由轴突输出。否则进入抑制状态,不产生输出神经元工作原理(视频)神经元模型输入信号连接权重加总函数激活函数输出ox1x2xnw2wnw1)(netfw0x0典型的激活函数0x0,0x1,)x(f阶跃函数:xf(x)0x0,x,1x1,)x(f线性函数:xf(x))xe1(1f(x)Log-Sigmoid函数:xf(x)注意该函数的导数:神经网络拓扑结构输出层隐藏层输入层o1o2om…x1x2xn………………神经网络由大量神经元互连而成,按其拓扑结构可分成:层次网络模型神经元分成若干层顺序连接,在输入层上加上输入信息,通过中间各层,加权后传递到输出层后输出,其中有的在同一层中的各神经元相互之间有连接,有的从输出层到输入层有反馈;互连网络模型任意两个神经元之间都有相互连接的关系,在连接中,有的神经元之间是双向的,有的是单向的,按实际情况决定。什么是学习?学习就是通过向有限个例子(训练样本)的学习来找到隐藏在例子背后(即产生这些例子)的规律(如函数形式)。当样本数据改变系统参数时,系统会对这些改变进行自适应或自组织的学习,在神经网络中表现为突触的改变。按突触修正假说,神经网络在拓扑结构固定时,其学习归结为连接权的变化。什么是监督?监督就是对每一个输入Xi,都假定我们已经知道它的期望输出Yi,这个Yi可以理解为监督信号,也叫“教师信号”。每一个输入Xi及其期望输出Yi,就构成了一个训练实例。监督学习与非监督学习的区别在监督学习中,假定我们知道每一输入对应的期望输出,并利用学习系统的误差,不断校正系统的行为;在非监督学习中,我们不知道学习系统的期望输出。神经网络的分类按网络结构分为:前馈网络和反馈网络;按学习方式分为:监督学习和非监督学习,也叫有导师学习和无导师学习。本讲主要论述前馈网络的监督学习法。神经网络的分类有多种方法,常用如下分类:BP神经网络简介•BP(BackPropagation)网络1985年由Rumelhart和McCelland提出•是目前应用最广泛的神经网络模型之一网络结构输出隐层输入节点计算单元•BP神经网络模型拓扑结构包括输入层(input)、隐层(hidelayer)和输出层(outputlayer)其它一些特点•层间无反馈•有监督学习•其激活函数为:•第p个样本的误差计算模型Ep=1/2×∑(tpi-Opi)2tpi第i个节点的期望输出值;Opii节点计算输出值BP学习算法思想在外界输入样本的刺激下不断改变网络的连接权值,以使网络的输出不断地接近期望的输出。两环节组成:信息的正向传递与误差的反向传播正向传播过程中,输入信息从输入层经隐含层逐层计算传向输出层,每一层神经元的状态只影响下一层神经元的状态计算输出层的误差变化值,然后转向反向传播,通过网络将误差信号沿原来的连接通路反传回来修改各层神经元的权值直至达到期望目标男25岁本科...3000元女30岁硕士...5000元如何改变网络连接权值?E=1/2×∑(ti-Oi)2tii节点的期望输出值Oii节点实际输出值要误差降低,就是要改变Oi,也就要改变wij和θi算法原理:误差修正的公式推导xj输入结点的输入输出量yi隐结点的输出Ol输出结点的输出)()(ijijijinetfxwfyjijijixwnet其中,)()(OlilililnetfyTfilililyTnet其中,权重wij权重Tli输出结点的误差:lllOtE2)(21lllnetft2))((21对Tli的偏导数:illllillllliynetfOtTnetnetfOtT)()()()(E''注意到E是多个Ol的函数,但只有一个Ol与Tli有关,因此记)()('llllnetfOt于是illiyTE也即,根据每个输出结点的值以及隐含结点的输出值,就可轻松算出误差对输出层和隐含层各结点间的权重的偏导数liy对wij的偏导数:因liljijijlillililillllxwfTftyTftOtE222)))(((21))((21)(21liijiillijwyyOOEwE注意到E是多个Ol的函数,针对某个wij,对应一个yi,它与所有Ol有关,因此)-lllOtOE(而lililllilTnetfynetnetOyO)('jiijixnetfwy)('故ljililjilillllijxnetfTxnetfTnetfOtw)()()()(E'''令)(''illilinetfT则jiijxw'E加权和权值修正ΔTli,ΔWij正比于误差函数沿梯度下降,有illiliyTTEjiijliywW'E称作学习率,用于调节学习速度的快慢BP算法总结1初始化网络的权值和偏置值2对每个训练样本重复下述过程直至满足终止条件:(3)从后向前对各隐藏层结点,计算误差)OT)(O1(Oerrjjjjjjkjkkjjjwerr)O1(Oerrjerrjjerr(2)对输出层结点,计算误差(4)更新权值及阈值jjijOerrwijijijjjerrjjj(1)从前向后计算隐藏层和输出层结点的输入和输出jjOjnetjiiijjOwnet)e1(1ojnetjj源代码分析示例MatlabC++几个问题隐藏层数及隐藏层结点数的确定若输入层和输出层采用线性转换函数,隐层采用Sigmoid转换函数,则含一个隐层的网络能够以任意精度逼近任何有理函数。确定隐层节点数的最基本原则是:在满足精度要求的前提下取尽可能紧凑的结构,即取尽可能少的隐层节点数。几个问题局部极小问题BP神经网络采用的算法,其实质是一个无约束的非线性最优化计算过程,在网络结构较大时不仅计算时间长,而且很容易限入局部极小点而得不到最优结果。解决方法:改进BP法、遗传算法(GA)和模拟退火算法,理论上成立,实际上很难实现全局极小。应用最广的是增加了冲量(动量)项的改进BP算法。其它问题判断网络模型泛化能力的好坏,主要不是看测试样本误差大小的本身,而是要看测试样本的误差是否接近于训练样本和检验样本的误差。BP神经网络学习算法的MATLAB实现MATLAB中BP神经网络的重要函数和基本功能函数名功能newff()生成一个前馈BP网络tansig()双曲正切S型(Tan-Sigmoid)传输函数logsig()对数S型(Log-Sigmoid)传输函数traingd()梯度下降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’。tansig()功能正切sigmoid激活函数格式a=tansig(n)说明双曲正切Sigmoid函数把神经元的输入范围从(-∞,+∞)映射到(-1,1)。它是可导函数,适用于BP训练的神经元。logsig()功能对数Sigmoid激活函数格式a=logsig(N)说明对数Sigmoid函数把神经元的输入范围从(-∞,+∞)映射到(0,1)。它是可导函数,适用于BP训练的神经元。例,下表为某药品的销售情况:月份123456销量205623952600229816341600月份789101112销量187314781900150020461556现构建一个如下的三层BP神经网络对药品的销售进行预测:输入层,结点数:3隐含层,结点数:5激活函数:tansig输出层,结点数:1激活函数:logsig采用滚动预测方式,即用前三个月的销售量来预测第四个月的销售量,如用1、2、3月的销售量为输入预测第4个月的销售量,用2、3、4月的销售量为输入预测第5个月的销售量.如此反复直至满足预测精度要求为止。%以每三个月的销售量经归一化处理后作为输入P=[0.51520.81731.0000;0.81731.00000.7308;1.00000.73080.1390;0.73080.13900.1087;0.13900.10870.3520;0.10870.35200.0000]’;%每个输入实例对应一列,故转置%以第四个月的销售量归一化处理后作为目标向量T=[0.73080.13900.10870.35200.00000.3761];%创建一个BP神经网络,每一个输入向量的取值范围为[0,1],隐含层有5个神经%元,输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,训练函数为梯度下降函数,即前述的标准学习算法net=newff([01;01;01],[5,1],{'tansig','logsig'},'traingd');net.trainParam.epochs=15000;%设置最大迭代次数net.trainParam.goal=0.01;%设置目标精度net.trainParam.lr=0.1;%设置学习速率为0.1net

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

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

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

×
保存成功