1、 本科生毕业论文(设计)题目 基于神经网络的空气质量检测 姓名 臧鹏娟 学号 0511601073 院系 电气信息与自动化学院 专业 自动化 指导教师 史丽红 职称 讲师 2009 年 5 月 20 日曲阜师范大学教务处制目录摘要1关键词2ABSTRACT2KEY WORDS2引言21 BP神经网络概述31.1 基本原理31.2 BP算法学习过程42 空气质量检测模型的建立62.1样本数据62.1.1收集和整理分组62.1.2输入/输出变量的确定及其数据的预处理72.2神经网络拓扑结构的确定72.2.1隐层数72.2.2隐层节点数72.3神经网络的训练82.4神经网络模型参数的确定102.4.
2、1隐层的数目102.4.2隐层神经元数的选择102.4.3 学习率和动量因子132.4.4 初始权值的选择132.4.5 收敛误差界值Emin132.4.6输入数据的预处理133 MATLAB实现和结果分析143.1 MATLAB神经网络工具箱的应用143.2 基于MATLAB的BP算法的实现过程143.3训练神经网络154结语23致谢23参考文献23基于神经网络的空气质量检测05级自动化 臧鹏娟指导教师 史丽红摘要:空气质量的好坏反映了空气污染程度,它是依据空气中污染物浓度的高低来判断的。污染物浓度由于受风向、风速、气温、湿度、污染源排放情况等多种因素的影响,使得空气质量问题具有很大的不确定
3、性和一定的复杂性。神经网络作为一种描述和刻画非线性的强有力工具,具有较强的自学习、自组织、自适应能力等特点,特别适合于对具有多因素性、不确定性、随机性、非线性和随时间变化特性的对象进行研究。本文基于神经网络的BP算法,利用MATLAB神经网络工具箱建立了空气质量模型。文中,采用MATLAB 的rand()函数在各级评价标准内按随机均匀分布方式内插生成训练样本和检验样本,利用premnmx()函数对数据进行预处理,调用激活函数对网络权值进行训练,并同其他评价方法比较,取得了良好的评价结果。同时表明此方法具有一定的客观性和积极性。关键词:BP神经网络;空气质量; MATLAB神经网络工具箱The
4、detection of air quality based on neural network Student majoring in automation Zang Pengjuan Tutor Shi LihongAbstract:The quality of air quality reflects the extent of air pollution, which is based on the concentration of pollutants in the air to determine the level of the air. Concentration of pol
5、lutants due to wind direction, wind speed, air temperature, humidity, pollutant emissions and other factors, makes the issue of air quality is a great uncertainty and a certain degree of complexity. Neural network description and characterization as a powerful tool for non-linear phenomenon, with st
6、rong self-learning, self-organization, the characteristics of adaptive capacity, especially suitable for multi-factor, uncertainty, randomness, non-linear and time-varying characteristics of the object of research. This design bases on the BP neural network algorithm, using MATLAB neural network too
7、lbox to establish air quality model. In this text, using the MATLABs rand () function at all levels within the evaluation criteria uniformly distributes random interpolation methods to generate training samples and the samples tested. Then the paper uses premnmx () function on the data pre-processin
8、g, and transfers activation function of network weights training and compares with other evaluation methods, and achieved good results which indicate the objectivity and enthusiasm of the design.Key words:BP neural network; Air quality; MATLAB neural network toolbox引言神经网络(又称人工神经网络,Neural Networks),是
9、由众多简单的神经元连接而成的一个网络,通过模拟人脑细胞的分布式工作特点和自组织功能实现并行处理、自学习和非线性映射等功能。尽管每个神经元结构、功能都不复杂,但网络的整体动态行为却是极为复杂的,可以组成高度非线性动力学系统,从而可以表达很多复杂的物理系统。神经网络作为一种描述和刻画非线性现象的强有力工具,具有较强的自学习、自组织、自适应能力等特点,特别适合于对具有多因素性、不确定性、随机性、非线性和随时间变化特性的对象进行研究5。 神经网络在环境科学与工程中的应用如环境质量评价、环境系统因素预测、环境因素定量关系模拟、构效分析、成因分析和污染防治系统建模已取得了令人瞩目的进展。空气质量预报主要是
10、依靠环境空气质量自动监测系统连续不断地实时监测数据,并自动传输到控制室,经数据处理后得出当天的空气污染指数,再向社会公布。自动监测系统每4分钟就产生一组监测数据,连续不断地测量,然后计算出小时均值和日均值,一般来说,日均值是采用上一天中午12时到次日12时的数据。根据环境空气质量标准和各项污染物对人体健康和生态的影响来确定各级污染物浓度的限值,详细请参照附录表一:中华人民共和国国家标准空气质量标准(GB3095-1996)各项污染物的浓度限值(1999年)。环境空气质量由于受风向、风速、气温、湿度、污染源排放情况等多种因素的影响,使得环境空气质量问题具有很大的不确定性。论文将BP神经网络应用到
11、环境空气质量当中,利用MATLAB的神经网络工具箱训练网络,建立起了环境空气质量检测模型。 1 BP神经网络概述1.1 基本原理BP神经网络是一种利用误差反向传播算法的人工神经网络,具有很强的自学习自适应抗干扰能力。其网络结构由输入层中间层(隐层)和输出层构成,输入层接收到的信号经过隐层激活放大后再由输出层,信号传递时每一层神经元通过权值只影响下一层神经元的状态,结构模型图如图1 图1 BP神经网络结构模型图其基本原理是:先从基础数据中给出有代表性的网络输入信号(即训练样本),并根据所要关心的具体问题构造出期望的目标信号(教师样本)输入网络,然后在网络学习和自适应过程中,通过输入信号在正向的激
12、活放大传播和误差的反向传播,不断修改和调整各层神经元的连接权值,使输出信号与期望目标输出信号间的误差减至最小,当其值小于某一给定值时,即认为完成或训练好该神经网络,在此基础上将进行下一步的预测或拟合。1.2 BP算法学习过程BP算法学习过程由信号的正向传播与误差的反向传播两个过程组成。设输入为P,输入神经元有r个,隐含层内有s1个神经元,激活函数为F1,输出层内有s2个神经元,对应的激活函数为F2,输出为A,目标矢量为T。(一)正向传播:输入样本输入层各隐层(处理)输出层1) 隐含层中第i个神经元的输出为:2) 输出层第k个神经元的输出为:3) 定义误差函数为:注1:若输出层实际输出与期望输出
13、(教师信号)不符,则转入2)(误差反向传播过程)(二)误差反向传播2:输出误差(某种形式)隐层(逐层)输入层1) 输出层的权值变化对从第i个输入到第k个输出的权值,有:其中:同理可得:2) 隐含层权值变化对从第j个输入到第i个输出的权值,有:其中:同理可得:在MATLAB工具箱中,上述公式的计算均已编成函数的形式,通过简单的书写调用即可方便地获得结果。误差反向传播过程实际上是通过计算输出层的误差,然后将其与输出层激活函数的一阶导数相乘来求得。由于隐含层中没有直接给出目标矢量,所以利用输出层的进行误差反向传递来求出隐含层权值的变化量。然后计算,并同样通过将与该层激活函数的一阶导数相乘,而求得,以
14、此求出前层权值的变化量。如果前面还有隐含层,沿用上述同样方法依此类推,一直将输出误差一层一层的反推算到第一层为止。注2:权值调整的过程,也就是网络的学习训练过程(这也就是学习的由来权值调整)。BP神经网络的学习训练流程图,如图2开始初始化,给出一组训练样本,并对阈值和各连接权值分别赋初值输入训练样本前向传播:分别计算隐层和输出层各神经元的输出计算输出层上各神经元的值,并调整该层上神经元的输出反向传播:逐层计算各神经元的值,调整各连接权值和阈值结束E满足要求?图2 BP神经网络算法流程图2 空气质量检测模型的建立2.1样本数据72.1.1收集和整理分组采用BP神经网络方法建模的首要和前提条件是有
15、足够多典型性好和精度高的样本。而且,为监控训练(学习)过程使之不发生“过拟合”和评价建立的网络模型的性能和泛化能力,必须将收集到的数据随机分成训练样本、检验样本(10%以上)和测试样本(10%以上)3部分。此外,数据分组时还应尽可能考虑样本模式间的平衡。2.1.2输入/输出变量的确定及其数据的预处理一般地,BP网络的输入变量即为待分析系统的内生变量(影响因子或自变量)数,一般根据专业知识确定。若输入变量较多,一般可通过主成份分析方法压减输入变量,也可根据剔除某一变量引起的系统误差与原系统误差的比值的大小来压减输入变量。输出变量即为系统待分析的外生变量(系统性能指标或因变量),可以是一个,也可以
16、是多个。一般将一个具有多个输出的网络模型转化为多个具有一个输出的网络模型效果会更好,训练也更方便。由于BP神经网络的隐层一般采用Sigmoid转换函数,为提高训练速度和灵敏性以及有效避开Sigmoid函数的饱和区,一般要求输入数据的值在01之间。因此,要对输入数据进行预处理。一般要求对不同变量分别进行预处理,也可以对类似性质的变量进行统一的预处理。如果输出层节点也采用Sigmoid转换函数,输出变量也必须作相应的预处理,否则,输出变量也可以不做预处理。预处理的方法有多种多样,各文献采用的公式也不尽相同。但必须注意的是,预处理的数据训练完成后,网络输出的结果要进行反变换才能得到实际值。再者,为保
17、证建立的模型具有一定的外推能力,最好使数据预处理后的值在0.20.8之间。2.2神经网络拓扑结构的确定2.2.1隐层数一般认为,增加隐层数可以降低网络误差(也有文献认为不一定能有效降低),提高精度,但也使网络复杂化,从而增加了网络的训练时间和出现“过拟合”的倾向。Hornik等早已证明:若输入层和输出层采用线性转换函数,隐层采用Sigmoid转换函数,则含一个隐层的MLP网络能够以任意精度逼近任何有理函数。显然,这是一个存在性结论。这实际上已经给了我们一个基本的设计BP网络的原则,应优先考虑3层BP网络(即有1个隐层)。实际上误差精度的提高可以通过增加隐含层中神经元数目来获得,其训练效果要比增
18、加隐层数更容易观察和实现。所以一般情况下,应优先考虑增加隐含层中的神经元数。另外一个问题:能不能仅用具有非线性激活函数的单层网络来解决问题呢?结论是:没有必要或效果不好。因为能用单层非线性网络解决的问题,用自适应线性网络一定也能解决,而且自适应线性网络的运算速度还更快。而对于只能用非线性函数解决的问题,单层精度又不够高,也只有增加层数才能达到期望的结果。这主要还是因为一层网络的神经元数被所要解决的问题本身限制造成的。2.2.2隐层节点数在BP 网络中,隐层节点数的选择非常重要,它不仅对建立的神经网络模型的性能影响很大,而且是训练时出现“过拟合”的直接原因,但是目前理论上还没有一种科学的和普遍的
19、确定方法。目前多数文献中提出的确定隐层节点数的计算公式都是针对训练样本任意多的情况,而且多数是针对最不利的情况,一般工程实践中很难满足,不宜采用。事实上,各种计算公式得到的隐层节点数有时相差几倍甚至上百倍。为尽可能避免训练时出现“过拟合”现象,保证足够高的网络性能和泛化能力,确定隐层节点数的最基本原则是:在满足精度要求的前提下取尽可能紧凑的结构,即取尽可能少的隐层节点数。研究表明,隐层节点数不仅与输入/输出层的节点数有关,更与需解决的问题的复杂程度和转换函数的形式以及样本数据的特性等因素有关。在确定隐层节点数时必须满足下列条件:(1)隐层节点数必须小于N-1(其中N为训练样本数),否则,网络模
20、型的系统误差与训练样本的特性无关而趋于零,即建立的网络模型没有泛化能力,也没有任何实用价值。同理可推得:输入层的节点数(变量数)必须小于N-1。(2)训练样本数必须多于网络模型的连接权数,否则,样本必须分成几部分并采用“轮流训练”的方法才可能得到可靠的神经网络模型。总之,若隐层节点数太少,网络可能根本不能训练或网络性能很差;若隐层节点数太多,虽然可使网络的系统误差减小,但一方面使网络训练时间延长,另一方面,训练容易陷入局部极小点而得不到最优点,也是训练时出现“过拟合”的内在原因。因此,合理隐层节点数应在综合考虑网络结构复杂程度和误差大小的情况下用节点删除法和扩张法确定。2.3神经网络的训练(一
21、)训练BP网络的训练就是通过应用误差反传原理不断调整网络权值使网络模型输出值与已知的训练样本输出值之间的误差平方和达到最小或小于某一期望值。虽然理论上早已经证明:具有1个隐层(采用Sigmoid转换函数)的BP网络可实现对任意函数的任意逼近。但遗憾的是,迄今为止还没有构造性结论,即在给定有限个(训练)样本的情况下,如何设计一个合理的BP网络模型并通过向所给的有限个样本的学习(训练)来满意地逼近样本所蕴含的规律(函数关系,不仅仅是使训练样本的误差达到很小)的问题,目前在很大程度上还需要依靠经验知识和设计者的经验。因此,通过训练样本的学习(训练)建立合理的BP神经网络模型的过程,在国外被称为“艺术
22、创造的过程”,是一个复杂而又十分烦琐和困难的过程。由于BP网络采用误差反传算法,其实质是一个无约束的非线性最优化计算过程,在网络结构较大时不仅计算时间长,而且很容易限入局部极小点而得不到最优结果。目前虽已有改进BP法、遗传算法(GA)和模拟退火算法等多种优化方法用于BP网络的训练(这些方法从原理上讲可通过调整某些参数求得全局极小点),但在应用中,这些参数的调整往往因问题不同而异,较难求得全局极小点。这些方法中应用最广的是增加了冲量(动量)项和自适应调整的改进BP算法。(二)学习率和冲量系数学习率影响系统学习过程的稳定性。大的学习率可能使网络权值每一次的修正量过大,甚至会导致权值在修正过程中超出
23、某个误差的极小值呈不规则跳跃而不收敛;但过小的学习率导致学习时间过长,不过能保证收敛于某个极小值。所以,一般倾向选取较小的学习率以保证学习过程的收敛性(稳定性),通常在0.010.8之间。 增加冲量项的目的是为了避免网络训练陷于较浅的局部极小点。理论上其值大小应与权值修正量的大小有关,但实际应用中一般取常量。通常在01之间,而且一般比学习率要大。(三)网络的初始连接权值 BP算法决定了误差函数一般存在(很)多个局部极小点,不同的网络初始权值直接决定了BP算法收敛于哪个局部极小点或是全局极小点。因此,要求计算程序必须能够自由改变网络初始连接权值。由于Sigmoid转换函数的特性,一般要求初始权值
24、分布在-0.50.5之间比较有效。(四)网络模型的性能和泛化能力 训练神经网络的首要和根本任务是确保训练好的网络模型对非训练样本具有好的泛化能力(推广性),即有效逼近样本蕴含的内在规律,而不是看网络模型对训练样本的拟合能力。从存在性结论可知,即使每个训练样本的误差都很小(可以为零),并不意味着建立的模型已逼近训练样本所蕴含的规律。因此,仅给出训练样本误差(通常是指均方根误差RSME或均方误差、AAE或MAPE等)的大小而不给出非训练样本误差的大小是没有任何意义的。 要分析建立的网络模型对样本所蕴含的规律的逼近情况(能力),即泛化能力,应该也必须用非训练样本(检验样本和测试样本)误差的大小来表示
25、和评价,这也是之所以必须将总样本分成训练样本和非训练样本而绝不能将全部样本用于网络训练的主要原因之一。判断建立的模型是否已有效逼近样本所蕴含的规律,最直接和客观的指标是从总样本中随机抽取的非训练样本(检验样本和测试样本)误差是否和训练样本的误差一样小或稍大。非训练样本误差很接近训练样本误差或比其小,一般可认为建立的网络模型已有效逼近训练样本所蕴含的规律,否则,若相差很多(如几倍、几十倍甚至上千倍)就说明建立的网络模型并没有有效逼近训练样本所蕴含的规律,而只是在这些训练样本点上逼近而已,而建立的网络模型是对训练样本所蕴含规律的错误反映。因为训练样本的误差可以达到很小,因此,用从总样本中随机抽取的
26、一部分测试样本的误差表示网络模型计算和预测所具有的精度(网络性能)是合理的和可靠的。 值得注意的是,判断网络模型泛化能力的好坏,主要不是看测试样本误差大小的本身,而是要看测试样本的误差是否接近于训练样本和检验样本的误差。(五)合理网络模型的确定 对同一结构的网络,由于BP算法存在(很)多个局部极小点,因此,必须通过多次(通常是几十次)改变网络初始连接权值求得相应的极小点,才能通过比较这些极小点的网络误差的大小,确定全局极小点,从而得到该网络结构的最佳网络连接权值。必须注意的是,神经网络的训练过程本质上是求非线性函数的极小点问题,因此,在全局极小点邻域内(即使网络误差相同),各个网络连接权值也可
27、能有较大的差异,这有时也会使各个输入变量的重要性发生变化,但这与具有多个零极小点(一般称为多模式现象)(如训练样本数少于连接权数时)的情况是截然不同的。此外,在不满足隐层节点数条件时,总也可以求得训练样本误差很小或为零的极小点,但此时检验样本和测试样本的误差可能要大得多;若改变网络连接权初始值,检验样本和测试样本的网络计算结果会产生很大变化,即多模式现象。对于不同的网络结构,网络模型的误差或性能和泛化能力也不一样。因此,还必须比较不同网络结构的模型的优劣。一般地,随着网络结构的变大,误差变小。通常,在网络结构扩大(隐层节点数增加)的过程中,网络误差会出现迅速减小然后趋于稳定的一个阶段,因此,合
28、理隐层节点数应取误差迅速减小后基本稳定时的隐层节点数。 总之,合理网络模型是必须在具有合理隐层节点数、训练时没有发生“过拟合”现象、求得全局极小点和同时考虑网络结构复杂程度和误差大小的综合结果。设计合理BP网络模型的过程是一个不断调整参数的过程,也是一个不断对比结果的过程,比较复杂且有时还带有经验性。这个过程并不是想象的那样,随便套用一个公式确定隐层节点数,经过一次训练就能得到合理的网络模型(这样建立的模型极有可能是训练样本的错误反映,没有任何实用价值)。 虽然神经网络的类型很多,建立神经网络模型时,根据研究对象的特点,可以考虑不同的神经网络模型。 前馈型BP网络即误差逆传播神经网络是最常用、
29、最流行的神经网络。BP网络的输入和输出关系可以看成是一种映射关系,即每一组输入对应一组输出。由于网络中神经元作用函数的非线性,网络实现是复杂的非线性映射。关于这类网络对非线性的逼近能力,Hornikl等分别利用不同的方法证明了如下一个事实:仅含有一个隐层的前向网络能以任意精度逼近定义在Rn的一个紧集上的任意非线性函数。误差反向算法是最著名的多层前向网络训练算法,尽管存在收敛速度慢、局部极值等缺点,但可通过各种改进措施来提高它的收敛速度、克服局部极值现象,而且具有简单、易行、计算量小、并行性强等特点,目前仍是多层前向网络的首选算法。2.4神经网络模型参数的确定 由于传统的误差反传BP算法较为成熟
30、,且应用广泛,因此努力提高该方法的学习速度具有较高的实用价值。BP算法中有几个常用的参数,包括学习率,动量因子,形状因子及收敛误差界值E等。这些参数对训练速度的影响最为关键。2.4.1隐层的数目 理论上虽然证明了这类网络的逼近能力,对于网络结构的要求,并没有给出明确的说明。因而在应用中神经网络模型的结构确定常常有人为的主观性和艺术性,缺乏一个指导原则。而网络训练与结构紧密相关,太大的网络结构在训练时效率不高,而且还会由于过拟合(overfitting)造成网络的性能脆弱,泛化能力(generalization ability)下降;太小的网络可能就根本不收敛。考虑到本研究的特点,结合不同隐层网
31、络结构的训练结果,本文选择了隐层数L=1的网络结构模型。2.4.2隐层神经元数的选择 隐层神经元数的选择是一个十分复杂的问题。因为没有很好的解析式表示,可以说隐层神经元数与问题的要求、输入层与输出层神经元的数量、训练样本的数量等都有直接关系。事实上隐层神经元太少不可能将网络训练出来,但太多又使学习时间过长,使网络不“不强壮”,泛化能力下降,即不能识别以前没有直接接收到的样本,容错性差。隐层神经元数为4,5的训练结果如下:图3 隐层神经元为4的训练结果图4 隐层神经元为5的训练结果同理比较神经元数为6,9,10等等,可得当隐层神经元数为5时最好,所以,隐层节点为5个。神经网络模型的各层节点数分别
32、为:输入层3个;隐层5个;输出层1个。综合以上所述,建立空气质量检测神经网络模型如图3所示。图5 空气质量检测神经网络模型2.4.3 学习率和动量因子 BP算法本质上是优化计算中的梯度下降法,利用误差对于权、阀值的一阶导数信息来指导下一步的权值调整方向,以求最终得到误差最小。为了保证算法的收敛性,学习率必须小于某一上限,一般取01,而且越接近极小值,由于梯度变化值逐渐趋于零,算法的收敛就越来越慢。在网络参数中,学习率和动量因子是很重要的,它们的取值直接影响到网络的性能,主要是收敛速度。为提高学习速度,应采用大的。但太大却可能导致在稳定点附近振荡,乃至不收敛。针对具体的网络结构模型和学习样本,都
33、存在一个最佳的学习率和动量因子,它们的取值范围一般01之间,视实际情况而定。2.4.4 初始权值的选择 在前馈多层神经网络的BP算法中,初始权、阈值一般是在一个固定范围内按均匀分布随机产生的。一般文献认为初始权值范围为-11之间,初始权值的选择对于局部极小点的防止和网络收敛速度的提高均有一定程度的影响,如果初始权值范围选择不当,学习过程一开始就可能进入“假饱和”现象,甚至进入局部极小点,网络根本不收敛。初始权、阈值的选择因具体的网络结构模式和训练样本不同而有所差别,一般应视实际情况而定。本文采用newff()函数自动完成权值和阈值的初始化。2.4.5 收敛误差界值Emin 在网络训练过程中应根
34、据实际情况预先确定误差界值。误差界值的选择完全根据网络模型的收敛速度大小和具体样本的学习精度来确定。当Emin 值选择较小时,学习效果好,但收敛速度慢,训练次数增加。如果Emin值取得较大时则相反。本文神经网络的误差界值Emin为0.001,即在迭代计算时误差值EEmin0.001时,则认为学习完成,停止计算,输出结果。2.4.6输入数据的预处理 在BP算法中,神经元具有饱和非线性特征(如果神经元的总输入与阈值相距甚远,神经元的实际输出要么为最大值、要么为最小值)。前馈型静态网络的神经元作用函数的总输入是与其相连的其它神经元输出的加权,在使用BP算法时,要防止神经元进入饱和状态,必须限制与其相
35、连的其它神经元的输出幅值。由于输入层只起数据传送作用,层中的神经元是扇区单元,通常使用线性作用函数(输出等于输入),不存在饱和状态。第一隐层中的神经元通常采用饱和非线性作用函数,学习过程中会出现饱和现象,因此要防止此层神经元进入饱和,必须限制网络输入的幅值。所以,为减少平台现象出现的可能,加快学习,应对网络的输入样本进行归一化(或称正则化)处理,这也是BP算法必须对输入数据进行预处理的真正原因。本文使用的标准化方法如下: P,minp,maxp,T,mint,maxt=premnmx(p,t);式中,p为输入量,t为输出量,P和T为经过归一化处理后的实验数据。3 MATLAB实现和结果分析3.
36、1 MATLAB神经网络工具箱的应用 在网络训练过程中使用的是Matlab 6.5 for Windows软件,对于BP神经元网络的训练使用了Neural Networks Toolbox for Matlab。美国的Mathwork公司推出的MATLAB软件包既是一种非常实用有效的科研编程软件环境,又是一种进行科学和工程计算的交互式程序。MATLAB中的神经网络工具箱以神经网络为基础,利用MATLAB脚本语言构造出典型的神经网络激活函数,使设计者对所选网络的计算变成对激活函数的调用,可以大大方便权值训练,减少训练程序工作量,有效的提高工作效率,为用户提供了极大方便。3.2 基于MATLAB的
37、BP算法的实现过程(1) 原始数据的预处理。(2) 数据归一化。为了适应网络的训练,以便与网络向前传播输出值对比计算目标函数误差,需要对数据进行归一化。通过premnmx()函数进行归一化处理,其数据分布在-11之间。(3) BP网络模型的建立。MATLAB的神经网络工具箱提供了最多3层向前网络,隐层神经元传递函数多为S型函数,这种非线性传递函数神经元可以学习输入输出之间的线性和非线性关系;输出层神经元传递函purelin(),这种纯线性传递函数可以拓宽网络输出。网络输入层和隐层节点数对网络性能有较大影响。隐层节点数太多,网络训练时间长;节点太少,误差精度又达不到要求。(4)BP神经网络的训练
38、。在训练之前必须对权值和阈值的初始化,采用MATLAB中newff函数可自动完成这一过程。newff函数常用格式为: net=newff(PR,S1 S2 SN,TF1 TF2 TFN,BTF);式中,PR为R2维矩阵,表示R维输入矢量中每维输入的最小值与最大值之间的范围;S1 S2 SN中各元素分别表示各层神经元的数目;TF1 TF2 TFN中各元素分别表示各层神经元采用的传递函数;BTF表示神经网络训练时采用的训练函数。应用minmax函数可以求出样本的输入范围,使用附加动量法和自适应学系速率相结合的技术算法函数traingdx为训练函数,设定训练次数、要求精度、学习率等训练参数,进行网络
39、训练,使网络的学习值和期望值达到精度要求,保存权值和阈值。(5) 网络仿真。训练结束后,利用sim函数对训练后的网络进行网络仿真,调用postreg函数对训练后网络的仿真输出和目标输出做线性回归分析,以检验网络的训练效果。 3.3训练神经网络空气质量评价标准参照表1,具体见附录1中华人民共和国国家标准环境空气质量标准(GB3095-1996)各项污染物的浓度限值(1999年)表一 空气质量评价标准参照污染物名称Pollutants取值时间Time浓度限度concentration value浓度单位Concentrention unit一级level one二级Level two三级Level
40、 three二氧化硫(SO2)日均值Daily average0.050.150.25mg/m3可吸入颗粒物(PM10)0.050.150.25二氧化氮(NO2)0.040.080.12(1)准备工作训练样本、检测样本及其期望目标的生成。 训练样本46:采用MATLAB 的rand()函数在各级评价标准内按随机均匀分布方式内插生成训练样本,小于一级标准生成200 个,一、二级标准之间生成200 个,二、三级标准之间生成200个,共形成600个训练样本。解决了过去仅用各级评价标准作为训练样本,导致训练样本数过少和无法构建检测样本的问题。步骤:用MATLAB新建一个M文件,内容如下:p1(1,:)
41、=0+0.05.*rand(1,200);p1(2,:)=0+0.05.*rand(1,200);p1(3,:)=0+0.04.*rand(1,200);p2(1,:)=0.05+0.1.*rand(1,200);p2(2,:)=0.05+0.05.*rand(1,200);p2(3,:)=0.04+0.04.*rand(1,200);p3(1,:)=0.15+0.1.*rand(1,200);p3(2,:)=0.1+0.05.*rand(1,200);p3(3,:)=0.08+0.04.*rand(1,200);p=p1 p2 p3;运行生成如下所示:图6 输入变量生成结果检测样本:用生成训
42、练样本同理的方法生成检测样本,小于一级标准生成50个,一、二级标准之间生成50个,二、三级标准之间生成50个,共形成150个检测样本。期望目标(对于训练样本与检测样本):采用一个输出神经元,小于一级标准的训练样本和检测样本的期望目标输出为1;一、二级标准之间的训练样本和检测样本的期望目标输出为2;同理,二、三级标准之间的训练样本和检测样本的期望目标输出为3。步骤:用MATLAB新建一个M文件,内容如下:t1=ones(1,200);t2=1+ones(1,200);t3=2+ones(1,200);t=t1 t2 t3;保存为t.m,运行生成如下所示:图7 期望目标生成结果(2)空气质量评价等
43、级的划分界限据上述生成训练样本与检测样本目标输出的思路可以确定一、二、三各级空气的网络输出范围分别为: 1 2 3(3) 原始数据的预处理试验两种预处理方案:其一,归一化,利用PREMNMX函数将原始数据归一化到-1与1之间;其二,不归一化,原始数据不进行预处理。(4) 构建网络BP网络输入神经元数取决于空气质量评价标准的指标数,根据题意定为3,输出层神经元数设定为1,利用MATLAB中的函数训练网络,确定所需隐层单元数。隐层激励函数为tansig()函数,输出层激励函数为线性函数purelin()网络对象建立的主程序如下所示:R, Q=size(p) ; S2, Q=size(t) ;S1=
44、5;P,minp,maxp,T,mint,maxt=premnmx(p,t);%对数据进行预处理net=newff(minmax(P),5, 1, tansig,purelin, traingdx);文中所构建的BP网络具有一个隐层和一个输出层,其中隐层共有5个神经元,输出有1个神经元,隐层和输出层的传递函数分别为tansig和purelin,采用的训练函数为traingdx,其他均采用BP网络的默认设置。在调用该网络程序时,对所有作为输入单元的数据均要通过premnmx()函数进行预处理。程序运行生成:图8 网络net生成结果(5)训练网络如下:net.trainFcn=traingdx;n
45、et.trainParam.epochs=7000;net.trainParam.goal=1e-3;net.trainParam.lr=0.05; (net,tr)=train(net,P,T);运行结果如下:图9 训练实现(6)训练样本结果仿真Y=sim(net,P);y=postmnmx(Y,mint,maxt);figure(1)x=1:600;plot(x,y,+b,x,t,or);xlabel(输入);ylabel(输出);text(200,1,一级 优);text(400,2,二级 良好);text(400,3.3,三级 差);text(100,3,蓝色+ 实际输出)text(1
46、00,2.7,红色o 目标输出)运行结果如下图所示:图10 训练样本结果仿真(7)调用postreg函数对训练后网络的仿真输出和目标输出做线性回归分析,以检验网络的训练效果。m,b,r=postreg(y,t);运行如下图所示: 图11 线性回归分析图R为输出矢量和目标矢量之间的相关系数,当R为1时,输出和目标矢量之间的相关性最好,从图上知R=0.999,说明相关性比较好。检验样本输出结果:图12 检验样结果仿真本图由上图可知:对训练样本而言,当输入为小于一级标准的限值时输出均在1左右;当输入大于一级限值小于二级限值时,输出均在2左右;当输入大于二级限值小于三级限值时,输出均在3左右。同样,检验样本的检测结果也比较符合目标输出。表2 部分样本检验结果和期望输出比较表检测样本SO2NO2PM10实际输出期望输出10.045760.044560.034761.127821