当前位置:文档之家› 本科毕业设计 BP神经网络的异常点检测应用可行性研究

本科毕业设计 BP神经网络的异常点检测应用可行性研究

本科毕业设计 BP神经网络的异常点检测应用可行性研究
本科毕业设计 BP神经网络的异常点检测应用可行性研究

本科毕业设计(论文)

BP神经网络的异常点检测应用可行性研究

学院

专业

年级班别

学号

学生姓名

指导教师

2013年 5 月

摘要

异常点数据是指数据集中与众不同数据。这部分数据的量小,但是对于我们的日常生产生活的影响极大。因此,异常点检测被广泛应用于网络入侵检测,金融保险,天气预报以及新药研制等领域。相对于大量的正常数据挖掘而言,异常点检测被称作小模式数据挖掘。BP算法是一种常用的数据挖掘算法。但是BP算法进行实际数据的异常点数据挖掘过程中存在:实际数据的维数较高,存在冗余特征的干扰,以及在高维特征下,数据量不充分的问题。因此,本文分析BP神经网络处理各种数据的情况,并得到以下结果。(1)BP神经网络能够较好的分离特征单一的仿真数据;但是(2)特征相似性较大的数据集,难以分离判断;(3)正常数据不充分或者不具有代表性,因此正常数据类学习不充分,从而导致异常无法判断。针对以上问题,本文提出了以下的改进措施:(1)BP算法前进行特征约简(映射)从中选取有益于异常检测的特征(2)多神经网络融合,不同神经网络识别不同的特征,相互取长补短,融合后得到最终的结果。

关键字:异常,BP,异常点检测,神经网络

注:本设计(论文)题目来源于教师的国家级(或部级、省级、厅级、市级、校级、企业)科研项目,项目编号为:。

Abstract

Outlier data is the data set different data. This part of the small amount of data, but for our daily production and life of great. Therefore, the anomaly detection is widely used in network intrusion detection, finance, insurance, weather, and new drug development and other fields. Relative to the large number of normal data mining, the anomaly detection model is called data mining small. BP algorithm is a commonly used data mining algorithm. But the BP algorithm to real data outliers exist in the data mining process: the higher the dimension of the actual data, there are redundant features of the interference, and high-dimensional feature, the issue of inadequate data. Therefore, this paper analyzes a variety of BP neural network processing of data, and to get the following results. (1) BP neural network can better separation characteristics of a single simulation data; but (2) the characteristics of similar large data sets, separation is difficult to judge; (3) normal data is not sufficient or not representative, so the normal data class learning is not sufficient, leading to abnormal can not judge. To solve the above problem, this paper proposes the following improvements: (1) BP algorithm before feature reduction (map) benefit from anomaly detection features selected (2) integration of multiple neural networks, different neural network to recognize the different characteristics of each each other, the final fusion result.

Key Words:Outliers-Data,BP,Algorithms,Neural Networks

目录

1引言 (5)

1.1背景 (5)

1.2传统已有异常点算法介绍 (5)

1.2.1基于统计学的异常点检测算法 (5)

1.2.2基于距离的异常点检测算法 (6)

1.2.3基于密度的算法 (7)

1.2.4基于偏差的异常点检测 (9)

1.2.5基于聚类的异常点检测算法 (10)

2基于属性特征在异常点检测中的研究 (11)

3 BP神经网络介绍 (13)

3.1模型简介 (13)

3.2计算各层节点输出 (13)

3.3 修正权值 (14)

4 异常检测中BP神经网络的设计 (16)

4.1可微阈值单元 (16)

4.2单个BP网络结构设计 (16)

4.3BP神经网络学习过程的基本步骤 (17)

5实验研究 (19)

5.1研究使用的数据库介绍 (19)

5.2训练方案一实验:把bp神经网络相似性代替距离算法相似度量 (19)

5.3训练方案二实验:用单个神经网络对训练数据库整体特性进行学习 (20)

5.4训练方案三实验:多神经网络各种形式训练及其决策 (21)

5.4.1实验设计思路 (21)

5.4.2实验方案及步骤 (22)

5.4.3实验分析 (24)

5.4.4实验失败原因分析 (25)

5.5BP调参实验 (27)

5.5.1对实验一调整隐层实验 (27)

5.5.2对实验二调整隐层实验 (28)

5.5.3对实验三调整隐层实验 (31)

5.6数据仿真实验 (33)

5.6.1实验思路 (33)

5.6.2实验步骤 (33)

5.6.3实验结果 (34)

5.6.4结果分析 (35)

5.7实验整体分析 (35)

总结与展望 (37)

致谢 (39)

1引言

1.1背景

异常点(离群点或者孤立点)检测是数据挖掘中一个重要方面,Hawkins[1]最早给出了异常点的本质定义:异常点是数据集中与众不同地数据,以至于使人怀疑这些数据并非随机偏差,而是产生与完全不同的机制。异常点可能由于度量或执行错误产生,也可能是由于固有数据可变性的结果。例如,一个公司首席执行官的工资自然远远高于公司其他雇员的工资,成为一个异常点。许多数据挖掘算法试图减少异常点的对挖掘结果的影响,或者在挖掘过程中排除异常点。然而异常点可能隐藏着重要的信息,也许比一般的数据更有价值。因此人们开始逐渐研究异常点挖掘算法。目前异常点检测已经开始用于信用卡欺诈、网络入侵检测以及金融申请和交易欺诈等领域[2],近年来异常点检测已成为数据挖掘研究中的一个热点问题。

传统数据挖掘主要有以下几类:基于统计的方法,基于距离的方法,基于偏移方法,基于聚类方法,基于密度方法。本文从特征与异常检测的关系出发进行研究。BP神经网络适用于储存和描述这种复杂的关系。但是异常检测过程,通常数据的位数较高,在高维特征存在冗余特征干扰,以及高维特征下数据不充分的问题,因此,本文研究了BP神经网络应用于不同情况。

1.2 传统已有异常点算法介绍

1.2.1基于统计学的异常点检测算法

早期的异常点检测算法大多数是基于统计学实现的,通常可以分为基于分布的检测算法和基于深度的检测算法两类。前者一般通过先构造一个标准概率分布来拟合数据集,然后根据概率分布来确定异常点,例如Rosner提出的单样本多个异常检测算法ESD 算法,和Yamnishi等使用混合高斯模型的异常点检测算法。此类算法估计多维分布的概率模型的难度较大,且准确性低。基于深度方法主要以计算几何为基础,通过计算不同层的K-D凸包将外层的对象判定为异常点。但当数据集较大,此类方法在维数上的伸缩

性不好。

基于统计的异常点检测方法易于理解,实现方便,但此方法检测出来的异常点很可能被不同的分布模型检测出来,解释异常点意义时经常发生多义性。其次,此方法在很大程度上依赖于待挖掘的数据集是否满足某种概率分布模型、模型的参数、异常点的数目等对基于统计的方法都有非常重要的意义,而确定这些参数通常比较困难;另外,此方法大多适合于挖掘单变量的数值型数据,然而许多数据挖掘问题要求在多维空间中发现异常点,目前几乎没有多元的不一致检验,当没有特定的检验时,或观察到的分布不能恰当地用任何标准的分布建模时,此类方法不能确保所有的异常点被发现。

