参考]基于神经网络的空气质量检测内容摘要:

,隐层节点为 5个。 神经网络模型的各层节点 数分别为:输入层 3 个;隐层 5个;输出层 1个。 综合以上所述,建立空气质量检测神经网络模型如图 3所示。 图 5 空气质量检测神经网络模型 学习率  和动量因子  BP算法本质上是优化计算中的梯度下降法,利用误差对于权、阀值的一阶导数信息来指导下一步的权值调整方向,以求最终得到误差最小。 为了保证算法的收敛性,学习率  必须小于某一上限,一 般取 0<  < 1,而且越接近极小值,由于梯度变化值逐渐趋于零,算法的收敛就越来越慢。 在网络参数中,学习率  和动量因子  是很重要的,它们的取值直接影响到网络的性能,主要是收敛速度。 为提高学习速度,应采用大的 。 但  太大却可能导致在稳定点附近振荡,乃至不收敛。 针对具体的网络结构模型和学习样本,都存在一个最佳的学习率  和动量因子  ,它们的取值范围一般 0~ 1之间,视实际情况而定。 初始权值的选择 在前馈多层神经网络的 BP算法中,初始权、阈值一般是在一个固定范围内按均匀分布随机产生的。 一般文献认为初始权值范围为 1~+ 1 之间,初始权值的选择对于局部极小点的防止和网络收敛速度的提高均有一定程度的影响,如果初始权值范围选择不当,学习过程一开始就可能 进入“假饱和”现象,甚至进入局部极小点,网络根本不收敛。 初始权、阈值的选择因具体的网络结构模式和训练样本不同而有所差别,一般应视实际情况而定。 本文采用 newff()函数自动完成权值和阈值的初始化。 收敛误差界值 Emin 在网络训练过程中应根据实际情况预先确定误差界值。 误差界值的选择完全根据网络模型的收敛速度大小和具体样本的学习精度来确定。 当 Emin 值选择较小时,学习效果好,但收敛速度慢,训练次数增加。 如果 Emin 值取得较大时则相反。 本文神经网络的误差界值 Emin 为 ,即在迭代 计算时误差值 E﹤ Emin= 时,则认为学习完成,停止计算,输出结果。 输入数据的预处理 在 BP 算法中,神经元具有饱和非线性特征(如果神经元的总输入与阈值相距甚远,神经元的实际输出要么为最大值、要么为最小值)。 前馈型静态网络的神经元作用函数的总输入是与其相连的其它神经元输出的加权,在使用 BP算法时,要防止神经元进入饱和状态,必须限制与其相连的其它神经元的输出幅值。 由于输入层只起数据传送作用,层中的神经元是扇区单元,通常使用线性作用函数 (输出等于输入 ),不存在饱和状态。 第一隐层中的神 经元通常采用饱和非线性作用函数,学习过程中会出现饱和现象,因此要防止此层神经元进入饱和,必须限制网络输入的幅值。 所以,为减少平台现象出现的可能,加快学习,应对网络的输入样本进行归一化(或称正则化)处理,这也是 BP 算法必须对输入数据进行预处理的真正原因。 本文使用的标准化方法如下: [P,minp,maxp,T,mint,maxt]=premnmx(p,t)。 式中, p 为输入量, t 为输出量, P和 T为经过归一化处理后的实验数据。 3 MATLAB 实现和结果分析 MATLAB 神经网络工具箱的应用 在网络训练过程中使用的是 Matlab for Windows 软件,对于 BP神经元网络的训练使用了 Neural Networks Toolbox for Matlab。 美国的 Mathwork 公司推出的 MATLAB软件包既是一种非常实用有效的科研编程软件环境,又是一种进行科学和工程计算的交互式程序。 MATLAB 中的神经网络工具箱以神经网络为基础,利用 MATLAB 脚本语言构造出典型的神经网络激活函数,使设计者对所选网络的计算变成对激活函数的调用 ,可以大大方便权值训练,减少训练程序工作量,有效的提高工作效 率,为用户提供了极大方便。 基于 MATLAB 的 BP 算法的实现过程 (1) 原始数据的预处理。 (2) 数据归一化。 为了适应网络的训练,以便与网络向前传播输出值对比计算目标函数误差,需要对数据进行归一化。 通过 premnmx()函数进行归一化处理,其数据分布在 [1~1]之间。 (3) BP 网络模型的建立。 MATLAB 的神经网络工具箱提供了最多 3 层向前网络,隐层神经元传递函数多为 S型函数,这种非线性传递函数神经元可以学习输入输出之间的线性和非线性关系;输出层神经元传递函 purelin(),这种纯线性传递函数可以拓宽网络输出。 网络输入层和隐层节点数对网络性能有较大影响。 隐层节点数太多,网络训练时间长;节点太少,误差精度又达不到要求。 (4)BP 神经网络的训练。 在训练之前必须对权值和阈值的初始化,采用 MATLAB 中 newff函数可自动完成这一过程。 newff 函数常用格式为: =newff(PR,[S1 S2 „ SN] ,{TF1 TF2 „ TFN} ,BTF)。 式中, PR 为 R 2维矩阵,表示 R 维输入矢量中每维输入的最小值与最大值之间的范围;[S1 S2 „ SN]中各元素分别表示各层神经元的数目; {TF1 TF2 „ TFN}中各元素分别表示各层神经元采用的传递函数; BTF表示神经网络训练时采用的训练函数。 应用 minmax函数可以求出样本的输入范围,使用附加动量法和自适应学系速率相结合的技术算法函数 traingdx 为训练函数,设定训练次数、要求精度、学习率等训练参数,进行网络 训练,使网络的学习值和期望值达到精度要求,保存权值和阈值。 (5) 网络仿真。 训练结束后,利用 sim 函数对训练后的网络进行网络仿真,调用 postreg函数对训练后网络的仿真输出和目标输出做线性回归分析 ,以检验网络的训练效果。 训练神经网络 空气质量评价标准参照表 1,具体见附录 1 中华人民共和国 国家标准环境空气质量标准(GB30951996)各项污染物的浓度限值( 1999 年) 表一 空气质量评价标准参照 污染物名称 Pollutants 取值时间 Time 浓度限度 concentration value 浓度单位 Concentrention unit 一级 level one 二级 Level two 三级 Level three 二氧化硫( SO2) 日均值 Daily average mg/m3 可吸入颗粒物( PM10) 二氧化氮( NO2) (1)准备工作 训练样本、检测样本及其期望目标的生成。 训练样本 [4][6]: 采用 MATLAB 的 rand()函数在各级评价标准内按随机均 匀分布方式内插生成训练样本 , 小于一级标准生成 200 个 , 一、二级标准之间生成 200 个 , 二、三级标准之间生成 200个 , 共形成 600 个训练样本。 解决了过去仅用各级评价标准作为训练样本 , 导致训练样本数过少和无法构建检测样本的问题。 步骤: 用 MATLAB 新建一个 M文件,内容如下: p1(1,:)=0+.*rand(1,200)。 p1(2,:)=0+.*rand(1,200)。 p1(3,:)=0+.*rand(1,200)。 p2(1,:)=+.*rand(1,200)。 p2(2,:)=+.*rand(1,200)。 p2(3,:)=+.*rand(1,200)。 p3(1,:)=+.*rand(1,200)。 p3(2,:)=+.*rand(1,200)。 p3(3,:)=+.*rand(1,200)。 p=[p1 p2 p3]。 运行生成如下所示: 图 6 输入变量生成结果 检测样本 : 用生成训练样本同理的方法生成检测样本 , 小于一级标准生成 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]。 保存为 ,运行生成如下所示: 图 7 期望目标生成结果 (2)空气质量评价等级的划分界限 据上述生成训练样本与检测样本目标输出的思路可以确定一、二、三各级空气的网络输出范围分别为 : ≈ 1 ≈ 2 ≈ 3 (3) 原始数据的预处理 试验两种预处理方案 : 其一 , 归一化 , 利用 PREMNMX 函数将原始数据归一化到 1 与 1之间。 其二 , 不归一化 , 原始数据不进行预处理。 (4) 构建网络 BP网络输入神经元数取决于空气质量评价标准的指标数,根据题意定为 3, 输出层神经元数设定为 1, 利用 MATLAB 中的函数训练网络 ,确定所需隐层单元数。 隐层激励函数为tansig()函数,输出层激励函数 为线性函数 purelin() 网络对象建立的主程序如下所示 : [R, Q]=size(p)。 [S2, Q]=size(t)。 S1=5。 [P,minp,maxp,T,mint,maxt]=premnmx(p,t)。 %对数据进行预处理 =newff(minmax(P),[5, 1],{ ‘ tansig’ ,‘ purelin’ },‘ traingdx’ )。 文中所构建的 BP网络具有一个隐层和一个输出层 , 其中隐层共有 5个神经元 , 输出有 1个神经元 , 隐层和输出层的传递函数分别为 tansig 和 purelin, 采用的训练函数为traingdx, 其他均采用 BP网络的默认设置。 在调用该网络程序时 , 对所有作为输入单元的数据均要通过 premnmx()函数进行预处理。 程序运行生成: 图 8 网络 生成结果 ( 5)训练网络如下: =’ traingdx’。 =7000。 =1e3。 =。 (,tr)=train(,P,T)。 运行结果如下: 图 9 训练实现 ( 6)训练样本结果仿真 Y=sim(,P)。 y=postmnmx(Y,mint,maxt)。 figure(1) x=1:600。 plot(x,y,39。 +b39。 ,x,t,39。 or39。 )。 xlabel(39。 输入 39。 )。 ylabel(39。 输出 39。 )。 text(200,1,39。 一级 优 39。 )。 text(400,2,39。 二级 良好 39。 )。 text(400,39。 三级 差 39。 )。 text(100,3,39。 蓝色 + 实际输出 39。 ) text(100,39。 红色 o 目标输出 39。 ) 运行结果如下图所示: 图 10 训练样本 结果仿真 ( 7) 调用 postreg 函数对训练后网络的仿真输出和目标输出做线性回归分析,以检验网络的训练效果。 [m,b,r]=postreg(y,t)。 运行如下图所示: 图 11 线性回归分析图 R为输出矢量和目标矢量之间的相关系数,当 R 为 1 时,输出和目标矢量之间的相关性最好,从图上知 R=,说明相关性比较好。 检验样本输出结果: 图 12 检验样结果仿真本图 由上图可知:对训练样本而言,当输入为小于一级标准的限值时输出均在 1 左右;当输入大于一级限值小于二级限值时,输出均在 2左右; 当输入大于二级限值小于三级限值时,输出均在 3左右。 同样,检验样本的检测结果也比较符合目标输出。 表 2 部分样本检验结果和期望输出比较表 检测样本 SO2 NO2 PM10 实际输出 期望输出 1 1 2 2 3 1 4 2 5 3 6 1 7 3 8。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。