摘 要
伴随着信息技术特别是人工智能技术的发展,大数据、深度学习等技术被用于多个工程领域,开创了人类认识宇宙的新纪元。其中,人工神经网络(Artificial Neural Network-ANN)作为人工智能技术的优秀代表,已被成功应用于多个预报领域,取得了意想不到的效果。因此,将ANN用于空气质量预测预报成为许多学者的研究方向。但由于影响PM2.5的因素较多,合理选择影响因素是提高ANN预报精度的重要工作。本文基于Matlab编程,将改进的BP神经网络用于PM2.5的预报;在此基础上,对CO、NO2、O3、PM2.5、PM10和SO2六个环境空气污染物组成的输入数据集进行了因子筛选,通过优选比较,确定了由NO2、O3和PM2.5三种污染物组成的输入数据集的预测效果最好,能将PM2.5预测精度(预测值与实测值的相关系数R)提高到0.59。为基于人工智能的空气质量预报研究提供了有利证据。
关键词:人工神经网络 Matlab 空气质量 预测
一、基于神经网络技术的空气质量预测
在国际上,Yi等[31]创建出用在预估北美某个工业场地的臭氧浓度预估的多层感知模型。这个模型使用在早上臭氧浓度、每天最高气温、二氧化碳等方面的浓度的预估。这个模型应用早晨的臭氧浓度,对其上限实施预估,得到的信息比有关模型要好。新世纪之初,在安德烈塔河口创建了三层神经网络,对拉文纳工业区一小时后地表的二氧化硫浓度实施了预估。这个模型之中包括了10个传入神经元,具备所测物质的浓度、风速等数值。传出的信息是二进制[35]。近些年,我会开始注重此类事项的研讨。国际上研讨人工神经网络在降雨预报以及阳光辐射预警之中的使用。但是,在国内,因为发展速度较慢,加之软硬件上出现的局限,对其开展的研讨需要实施更新。伴随这几年研讨的持续加深,所创建的模型的精度、使用等层面的水准均有较大水准的提升。尽管各类方式在计算量、精度、可行性等方面都有各自的优点,但都存在一些缺点,并有具体的应用条件。因此,在这一领域的研究中,根据具体情况选择合适的方法显得尤为重要。
二、人工神经网络模型
人工神经网络是一类把人体大脑神经网络当成参考,达成某种功能的理论。其把人的中枢神经当成模型,以模拟中枢神经网络构造以及性能的信息整理系统[37]。在后续内容之中把这个含义成为神经网络,其是依靠众多的人工神经元相连实现运算的。其在学习水准上有十分强烈的特征,和及其学习的其余方式有相同,神经网络已经被使用在应对在各个方面的问题之中。
第3.1节 神经网络的结构及其历史
3.1.1 神经网络的结构
神经网络的基础单位是神经元,包含了传入、网络权值、下限值、传出等部分,见下图的内容。其中的代表神经元的r传入,则是网络权重,n是传入信号以及单元的加权和,f是神经元的传递函数或激励函数。具备R维传入S神经元的有代表性的单层神经网络模型内容见图3.1。众多的不复杂的神经元彼此相连产生单个神经网络。形成其中的最后传出的网络层就是传出层,其与中间层就是隐藏层。
图3.1 神经网络的构成及模型
3.1.2 神经网络的背景
对人的大脑实施研究之后导致了人工神经网络含义的出现。在其中,神经元是人为部署出来的,它们连在一起,产生了一种和生物神经网络相似的产物。
神经网络这个词汇通常指的是用在统计学、认知心理学以及AI之中的模型,在管控人体大脑的神经网络则是理论与计算神经学科。
从过去的时间历程实施分析,神经网络模型的应用标志着二十世纪八十年代后期从高度符号化的人工智能(以用条件规则表达知识的专家系统为代表)向低符号化的机器学习(以用动力系统的参数表达知识为代表)的转变。
3.1.3 神经网络的历史
等(1943)[2]打造了某个以数学、阈值逻辑算法为基准的神经网络运算模型。其把神经网络的研讨概括为两个路线。其中一个是注意大脑的生物变化问题,此外的则是注重神经网络在AI之中的发展。在上个实际40年代晚期,赫布发布了一种以神经为基础的能够塑造的学习设定,现在也就是同名的学习方式。
Nathaniel Rochester(1956)等人[4]在IBM704计算机上模拟抽象神经网络的行为。弗兰克·罗森布拉特创造了感知器。其是一类模式辨别算法,使用简便的加减法达成了两层的运算学习网络。(1975)创建了反向传播算法,神经网络才能整理这个往复的过程。其得知了神经网络之中的两个重点问题。
第一个是基本感知器不能处理XOR循环。第二个重要问题是计算机没有足够的能力来处理大型神经网络所需的长计算时间。在计算机变得更强大之前,神经网络发展缓慢。
3.1.4 神经网络的反向传播算法与复兴
随后的一个重点的前进方向是反向传播算法。这个方式可以切实地解开XOR事项,在更大范围上解开多层相关的锻炼难题。
在上个世纪80年代中期,分布式并行整理(当时称为连接主义)开始流行。David E. Rumelhart和James McClelland的教材对于联结主义在计算机模拟神经活动中的应用提供了全面的论述。
神经网络传统上被认为是大脑中的神经活动的简化模型,虽然这个模型和大脑的生理结构之间的关联存在争议。人们不清楚人工神经网络能多大程度地反映大脑的功能。
支持向量机和其他更简单的方法(如线性分类器)在机器学习领域逐渐比神经网络更受欢迎,但是在2000年代后期,深度学习的出现使人们重新对神经网络产生了兴趣。2006年以后,已经被使用在打造生物物理模拟以及神经形态运算的相关装置。近些年的研讨证实,纳米部件用在大量的主成分解析以及卷积神经网络之中能发挥十分之大的作用。
第3.2节 神经网络的类型
神经网络的类别十分丰富。其能够从某种视角对生物神经体系进行各种层级的抽象以及模拟。从功能特征、学习特点方面进行划分,具体包含了感知、线性、BP神经网络、反馈网络等[37]。静态以及动态网络也能够依据中间层有没有出现延迟或回馈实施类别的划分。前向网络指的是神经元在网络之内的层级排列,所有神经元只和前一层神经元连在一起。顶层是传出层,底层是传入层。传入层与中间层也是隐藏层。其数量至多是单个或数个。正向网络大范围的使用在感知器、线性网络等范围之中。此研讨使用的BP网络就是这个类别。
第3.3节 神经网络的仿真、学习与训练
神经网络的仿真环节实际上是神经网络依靠以网络传入信息的运算为基准来的得到对应的网络传出的环节。相关的仿真能够依据传入的信息以及神经网络的各个类别使用对应的方式。对静态神经网络来讲,不管是矩阵式或是序列式,网络传入信息的仿真所得的信息均是一致的。对动态网络来讲,其模拟传出不但和目前的网传入信息相关,且和以往的传入信息存在关联,也就是和传入信息的次序存在关联。为此,在动态神经网络接收以序列方式阐述的输入信息时,就算其中的信息要素次序有差别,模拟所得到的信息也是有差别的。最有代表性的追踪学习算法是BP算法,也就是误差传递反向传递算法。
目前,该方法在国内研究中得到了广泛应用[38]。在强化学习中,外在条件仅仅是提供了评定数据,无法合理的应答系统的传出。依据所有网络锻炼事项的对应数目,相关的锻炼方式包含了渐进式与批量两个类别。前者是网络学习,其依据神经网络把获得的所有对传入以及目标向量调节网络的权值以及阈值。后者指的是在全部传入以及目标向量集在准备完毕之后,依据对应的学习算法对网络权重和值实施成批的调节。在一样的神经网络下,两类各自的锻炼方式获得的训练结果是有差别的。在之内,神经网络的锻炼是在上述两种方式的支持下实现的[39]。在神经网络学习以及锻炼之中,要依据网络的客观状况选定锻炼方式以及能力。
四、 多指标预测模型建立及参数优化
第5.1节 多指标预测模型建立
5.1.1 归一化处理
对信息使用这种方式进行整理之后,能实现很好的处理实效。
5.1.2 多指标预测模型
创建3层BP人工神经网络模型。将2017年一天的CO、NO2、O3、PM2.5、PM10和SO2浓度数据作为输入,将第二天PM2.5浓度值作为输出数据,隐含层使用30个神经元个数,如将1月1日的CO、NO2、O3、PM2.5、PM10和SO2浓度作为输入,将1月2日PM2.5浓度作为输出;再将1月2日浓度作为输入,将1月3日PM2.5浓度作为输出;这样依次类推形成2017年数据集,作为训练数据集,训练3层BP网络模型。再利用同样的方法将2018年的数据集作为验证数据集,来考核验证模型的表现,最终将2018年PM2.5实测日均浓度与预测日均浓度的相关系数R作为评价模型预测能力的评价指标,R的计算方法如公式(4·2),相关计算程序详见附件。
5.1.3 计算结果
(1)Matlab人工神经网络计算迭代过程如图5.1所示:
图5.1 多指标预测模型计算效果
图5.1中所显示的为2017年北京官园站一天的CO、NO2、O3、PM2.5、PM10和SO2浓度数据作为输入,将第二天PM2.5浓度值作为输出数据所训练的运行过程显示,图中所示,最大迭代次数为10000次,运行时间为11秒,运行速率为0.05。
程序
附录一:2017年三天PM2.5数据训练程序
clc
clear all
x=[1 1 1];
y=[1 1 1];
[hang,lie]=size(x);
average=sum(x)/hang;
resid=x-repmat(average,hang,1);
resid2=resid.*resid;
sj2=sum(resid2)/hang;
sj=sqrt(sj2);
xinit=resid./repmat(sj,hang,1);
net=newff(minmax(xinit'),[20,1],{'tansig','purelin'},'traingda');
net.trainparam.show=500;
net.trainparam.lr=0.08;
net.trainparam.lr_inc=1.2;
net.trainparam.epochs=10000;
net.trainparam.goal=1e-5;
[net,tr]=train(net,xinit',y);
b=sim(net,xinit');
aa=corrcoef(b,y);
xgxstrain=sqrt(aa(1,2)*aa(1,2))
plot(1:345,b);
hold on
plot(1:345,y);
hold off
附录二:2017年三天PM2.5数据训练2018年数据程序
clc
clear all
x=[1 1 1];
y=[1 1 1];
[hang,lie]=size(x);
average=