1.2.2基于距离的异常点检测算法

基于距离的异常点检测算法的基本思想是把数据点看作空间中的点,异常点被定义为与大多数数据距离较远的点。通常这类异常被描述为(,d min)DB pct 。当且仅当数据集S 中至少有pct 个数据点与P 点的距离大于d min 时,数据对象P 点称为异常点。这类方法与基于密度的检测算法有很大的相似之处,不需要事先知道数据集的分布模型,对于任意分布模型均有效。

基于距离方法最早是由Knorr 和Ng 在1998年提出的。他们用DB(p,d)来表示数据集中的异常点,采用不同的参数p 与d ,(,d)DB p 可以表示所有的异常点。与此 定 义 相应的算法有三种,它们是基于索引(Index-based)的算法,嵌套循环(Nest-Loop ,NL)算法,基于单元或划分(cell-based)的算法等。基于索引的方法依赖多维索引结构(R-trees,X -trees,KD -tress 等)的性能。随着维数的增加,所有的索引结构的性能迅速下降,使得算法性能不佳。NL 算法可以避免构建索引结构,减少了算法的O I /次数。以上两方法的

算法时间复杂度为

)(2

kn O ,当遇到大量数据集时它们还有待改进。基于单元的方法是把数据集划分为单元,逐个单元的检测,而非逐个对象的检测。它的时间复杂度为

)(N ck O +,其中ck 取决于单元的个数和维数k 。 Knorr 和Ng 通过试验证明,当4

k <=时此算法优于NL 算法。

相对前两者,基于单元的算法无论是在数据量还是在维数增加时,性能都是最好的。

此算法需要将数据空间分隔成彼此独立的单元结构,经过多次选择来判断离群数据。对于参数的每个变化都需要调整单元结构,因此会影响了算法的结果。后来,Rastogi 和Ramaswamy 提出了一个新的基于距离的异常点定义,即基于距离的第k 最近邻(k-th Nearest Neighbor)异常点挖掘方法。给定S 维空间中包含N 个点的数据集D 、参数n 和k

(自然数),()k D p 表示点p 和它的第k 最近邻的距离。如果满足

)()(p D q D k

k >的点q 不超过n-1个,即

1

)}()(|{-≤>∈n p D q D D q k k ,那么称p 为k

n D 异常点。如果对数据对象根

据它们的)(p D k 距离进行排序,那么前n 个点就被看作异常点。他们用聚类算法首先对

数据集进行聚类,然后在类中发现异常点。相对于d)DB(p,异常点挖掘,异常点挖掘方

法人为干预的因素要小一些。但它也有自身缺陷,就是要计算数据集中所有点的)(p D k

这显然影响到算法的效率。对低维空间的数据此方法优于索引算法和NL 算法,但对于高维数据此算法性能不高。

Bay 和Sc hwabacher 在沿用Rastogi 和Ramaswamy 对于异常定义的基础上,提出了一种基于随机抽样的检测方法,它通过随机抽样的方法,减少了寻找k 近邻的范围,在试验数据上获得了几乎线性的计算复杂度。

随着人们对基于距离的方法的不断研究,一些新的、较好的算法也不断的涌现。代表性的算法有: 陆声链等提出一个判断异常点的新定义,并设计基于抽样近似检测算法。使得算法性能有所提高;另外,徐雪松等利用聚类算法与第k 个最近邻的原理提出了基于距离的再聚类的异常点算法,它克服一些基于距离算法的缺点,并取得较好的试验结果。

与基于统计的方法相比,它有以下几个优点: 则可找出数据集中的异常点。 (1) 在理论上可以处理任意维任意类型的数据,这就克服了基于统计方法仅能检测单个属性的缺点。

(2) 不必对数据集的相关信息(数据服从哪种统计分布模型,数据类型特点等)足够了解。实际上在给出了距离的度量,并对数据进行预处理后。

1.2.3基于密度的算法

基于密度方法是在基于距离的方法上改进而来。基于密度的异常观点比基于距离的

异常观点更贴近Hawkins的异常定义,因此能够检测出基于距离异常算法所不能识别的局部异常。局部异常观点摒弃了以前所有的异常定义中非此即彼的绝对异常观念,更加符合现实生活的中的应用。

所谓密度是基于任意一点和P点距离小于给定半径R的邻域空间内的数据点的个数计算得到的。一般的对密度的定义是点到其量近邻的平均距离,平均距离小则密度小。基于密度的异常点检测,就是探测局部密度,通过不同的密度估计策略来检测异常点。代表性算法主要有以下几种。

(1)Brito等提出相互k近邻图(Mutual k—Nearest Neighbor,简称MkNN)算法,其主要思想是对每个连通子图进行检测,如果包含多个结点就组成一个簇,如果仅有一个结点,那么该结点就是异常点。该算法针对数据点的分布对各种特殊形状都有效,但算法执行效率不高。

(2)Ville Hautamaki等提出两种基于密度的异常点检测算法,第一种算法思路为在kNN图中,若顶点u成为其它点的k近邻的次数少于给定阈值T时就被认为是异常点,另一种算法则是先对所有顶点的平均k近邻距离进行排序,然后将平均k近邻距离大于T点顶点视为异常点。

(3)Papadimitriou定义了多粒度偏离系数(Multi—Granularity Deviation Factor,简称MDEF),该算法将多粒度偏离系数是所在邻域的标准多粒度偏离系数的3倍的点判定为异常点,然而标准多粒度偏离系数的计算量大,对算法的可行性有一定的限制。

(4)Dongmei Ren等采用相对密度系数(Rela—tive Density Factor,简称RDF),即P点的密度相对该点的邻域密度的比值作为孤立程度的度量方法,其基本思路是首先基于RDF对位于簇中心的数据点进行剪枝,然后仅仅在剩下的较小的数据集中进行异常点检测。该方法降低了数据集的大小,提高了算法效率,但是在剪枝过程中对于特殊分布的数据集就有可能将异常点剪掉,算法的准确性受到限制。

(5)Breuning 提出了局部异常的概念及相应异常检测方法(DBOM算法),即数据集中的每个对象的异常程度用局部异常因子LOF来衡量。也就是说是否是异常点不仅仅取决于它与周围数据的距离大小,而且与邻域内的密度情况有关。一个对象领域内的密度可以用包含固定结点个数的域半径指定半径领域中包含的结点数来描述。这样就不会像DB(p,d)异常点那样遗漏一部分异常点。LOF算法充分体现了“局部”的概念,每个点都给出了一个离群程度,离群程度最强的那个几个点被标记为异常点。文献有关发

面对LOF进行推广:一是由原来的一个邻域的变化为两个(计算密度领域和比较密度领域);二是剪除非异常对象来减小计算代价;因此,使用算法比传统的LOF算法有所提高。

在现有的计算局部异常因子(LOF)算法中,把具有很高LOF值的对象作为异常点。计算LOF要耗费很大的计算量,针对此问题malik Agyemang提出了修改算法,即局部稀疏系数(LSC)算法。这种方法主要是引入局部稀疏系数(LSC)这一概念,根据每个对象的LSC值按从大到小的顺序排列整个数据集并把前n个对象作为异常点。

但是,此方法在实际应用中计算量亦是不小,效率有待提高。

另外,岳峰等利用反向K近邻(RKNN)这个概念提出了一个异常点检测算法(ODRKNN),在综合数据集和正式数据集上的实验结构表明,该算法能有效地检测出异常点,且算法效率高于典型的基于密度的异常点检测算法LOF和LSC的效率。

1.2.4基于偏差的异常点检测

基于偏差的异常点检测不使用统计检验或者基于距离的度量来识别异常对象。相反,它通过检查一组对象的主要特征来识别异常点。背离这种描述的对象认为是异常点。因此,在该方法中,属于偏差通常用于指异常点。主要有两种技术:第一种顺序地比较集合中的对象,叫顺序异常技术(sequential exception technique);第二种采用OLAP数据立方体方法识别大型多维数据中的异常区域。

(1) 序列异常技术:Aming和Argrawal 提出一种序列异常(sequential exception)的概念。这个算法复杂度与数据集大小呈线性关系,有优异的计算性能。但是并没有得到普遍的认同,这是因为序列异常在概念上有一定的缺陷,它对异常点存在的假设太过理想化,对现实复杂数据效果不太好。

(2) OLAP数据立方体技术:在大规模的多维数据中采用数据立方体来确定反常区域.如果一个立方体的单元值显著地不同于根据统计模型得到的值,该单元被认为是一个异常。此方法是发现驱动探索的一种形式。此方法由于搜索空间很大,人工探测非常困难。

第一种概念有缺陷,遗漏了不少异常点,时间复杂度与数据集大小成线性关系,适用性不高。第二种搜索空间大,人工探测困难,效率不高,只适用多维数据。

1.2.5基于聚类的异常点检测算法

在聚类算法中,异常点检测仅仅是聚类的副产品。聚类算法发展方向是优化聚类过程,而不是提高对异常点检测的能力,异常点检测和聚类是两个相对立的过程,聚类是把属于统一类的数据点聚集在一起,归为一类,而异常点检测是把和大多数数据点相异的点挖掘出来。

Su等人首先提出基于聚类的异常点检测算法,聚集的较小簇被认为是异常点,但这中方法忽略了小聚集簇和大聚集簇之间的距离,当一个小聚集簇和一个大聚集簇非常接近的时候,小聚集簇中的这些点更可能是大聚集簇的边界点而不是异常点。

模糊k均值聚类算法(FCM)常用于异常点检测,该算法动态地分配权重给每一个数据点,权重表示该数据点和数据集中心之间的距离,通过各点的权重来判断异常点。此类算法没有先验知识指导如何确定聚类中心,只能是随机选取,优化搜索空间较大,算法的复杂度较大。

Hongyi Zhang等引为了提高模糊核聚类算法的运行效率,提出了新的模糊核聚类算法,该算法用先验知识对参数初始化。取代了用聚类中心初始化,改进了聚类的目标函数,降低了算法的时间复杂度,但该算法没有提到如何选取核函数,对于算法模糊性的控制不好撑握。

2基于属性特征在异常点检测中的研究

传统算法大都是通过数据在空间地特性来判断检测异常点。本文的方向是从特征出发研究。传统算法从整个数据集合在空间中分布地特性出发研究,比如距离的从整个数据集空间距离进行研究,同样密度的按数据集空间密度研究,聚类也是按数据集空间特性。而本文直接从已知部分数据维度的特征着手,即是直接从每一组数据的特征来研究。

对于单属性特征的情况,根据数据重要性调整特征(即维度)权值,并根据数据重要性调整。假设数据特征表示在每个属性上面,独立没有组合属性表现特征地情况下,每一组数据属性对应权值数据乘积和,表示这个数据在这组数据中全局中所占的重要性。例如检测是否是糖尿病人的数据库,三十岁以下这个年龄维度上病人较少,然而五十岁后这个维度病人比例就多了。映射到维度为三十岁以下这个维度地病人比较少,映射到维度为十岁以上较多。这样我们可以添加一个权值与年龄这一项数据乘积,这个乘积必须使权值与当前数据乘积出来的数据成正比,表示年龄增长能够体现在这组数据中

的重要性。以便全局统筹决策较容易。设X为一组数据集合,可使 W i

Xi*

趋向某个

数值,表示这组数据某个总体特征。异常或者非异常,可以通过趋向某个数值表示特征异常,另一个方向数值表示非异常。

有时候数据组合的重要性是体现在几个数据地组合里面,既可能体现在几个属性上面,比如说一组数组(A,B,C),可能AB组合特征不显示异常,然而ABC组合就显示异常,这些组合是不定地。所有在属性权值之上需要一组对属性不同组合特征的权值调整。

图2.1 样例图示

如图2.1,某个异常点可能异常特征是属性1,可能是属性1、属性2地组合,对于同个数据库不同点具有组合不确定性。

由于特征地不可确定性,数值不确定,组合不确定。我们可以采用神经网络自学习调整权值。同时根据已知数据训练修改这些权值,使其具有识别某种组合特征的能力。使其自学习特征,自动控制调整权值及权值组合。

人工神经网络作为一种新型信息处理系统,在信息处理方面,具有如下显著的特点:(1)输入-输出映射能力。人工神经网络具有自学习能力,通过学习,能够根据网络期望输出和网络实际输出之差来调整神经元间连接权值和阈值,直至使实际输出与期望输出之间的误差减小到满意的程度,这样就实现了输入到输出的映射。人工神经网络的输入-输出映射能力对于预测有特别重要的意义。

(2)非线性特性。人工神经网络具有很强的非线性,这种非线性分散在每个神经元,通过传递函数实现。利用神经网络的非线性特性,可解决药学研究及实验数据处理过程中大量的非线性问题。

(3)高度并行性。人工神经网络是由许多相同的简单处理单元并联组合而成,具有高度并行性特性,使其对特定任务的计算变得很快,对信息的处理能力与效果惊人,因此提供了一种解决高层复杂问题的能力和方法。

(4)良好的容错性与联想记忆功能。人工神经网络通过自身的网络结构能够实现对信息的记忆,而所记忆的信息是存储在神经元之间的权值中。从单个权值中看不出所存储的信息内容,因而是分布式的存储方式,这使得网络具有良好的容错性,既能进行模式信息处理工作,又能进行模式识别工作。

因为这些特点,神经网络广泛应用在聚类分析、模式识别、信号处理、系统辨识、优化计算、预测控制等领域。

根据神经网络记忆分类地特性,本文设想通过这些特性学习出能够辨别异常点非异常点数据的神经网络,主要研究其可行性。

3 BP 神经网络介绍

3.1模型简介

人工神经网络理论是80年代中后期迅速发展起来的一项前沿研究领域,其应用已渗透到各个领域。BP 神经网络模型是人工神经网络的重要模型之一,应用尤为广泛。

BP 算法主要包括两个过程,一是由学习样本、网络权值ω从输入层→隐含层→输出层逐次算出各层节点的输出;二是反过来由计算输出与实际输出偏差构出的误差函数E (ω),用梯度下降法调节网络权值,即

)(1k k k E

ωηωω??-

+=+

(3.1)

使误差

)

(1+k E ω减小。

设输入层节点数为n ,隐含层节点数为r ,输出层节点数为m ,隐含层与输入层之间的权值矩阵为

)

(ji w W =,隐含层节点阀值为

j

θ,输出层与隐含层之间权值矩阵为

)

(kj v V =,输出层节点阀值为'k θ,并设有N 个学习样本)3,2,1)(,(N P Y X p P ??=其中

T

pn p p P x x x x ),(21 =为第P 个学习样本的输入向量,

T

pm p p p y y y Y ),(21 =为其实际输出向量。其中m ,2,1,n 2,1??=??=j i ,

下文中如不指明则相同。

3.2计算各层节点输出

输入层节点,取其输出pi

o 与输入

pi

x 相同,即

pi

pi x o =

隐含层节点输入

pj

net ,输出

pj

o 分别为:

j n

i pi ji rj o w net θ-=∑=1

(3.2)

若令

1

,00=-=p j j o w θ则有:

∑==n

i pi ji rj o w net 1

1()1pj

pj pj net o f net e

-==

+。

输出层节点输入

pk

net ,输出pk

o 分别为:

'

1

k

r

j pj kj pk o v net θ-=∑= (3.3)

若令'

0k k v θ-=,10=p o 则有:

pk

net pk pk r

j pj kj pk e

net f o o v net -=+=

==∑11)(,0

(3.4)

3.3 修正权值

设 ∑∑===-=

N

p p

m

k pk pk

p E E o y

E 1

1

2

2

1

,)(

其中

p

E 为第p 个学习样本产生的输出误差,E 为总误差。

由误差函数调整权值有:

pj

pk kj

p kj p o v E v ?=??-

=?δ

其中

)

1()(pk pk pk pk pk o o o y -??-=δ

pi

pj ji

p ji p o w E w ?=??-

=?δ

其中

∑=??-?=m

k kj pk pj pj pj v o o 1

)

()1(δδ

∑=?=?N

p kj

p kj v v 1

η

∑=?=?N

p ji

p ji w w 1

η (3.5)

其中η为学习速率,一般在[0,1]内取值。 权值修正为: kj

kj kj v v v ?+=

(3.6)

ji

ji ji w w w ?+=

(3.7)

4 异常检测中BP 神经网络的设计

4.1可微阈值单元

图 4.1可微阈值单元

如图 4.1 可微阈值单元,图中为sigmoid 单元,与感知器相似,sigmoid 单元先计算它的线性组合,然后应用一个阈值到此结果。然而,对sigmoid 单元,阈值输出是输入的连续函数。更精确地讲,sigmoid 单元这样计算输出。

)(→

→?=x w σο

(4.1)

其中:

y

e y -+=11

)(σ (4.2)

σ经常被称为sigmoid 函数或者也可以称为logistic 函数。注意它的输出范围为0

到1,随输入单调递增。因为这个函数把非常大的书值域映射到一个小范围的输出。也叫挤压函数。

本算法就是想把所有整数据特征映射到一个小范围来处理判断。

4.2单个BP 网络结构设计

X 1

X 2

Xn

W 1 W 2 W n

X 0 = 1

W 0 = -Θ

f

∑==

n

i WiXi

net 0

net

e net -+=

=11)(σο

采用4.1为神经感知器,隐层感知器根据实际数据库的属性确定,一般少于等于属性个数,输出层一个输出感知器。

图 4.2 BP 结构

输入层为一组数据,全连接到隐层,隐层计算输出受挤压函数处理后的数值,输出层的输入为隐层输出。最后输出0到1的数值。

隐层输出层的神经元,每个的0W 都初始化为-0.05,其他权值都初始化:(double) ((rand()/32767.0)*2-1);随机数种子为系统时间。

训练教师信号,按具体方案处理设定。

4.3BP 神经网络学习过程的基本步骤

(1)定义误差函数r 为期望输出与实际输出之差的平方和:

∑-=

j

j m j y V r 2

)(21

(4.3)

其中yj 是输出单元的期望输出,m

j V 是实际的输出。

(2)调节权值的公式为:

输入

隐层 输出层

1

-??-=?k j

k j ij V d W ε (4.4)

其中ε为学习步长,取正参数,

1

-k j V 代表上一层神经元的输出,而

k j

d 有两种情况:

1) 如果j 是输出层(第m 层)的神经元,则

)

)(1(j m j m j m j m j y V V V d --= (4.5)

2) 如果j 不在输出层,而是隐含层的神经元,则

∑+-=l

k l

jl k j k j k j d W V V d 1)1( (4.6)

k

j V 是该神经元的输出,而求本层的

k j

d 必须用到上一层的1

+k l d ,可见误差函数的求取

是一个始于输出层的反向传播的递归过程。

(3)将学习模式不断输入到输入层,再根据输出层产生的误差不断修正神经元间连结的权值和神经元的阈值,直到学习模式全部输入或误差达到一定的值。

反向传播算法在网络规模较大时计算量很大,收敛较慢,而且存在局部最小的问题,根据这一问题,在具体操作时采用了加入动量项的方法:

)()1(1

t W V d t W ij k j

k j ij ?+-=+?-αε (4.7)

α称为动量因子,这样后一次的权值更新适当考虑上一次的权值更新,可以改善收敛特性。

5实验研究

5.1研究使用的数据库介绍

在尝试各种算法方案地研究中,使用的数据库名称:The Insurance Company Benchmark (COIL 2000).关于保险的数据,其中包括:TICDATA2000.txt ,训练数据,5822组数据,每组86个属性,第86个为是否异常的标志变量,总地为两类数据;TICEV AL2000,测试数据,4000组,每组为85个特征属性;TICTGTS2000.txt ,与ticeval2000对应组地结果。

5.2训练方案一实验:把bp 神经网络相似性代替距离算法相似度量

起初思路是采用两两相似性地训练,然后得出一个整体数据库属性特征的神经网络。采用W i

Yi Xi abs ?-∑

)(表示X 与Y 两者相似性差异。在神经网络则表示为两者整体特

征差异大小。假设这样能够成功,则以后只要判断测试数据与整体已知数据库地整体差异大小,就可以判断异常与否。

神网络结构大概如下:

注:每个方向箭头抽象全连接

图 5.1 方案一图

X

Y

两两做差绝对值

......

输入层

隐层

输出层

隐层采用85个可微阈值单元,输出采用一个,网络全连接。每个单元为86个权重,初始化权值按4.2给出的方法。

具体方式,对已知数据集做两两训练,比如数据X和Y,做差fabsf(Xi - Yi),然后输入一个BP神经网络,已知数据库中第86个属性,(X 86,Y86)对应为(0,0)则教师信号为1,(1,1)则教师信号为1,(0,1)则为0,部分顺序。

实验训练数据库100与4000组数据做两两训练还有4000组与4000组数据训练。

经观察验证,测试数据与已知数据地相似性与否没法与测试计算结果数据存在必然地比例关系。输出结果的所有数据,在0到1区间之间,不管相似不相似都集中分布在靠近0,没有区分度,不能明显表示相似与否地概念。然后又对测试数据与训练数据库,进行相似性求和,对比测试数据中异常点与非异常点与训练数据库地相似性和,依然没有区分度。

经多次尝试,降低训练次数精度,本实验方案依然失败。

经过大量实验,失败原因:第一,bp处理输出区分度不够,难以有判断方案。第二,训练方案地问题,数据集合里面,缺乏异常点地训练,bp权值能增长方向把小规模局部数据地特征给掩盖掉了,难以输出好地数据来区分。第三,数据特征不显著。第四,训练顺序导致。

解决方法:第一种改变训练方案,改变判断方案;第二种改变神经网络结构,以便输出数据区分度更高,便于区别异常非异常。

5.3训练方案二实验:用单个神经网络对训练数据库整体特性进行学习

实验设计思路:为避免上述问题,改变训练顺序和训练方法,单组数据输入单个bp 神经网络。为尽量得出可区分地数据,强化局部异常点特性。

实验方案:对神经网络BP1,先使用非异常点经行训练,教师信号为0。然后再对异常点进行训练,教师信号为1。

(1) 对所有非异常点数据,按组分别对BP1进行训练,教师信号都为1,

(ticdata2000.txt数据库里面大部分为正常数据)保存BP1权值;

(2)加载BP1数据到BP2, 针对数据库每个异常点,教师信号统一修改为0.1至0.7之间地任何一个数值,正向(数据库地方向顺序)训练一次,再逆向训练一次。训练完

BP神经网络测试例子(附数据)

Train.txt 5.0,3.0,1.6,0.2,1 5.0,3.4,1.6,0.4,1 5.2,3.5,1.5,0.2,1 5.2,3.4,1.4,0.2,1 4.7,3.2,1.6,0.2,1 4.8,3.1,1.6,0.2,1 5.4,3.4,1.5,0.4,1 5.2,4.1,1.5,0.1,1 5.5,4.2,1.4,0.2,1 4.9,3.1,1.5,0.1,1 5.0,3.2,1.2,0.2,1 5.5,3.5,1.3,0.2,1 4.9,3.1,1.5,0.1,1 4.4,3.0,1.3,0.2,1 5.1,3.4,1.5,0.2,1 5.0,3.5,1.3,0.3,1 4.5,2.3,1.3,0.3,1 4.4,3.2,1.3,0.2,1 5.0,3.5,1.6,0.6,1 5.1,3.8,1.9,0.4,1 4.8,3.0,1.4,0.3,1 5.1,3.8,1.6,0.2,1 4.6,3.2,1.4,0.2,1 5.3,3.7,1.5,0.2,1 5.0,3.3,1.4,0.2,1 6.6,3.0,4.4,1.4,2 6.8,2.8,4.8,1.4,2 6.7,3.0,5.0,1.7,2 6.0,2.9,4.5,1.5,2 5.7,2.6,3.5,1.0,2 5.5,2.4,3.8,1.1,2 5.5,2.4,3.7,1.0,2 5.8,2.7,3.9,1.2,2 6.0,2.7,5.1,1.6,2 5.4,3.0,4.5,1.5,2 6.0,3.4,4.5,1.6,2 6.7,3.1,4.7,1.5,2 6.3,2.3,4.4,1.3,2 5.6,3.0,4.1,1.3,2 5.5,2.5,4.0,1.3,2 5.5,2.6,4.4,1.2,2 6.1,3.0,4.6,1.4,2 5.8,2.6,4.0,1.2,2

BP神经网络模型应用实例

BP神经网络模型 第1节基本原理简介 近年来全球性的神经网络研究热潮的再度兴起,不仅仅是因为神经科学本身取得了巨大的进展.更主要的原因在于发展新型计算机和人工智能新途径的迫切需要.迄今为止在需要人工智能解决的许多问题中,人脑远比计算机聪明的多,要开创具有智能的新一代计算机,就必须了解人脑,研究人脑神经网络系统信息处理的机制.另一方面,基于神经科学研究成果基础上发展出来的人工神经网络模型,反映了人脑功能的若干基本特性,开拓了神经网络用于计算机的新途径.它对传统的计算机结构和人工智能是一个有力的挑战,引起了各方面专家的极大关注. 目前,已发展了几十种神经网络,例如Hopficld模型,Feldmann等的连接型网络模型,Hinton等的玻尔茨曼机模型,以及Rumelhart等的多层感知机模型和Kohonen的自组织网络模型等等。在这众多神经网络模型中,应用最广泛的是多层感知机神经网络。多层感知机神经网络的研究始于50年代,但一直进展不大。直到1985年,Rumelhart等人提出了误差反向传递学习算法(即BP算),实现了Minsky的多层网络

设想,如图34-1所示。 BP 算法不仅有输入层节点、输出层节点,还可有1个或多个隐含层节点。对于输入信号,要先向前传播到隐含层节点,经作用函数后,再把隐节点的输出信号传播到输出节点,最后给出输出结果。节点的作用的激励函数通常选取S 型函数,如 Q x e x f /11)(-+= 式中Q 为调整激励函数形式的Sigmoid 参数。该算法的学习过程由正向传播和反向传播组成。在正向传播过程中,输入信息从输入层经隐含层逐层处理,并 传向输出层。每一层神经元的状态只影响下一层神经

BP神经网络matlab实例

神经网络Matlab p=p1';t=t1'; [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); %原始数据归一化net=newff(minmax(pn),[5,1],{'tansig','purelin'},'traingdx');%设置网络,建立相应的BP网络 net.trainParam.show=2000; % 训练网络 net.trainParam.lr=0.01; net.trainParam.epochs=100000; net.trainParam.goal=1e-5; [net,tr]=train(net ,pn,tn); %调用TRAINGDM算法训练BP网络 pnew=pnew1'; pnewn=tramnmx(pnew,minp,maxp); anewn=sim(net,pnewn); %对BP网络进行仿真 anew=postmnmx(anewn,mint,maxt); %还原数据 y=anew'; 1、BP网络构建 (1)生成BP网络 = net newff PR S S SNl TF TF TFNl BTF BLF PF (,[1 2...],{ 1 2...},,,) R?维矩阵。 PR:由R维的输入样本最小最大值构成的2

S S SNl:各层的神经元个数。 [1 2...] TF TF TFNl:各层的神经元传递函数。 { 1 2...} BTF:训练用函数的名称。 (2)网络训练 = [,,,,,] (,,,,,,) net tr Y E Pf Af train net P T Pi Ai VV TV (3)网络仿真 = [,,,,] (,,,,) Y Pf Af E perf sim net P Pi Ai T {'tansig','purelin'},'trainrp' BP网络的训练函数 训练方法训练函数 梯度下降法traingd 有动量的梯度下降法traingdm 自适应lr梯度下降法traingda 自适应lr动量梯度下降法traingdx 弹性梯度下降法trainrp Fletcher-Reeves共轭梯度法traincgf Ploak-Ribiere共轭梯度法traincgp Powell-Beale共轭梯度法traincgb 量化共轭梯度法trainscg 拟牛顿算法trainbfg 一步正割算法trainoss Levenberg-Marquardt trainlm

(完整版)BP神经网络matlab实例(简单而经典)

p=p1';t=t1'; [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); %原始数据归一化 net=newff(minmax(pn),[5,1],{'tansig','purelin'},'traingdx');%设置网络,建立相应的BP网络net.trainParam.show=2000; % 训练网络 net.trainParam.lr=0.01; net.trainParam.epochs=100000; net.trainParam.goal=1e-5; [net,tr]=train(net ,pn,tn); %调用TRAINGDM算法训练BP 网络 pnew=pnew1'; pnewn=tramnmx(pnew,minp,maxp); anewn=sim(net,pnewn); %对BP网络进行仿真 anew=postmnmx(anewn,mint,maxt); %还原数据 y=anew'; 1、BP网络构建 (1)生成BP网络 = net newff PR S S SNl TF TF TFNl BTF BLF PF (,[1 2...],{ 1 2...},,,) PR:由R维的输入样本最小最大值构成的2 R?维矩阵。 S S SNl:各层的神经元个数。 [ 1 2...] { 1 2...} TF TF TFNl:各层的神经元传递函数。 BTF:训练用函数的名称。 (2)网络训练 [,,,,,] (,,,,,,) = net tr Y E Pf Af train net P T Pi Ai VV TV (3)网络仿真 = [,,,,] (,,,,) Y Pf Af E perf sim net P Pi Ai T {'tansig','purelin'},'trainrp'

BP神经网络实例

BP神经网络实例

智能控制 第一章BP神经网络基本原理 一、BP神经网络基本概念 1、人工神经网络 人工神经网络ANN(Artificial Neural Network),是对人类大脑系统的一阶特性的一种描述。简单地讲,它是一个数学模型,可以用电子线路来实现,也可以用计算机程序来模拟,是人工智能研究地一种方法。近年来发展迅速并逐渐成熟的一种人工智能技术,其来源于对神经元细胞的模拟。人工神经网络具有以下三个特点:信息分布表示,运算全局并行与局部操作,信息非线性处理。由于这三个特点,使得由人工神经网络构成的分类器具有强大的数据拟和与泛化能力,因而广泛运用于模式识别与机器学习领域。 神经网络模式识别的过程分为两步:首先是学习过程,通过大量的训练样本,对网络进行训练,根据某种学习规则不断对连接权值进行调节,然后使网络具有某种期望的输出,这种输出就可以将训练样本正确分类到其所属类别中去,此时可以认为网络是学习到了输入数据或样本间的内在规律。接下来是分类过程,应用前面学习过程所训练好的权值,对任意送入网络的样本进行分类。 人工神经网络模型各种各样,目前已有数十种。他们从各个角度对生物神经系统的不同层次进行了描述和模拟。代表模型有感知机、多层映射BP网、RBF 网络、HoPfiled模型、Boit~机等等。虽然人工神经网络有很多模型,但按神经元的连接方式只有两种型态:没有反馈的前向网络和相互结合型网络。前向网络是多层映射网络,每一层中的神经元只接受来自前一层神经元的信号,因此信号的传播是单方向的。BP网络是这类网络中最典型的例子。在相互结合型网络中,任意两个神经元都可能有连接,因此输入信号要在网络中往返传递,从某一初态开始,经过若干变化,渐渐趋于某一稳定状态或进入周期震荡等其它状态,这方面典型的网络有Hopfiled模型等。 1

2019神经网络实学习 例子.doc

神经网络实学习例子 1通过神经网络滤波和信号处理,传统的sigmoid函数具有全局逼近能力,而径向基rbf函数则具有更好的局部逼近能力,采用完全正交的rbf径向基函 数作为激励函数,具有更大的优越性,这就是小波神经网络,对细节逼近能力 更强。 BP网络的特点①网络实质上实现了一个从输入到输出的映射功能,而数学 理论已证明它具有实现任何复杂非线性映射的功能。这使得它特别适合于求解 内部机制复杂的问题。我们无需建立模型,或了解其内部过程,只需输入,获 得输出。只要BPNN结构优秀,一般20个输入函数以下的问题都能在50000次 的学习以内收敛到最低误差附近。而且理论上,一个三层的神经网络,能够以 任意精度逼近给定的函数,这是非常诱人的期望;②网络能通过学习带正确答 案的实例集自动提取"合理的"求解规则,即具有自学习能力;③网络具有一定 的推广、概括能力。bp主要应用回归预测(可以进行拟合,数据处理分析,事 物预测,控制等)、分类识别(进行类型划分,模式识别等),在后面的学习中,都将给出实例程序。但无论那种网络,什么方法,解决问题的精确度都无法打 到100%的,但并不影响其使用,因为现实中很多复杂的问题,精确的解释是毫 无意义的,有意义的解析必定会损失精度。BP注意问题1、BP算法的学习速度 很慢,其原因主要有:a由于BP算法本质上为梯度下降法,而它所要优化的目 标函数又非常复杂,因此,必然会出现"锯齿形现象",这使得BP算法低效; 结论4:由上表可以看出,后者的初始权值比较合适些,因此训练的时间 变短, 误差收敛速度明显快些。因此初始权值的选取对于一个网络的训练是很重 要的。 1.4,用最基本的BP算法来训练BP神经网络时,学习率、均方 误差、权值、阈值的设置都对网络的训练均有影响。综合选取合理的值, 将有

BP神经网络的设计实例(MATLAB编程)资料

神经网络的设计实例(MATLAB编程) 例1 采用动量梯度下降算法训练BP 网络。 训练样本定义如下: 输入矢量为 p =[-1 -2 3 1 -1 1 5 -3] 目标矢量为t = [-1 -1 1 1] 解:本例的MATLAB 程序如下: close all clear echo on clc % NEWFF——生成一个新的前向神经网络 % TRAIN——对BP 神经网络进行训练 % SIM——对BP 神经网络进行仿真 pause % 敲任意键开始 clc % 定义训练样本 P=[-1, -2, 3, 1; -1, 1, 5, -3]; % P 为输入矢量 T=[-1, -1, 1, 1]; % T 为目标矢量 pause; clc % 创建一个新的前向神经网络 net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm') % 当前输入层权值和阈值 inputWeights=net.IW{1,1} inputbias=net.b{1} % 当前网络层权值和阈值 layerWeights=net.LW{2,1} layerbias=net.b{2} pause clc % 设置训练参数 net.trainParam.show = 50; net.trainParam.lr = 0.05; net.trainParam.mc = 0.9; net.trainParam.epochs = 1000; net.trainParam.goal = 1e-3; pause clc % 调用TRAINGDM 算法训练BP 网络 [net,tr]=train(net,P,T);

BP神经网络详细讲解

PS:这篇介绍神经网络是很详细的,有一步一步的推导公式!神经网络是DL(深度学习)的基础。 如果对神经网络已经有所了解,可以直接跳到“三、BP算法的执行步骤“ 部分,算法框架清晰明了。 另外,如果对NN 很感兴趣,也可以参阅最后两篇参考博文,也很不错! 学习是神经网络一种最重要也最令人注目的特点。在神经网络的发展进程中,学习算法的研究有着十分重要的地位。目前,人们所提出的神经网络模型都是和学习算法相应的。所以,有时人们并不去祈求对模型和算法进行严格的定义或区分。有的模型可以有多种算法.而有的算法可能可用于多种模型。不过,有时人们也称算法为模型。 自从40年代Hebb提出的学习规则以来,人们相继提出了各种各样的学习算法。其中以在1986年Rumelhart等提出的误差反向传播法,即BP(error BackPropagation)法影响最为广泛。直到今天,BP算法仍然是自动控制上最重要、应用最多的有效算法。 1.2.1 神经网络的学习机理和机构 在神经网络中,对外部环境提供的模式样本进行学习训练,并能存储这种模式,则称为感知器;对外部环境有适应能力,能自动提取外部环境变化特征,则称为认知器。 神经网络在学习中,一般分为有教师和无教师学习两种。感知器采用有教师信号进行学习,而认知器则采用无教师信号学习的。在主要神经网络如BP网络,Hopfield网络,ART网络和Kohonen 网络中;BP网络和Hopfield网络是需要教师信号才能进行学习的;而ART网络和Kohonen网络则无需教师信号就可以学习。所谓教师信号,就是在神经网络学习中由外部提供的模式样本信号。 一、感知器的学习结构 感知器的学习是神经网络最典型的学习。 目前,在控制上应用的是多层前馈网络,这是一种感知器模型,学习算法是BP法,故是有教师学习算法。 一个有教师的学习系统可以用图1—7表示。这种学习系统分成三个部分:输入部,训练部和输出部。

BP神经网络预测实例

%% 清空环境变量 clc clear %% 训练数据预测数据 data=importdata('test.txt'); %从1到768间随机排序 k=rand(1,768); [m,n]=sort(k); %输入输出数据 input=data(:,1:8); output =data(:,9); %随机提取500个样本为训练样本,268个样本为预测样本input_train=input(n(1:500),:)'; output_train=output(n(1:500),:)'; input_test=input(n(501:768),:)'; output_test=output(n(501:768),:)'; %输入数据归一化 [inputn,inputps]=mapminmax(input_train); %% BP网络训练 % %初始化网络结构 net=newff(inputn,output_train,10);

net.trainParam.epochs=1000; net.trainParam.lr=0.1; net.trainParam.goal=0.0000004; %% 网络训练 net=train(net,inputn,output_train); %% BP网络预测 %预测数据归一化 inputn_test=mapminmax('apply',input_test,inputps); %网络预测输出 BPoutput=sim(net,inputn_test); %% 结果分析 %根据网络输出找出数据属于哪类 BPoutput(find(BPoutput<0.5))=0; BPoutput(find(BPoutput>=0.5))=1; %% 结果分析 %画出预测种类和实际种类的分类图 figure(1) plot(BPoutput,'og') hold on plot(output_test,'r*'); legend('预测类别','输出类别') title('BP网络预测分类与实际类别比对','fontsize',12)

BP神经网络原理及应用

BP神经网络原理及应用 1 人工神经网络简介 1.1生物神经元模型 神经系统的基本构造是神经元(神经细胞),它是处理人体内各部分之间相 互信息传递的基本单元。据神经生物学家研究的结果表明,人的大脑一般有1011 个神经元。每个神经元都由一个细胞体,一个连接其他神经元的轴突1010 和一些向外伸出的其它较短分支——树突组成。轴突的功能是将本神经元的输出信号(兴奋)传递给别的神经元。其末端的许多神经末梢使得兴奋可以同时送给多个神经元。树突的功能是接受来自其它神经元的兴奋。神经元细胞体将接受到的所有信号进行简单地处理后由轴突输出。神经元的树突与另外的神经元的神经末梢相连的部分称为突触。 1.2人工神经元模型 神经网络是由许多相互连接的处理单元组成。这些处理单元通常线性排列成组,称为层。每一个处理单元有许多输入量,而对每一个输入量都相应有一个相关 联的权重。处理单元将输入量经过加权求和,并通过传递函数的作用得到输出量,再传给下一层的神经元。目前人们提出的神经元模型已有很多,其中提出最早且影 响最大的是1943年心理学家McCulloch和数学家Pitts在分析总结神经元基本特

性的基础上首先提出的M-P 模型,它是大多数神经网络模型的基础。 )()(1∑=-=n i j i ji j x w f t Y θ (1.1) 式(1.1)中为神经元单元的偏置(阈值),ji w 为连接权系数(对于激发状态, ji w 取正值,对于抑制状态,ji w 取负值) ,n 为输入信号数目,j Y 为神经元输出,t 为时间,f()为输出变换函数,有时叫做激发或激励函数,往往采用0和1二值函数或S形函数。 1.3人工神经网络的基本特性 人工神经网络由神经元模型构成;这种由许多神经元组成的信息处理网络具有并行分布结构。每个神经元具有单一输出,并且能够与其它神经元连接;存在许多(多重)输出连接方法,每种连接方法对应一个连接权系数。严格地说,人工神经网络是一种具有下列特性的有向图: (1)对于每个节点存在一个状态变量xi ; (2)从节点i 至节点j ,存在一个连接权系数wji ; (3)对于每个节点,存在一个阈值; (4)对于每个节点,定义一个变换函数(,,),j i ji j f x w i j θ≠,对于最一般的情况,此函数取()j ji i j i f w x θ-∑形式。 1.4 人工神经网络的主要学习算法 神经网络主要通过两种学习算法进行训练,即指导式(有师)学习算法和非指导式(无师)学习算法。此外,还存在第三种学习算法,即强化学习算法;可把它看做有师学习的一种特例。 (1)有师学习 有师学习算法能够根据期望的和实际的网络输出(对应于给定输入)间的差来调整神经元间连接的强度或权。因此,有师学习需要有个老师或导师来提供期望或目标输出信号。有师学习算法的例子包括规则、广义规则或反向传播算法以及LVQ 算法等。 (2)无师学习 无师学习算法不需要知道期望输出。在训练过程中,只要向神

BP神经网络的matlab实现学习历程

考拉BP神经网络的matlab实现学习历程(一) 考拉BP神经网络的matlab实现学习历程(一) 本文《考拉BP神经网络的matlab实现学习历程》系列由论坛超级版主akjuan整理和原创,我们在此表示特别感谢 这两天在学习bp,总结和汇报一下,和大家一起学习。希望初入神经网络能有所收获,给新手一些帮组和启发。也希望熟悉bp的高手,多提宝贵意见和建议。 学习内容总结成五个小节,具体内容如下: 第一节内容:包括神经网络的基础知识,BP网络的特点,bp主要应用的场合,使用时应注意的问题。 第二节内容:主要是阐述BP中几个容易混绕的概念和问题,包括什么是网络的泛化能力?过拟合是什么,怎么处理?学习速率有什么作用?神经网络的权值和阈值分别是个什么概念?用BP逼近非线性函数,如何提高训练精度? 第三节内容:主要阐述使用matlab实现,为了充分利用数据,得到最优的网络训练结果,在网络建立前,应该进行的基本数据处理问题,包括:BP神经网络matlab实现的基本步骤,数据归一化问题和方法,输入训练数据的乱序排法,以及分类方法,如何查看和保存训练的结果,每次结果不一样问题。 第四节内容:bp神经网络进行交通预测的Matlab例子及源代码,bp神经网络进行交通预测的Matlab程序的优化(主要是按设置误差要求,寻找最优网络过程) 第五节内容:bp神经网络处理蠓虫分类问题的matlab例子及源代码。 不多说,先如主题,第一节,很基础,高手见谅。 什么是神经网络? 神经网络是由很多神经元组成的,首先我们看一下,什么是神经元 上面这个图表示的就是一个神经元,我们不管其它书上说的那些什么树突,轴突的。我用个比较粗浅的解释,可能不太全面科学,但对初学者很容易理解: 1、我们把输入信号看成你在matlab中需要输入的数据,输进去神经网络后 2、这些数据的每一个都会被乘个数,即权值w,然后这些东东与阀值b相加后求和得到u, 3、上面只是线性变化,为了达到能处理非线性的目的,u做了个变换,变换的规则和传输函数有关

BP神经网络模型应用实例

第1节基本原理简介 近年来全球性的神经网络研究热潮的再度兴起,不仅仅是因为神经科学本身取得了巨大的进展.更主要的原因在于发展新型计算机和人工智能新途径的迫切需要.迄今为止在需要人工智能解决的许多问题中,人脑远比计算机聪明的多,要开创具有智能的新一代计算机,就必须了解人脑,研究人脑神经网络系统信息处理的机制.另一方面,基于神经科学研究成果基础上发展出来的人工神经网络模型,反映了人脑功能的若干基本特性,开拓了神经网络用于计算机的新途径.它对传统的计算机结构和人工智能是一个有力的挑战,引起了各方面专家的极大关注. 目前,已发展了几十种神经网络,例如Hopficld 模型,Feldmann等的连接型网络模型,Hinton等的玻尔茨曼机模型,以及Rumelhart等的多层感知机模型和Kohonen的自组织网络模型等等。在这众多神经网络模型中,应用最广泛的是多层感知机神经网络。多层感知机神经网络的研究始于50年代,但一直进展不大。直到1985年,Rumelhart等人提出了误差反向传递学习算法(即BP算),实现了Minsky的多层网络设想,如图34-1所示。

BP 算法不仅有输入层节点、输出层节点,还可有1个或多个隐含层节点。对于输入信号,要先向前传播到隐含层节点,经作用函数后,再把隐节点的输出信号传播到输出节点,最后给出输出结果。节点的作用的激励函数通常选取S 型函数,如 式中Q 为调整激励函数形式的Sigmoid 参数。该算法的学习过程由正向传播和反向传播组成。在正向传播过程中,输入信息从输入层经隐含层逐层处理,并传向输出层。每一层神经元的状态只影响下一层神经 元的状态。如果输出层得不到期望的输出,则转入反

BP神经网络matlab实例(简单而经典)

1、BP网络构建 (1)生成BP网络 net newff PR S S SNl TF TF TFNl BTF BLF PF = (,[1 2...],{ 1 2...},,,) R?维矩阵。 PR:由R维的输入样本最小最大值构成的2 S S SNl:各层的神经元个数。 [1 2...] TF TF TFNl:各层的神经元传递函数。 { 1 2...} BTF:训练用函数的名称。 (2)网络训练 net tr Y E Pf Af train net P T Pi Ai VV TV = [,,,,,] (,,,,,,) (3)网络仿真 = Y Pf Af E perf sim net P Pi Ai T [,,,,] (,,,,) BP网络的训练函数 训练方法训练函数 梯度下降法traingd 有动量的梯度下降法traingdm 自适应lr梯度下降法traingda 自适应lr动量梯度下降法traingdx 弹性梯度下降法trainrp Fletcher-Reeves共轭梯度法traincgf Ploak-Ribiere共轭梯度法traincgp Powell-Beale共轭梯度法traincgb 量化共轭梯度法trainscg 拟牛顿算法trainbfg 一步正割算法trainoss Levenberg-Marquardt trainlm BP网络训练参数 训练参数参数介绍训练函数 net.trainParam.epochs最大训练次数(缺省为10)traingd、traingdm、traingda、 traingdx、trainrp、traincgf、 traincgp、traincgb、trainscg、 trainbfg、trainoss、trainlm net.trainParam.goal训练要求精度(缺省为0)traingd、traingdm、traingda、 traingdx、trainrp、traincgf、 traincgp、traincgb、trainscg、 trainbfg、trainoss、trainlm net.trainParam.lr学习率(缺省为0.01)traingd、traingdm、traingda、 traingdx、trainrp、traincgf、

BP神经网络matlab实例简单而

精心整理p=p1';t=t1'; [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);%原始数据归一化 net=newff(minmax(pn),[5,1],{'tansig','purelin'},'traingdx');%设置网络,建立相应的BP网络 %训练网络 [net,tr]=train(net,pn,tn);%调用TRAINGDM算法训练BP网络 pnew=pnew1'; pnewn=tramnmx(pnew,minp,maxp); anewn=sim(net,pnewn);%对BP网络进行仿真 anew=postmnmx(anewn,mint,maxt);%还原数据

2、BP网络举例 举例1、 %traingd clear; clc; P=[-1-1224;05057]; T=[-1-111-1]; %利用minmax函数求输入样本范围 net=newff(minmax(P),T,[5,1],{'tansig','purelin'},'trainrp'); 0.1336-0.2013-0.4344-0.5000-0.3930-0.1647-.0988... 0.30720.39600.34490.1816-0.312-0.2189-0.3201]; figure; plot(X,D,'*');%绘制原始数据分布图(附录:1-1) net=newff([-11],[51],{'tansig','tansig'}); 0;%训练的最大次数 =0.005;%全局最小误差 net=train(net,X,D); O=sim(net,X); figure; plot(X,D,'*',X,O);%绘制训练后得到的结果和误差曲线(附录:1-2、1-3)V=net.iw{1,1};%输入层到中间层权值

相关主题
文本预览
相关文档 最新文档