王献锋,丁 军,朱义海
(1.西京学院 理学院,陕西 西安 710123; 2.Tableau Software,Seattle 98103,USA)
棉花是我国一种重要的经济作物,也是一种容易发生病虫害的作物。据统计,每年棉花病虫害造成棉花产量损失约15%~20%,严重时损失高达50%。棉花常见的病虫害有50多种,在生长初期主要的病害有枯萎病、炭疽病、猝倒病和黄萎病等,主要的虫害有蚜虫、红蜘蛛和地老虎等;在生长中后期主要的病害有黄萎病、红叶茎枯叶病和铃病等,主要的虫害有棉铃虫、棉蚜和红铃虫等[1]。由于长期过量、不合理地施肥,造成土壤板结、酸化盐渍化、养分严重失调、棉花免疫力低下。另一方面,由于大剂量、高频次、不科学地使用农药,造成病虫害抗药性越来越强,同时也杀死了大量的天敌,破坏了棉田的生物平衡,致使棉花的病虫害一年比一年严重,仅在2016年一年,棉花的主要病虫害在长江和黄河流域的大部分产棉区发生667万hm2,其中虫害发生547万hm2,病害发生120万hm2[2]。棉花病虫害严重降低了棉花的产量和质量,所以,对棉花病虫害防治一直是植保专家、农业管理部门和棉农重点关注的问题。传统的棉花病虫害防治主要依据人工经验进行判断和诊断,该方法的主观性强、误差较大,棉农不能及时、准确有效地防治病虫害[3]。随着数字图像和遥感技术以及物联网技术的不断发展,出现了很多棉花病虫害自动识别、监测和预测的方法与技术[4]。为解决当前植保专家系统使用难度大以及携带不便的问题,戴建国等[5]在Android智能手机上开发了一种基于图像规则的棉花病虫害诊断系统,该系统能够利用田间病虫害图像进行人机交互,实现了推理过程的可视化,具有便携、实用、图文并茂、人机交互友好以及不受网络环境限制等特点。于辉辉等[6]设计了一种基于Android手机终端的棉花病虫害智能诊断系统,该系统基于棉花病虫害知识模型库,采用产生式规则和正向推理方法,实现了棉花病虫害的实时、有效诊断,具有一定的通用性和较强的实用性。王静[7]结合图像处理与Android平台设计了一种基于Android的棉花红蜘蛛虫害的检测系统,该系统的实时性、应用性、便携性均较好,实现了棉花红蜘蛛虫害的检测功能。
研究表明,棉花的任何病虫害都是在一定条件下发生,一般具有一定规律[1-3]。温度、湿度、降雨、风、光照和CO2等气候气象要素是许多棉花病虫害发生的主要因素,特别是适温、高湿有利于大多病虫的繁殖和扩散,雨水是细菌侵染和传播的主要条件之一,CO2浓度有助于作物光合作用,提高作物对病害的免疫力[4,8]。所以,棉花生长的环境条件以及气候气象条件是病虫害预测的依据,他们与病虫害的图像相结合能够进行病虫害预测和识别[9]。赵冰梅等[10]预测了新疆兵团2017年棉花主要病虫害发生趋势,提出了相应的防治对策和综合防治措施,为做好棉花病虫害防治工作提供参考。石盼[11]开发了一种基于物联网技术、无线通信技术等多种技术为一体的农作物病虫害诊断系统,通过农作物病虫害的视频采集与传输及温度、湿度、CO2浓度等各种环境信息和专家诊断系统对作物病虫害进行检测和诊断[12-14]。
尽管有很多棉花病虫害诊断和预测方法,并取得了较好的结果,但是棉花病虫害发生和发展涉及的因素很多,各个因素之间存在着复杂的相互作用和影响,使得现有的一些棉花病虫害监测方法的泛化能力有限,预测准确率不高。深度置信网络(deep belief network,DBN)是从生物神经网络和浅层神经网络发展而来,能够通过联合概率分布推断出数据样本分布,具有较强的数据分类和预测能力,已被广泛应用于飞行器检测、交通流量预测和大棚冬枣病虫害预测等[15-18]。本文在DBN的基础上,提出一种基于改进DBN(MDBN)的棉花病虫害预测方法,对棉花病虫害发生与环境条件进行数据挖掘,挖掘环境条件与棉花病虫害发生发展的内在联系和规律,以期帮助棉花管理者快速、准确地掌握各类棉花病虫害发生发展的趋势,提高对棉花病虫害预测预报的时效性和准确性,从而为棉花病虫害的监测提供科学依据。
据气象部门统计,全新疆大部分地区每年7月下旬至8月容易出现阶段性高温。高温多雨有利于棉花病虫害的发生和蔓延,而且南疆气温高、降水少,也有利于棉花病虫害发生[19]。本文以新疆产棉区两种病害(黄萎病和枯萎病)、3种害虫(棉铃虫、红蜘蛛和棉蚜)(以下简称“两病三虫”)的发生情况为实例,利用农业物联网传感器,从2012—2016年每年的4月1日至8月30日,连续5个月采集与棉花两病三虫发生相关的12种环境信息:发病季节、土壤温度、土壤湿度、土壤盐分、土壤是否连种、空气温度、空气湿度、光照强度、降水量、降水日数、CO2浓度和农药使用量[8],并根据历史数据,按照月份将棉花的不同类病虫害的发生期划分为5个等级:0.9、0.7、0.5、0.3和0.1;将光照强度由强到弱设置为4个等级:0.7、0.5、0.3和0.1;将农药使用量由多到无分别设置为4个等级:0.7、0.4、0.2和0;按照土壤没有连种、连种一次、连种两次以上将土壤是否连种信息分别设置为3个等级:0、0.2和0.4[3-5];从早上08:00到下午17:00采集日平均温度、日平均相对湿度和日平均光照时间。农作物病虫害发生程度一般定义如下:0级表示没有病虫害发生;1级(轻发生)表示病虫零星发生,不需要化学防治;2级(偏轻发生)表示作物无明显受害损失,可通过农艺和保护天敌等措施进行控制;3级(中等发生)表示已造成局部明显损失,需要开展化学控制;4级(偏重发生)表示已造成严重损失,需要重点防治[8,19]。由于采集的环境信息数据的量纲不同,所以在输入到MDBN之前需要对每种数据进行归一化处理,计算公式为
(1)
式中:x′i为第i个环境信息数据归一化后的值;xi为第i个环境信息数据归一前的值;xmax和xmin分别为n个数中的最大值和最小值;i=1,2,…,n。
利用上述环境信息数据采集和预处理方法,将新疆产棉区5年来每天采集的环境信息数据进行日平均,再归一化,最后组成一个12维的向量,作为当天环境信息数据的向量样本,可以得到7 550个向量。但由于采集的部分环境信息数据缺失或不合理,所以我们只选择了其中4 500个环境信息数据向量进行棉花病虫害预测试验。
DBN通过训练网络结构中神经元之间的权重使得整个网络依据最大概率生成训练数据,形成高层抽象特征,提升网络分类性能。为了提高基于DBN的预测准确率,我们从训练数据的批次的选择、参数调优的迭代周期以及在线学习训练等方面改善DBN的性能,提出一种改进DBN(MDBN)。
1.2.1 MDBN的结构
与现有的DBN的结构类似,MDBN由若干个受限玻尔兹曼机(RBM)网络和一个反向传播(back-propagation,BP)神经网络(BPNN)堆叠而成,可视层与隐含层内各节点之间无连接、取值相互独立,如图1所示[15-18]。每个RBM只有可视层和隐含层两层神经元。其中可见层由显性神经元组成,用于输入训练数据;隐含层由隐性神经元组成,用于提取训练数据的特征。上一层RBM的输出作为下一层RBM的训练输入。图1为MDBN的基本结构。
图1中,h表示隐含层,l是隐含层数,vss是MDBN的期望输出,v=(vout,v1,v2,…,vin)是网络的连接权值,可通过对无监督学习所确定的初始权值w=(w1,w2,…,wl)进行有监督微调得到。
1.2.2 无监督学习和有监督微调
与DBN类似,MDBN的学习过程分为两个阶段:无监督训练和有监督微调。MDBN通过逐层无监督地训练每一个RBM确定整个网络的初始权值,再利用有监督算法对整个网络进行微调,由此得到可视层节点和隐藏层节点之间连接的最优权值。首先,固定第一个训练好的RBM的权重和偏置,将其隐元所处的状态作为第二个RBM的输入,对第二个RBM进行训练后堆叠于第一个RBM上,对于多层RBM重复上述过程。若训练数据集中含有带标签的样本,在第二个RBM训练时需加入,最终采用BP神经网络对数据进行分类。每个RBM的训练方法通常采用对比散度(contrastive divergence,CD)算法。假设所有的隐层和可见层神经元均为二值分布,神经元数分别为m和n,则∀i,j,vi∈{0,1},hj∈{0,1},RBM的2层的能量函数为:
图1 MDBN模型的结构Fig.1 Architecture of MDBN model
(2)
式中,Z=∑v,he-E(v,h;θ)是归一化因子。
关于v的边缘分布定义为
(3)
则能量函数定义为
(4)
式中:ai和bj分别为可见层节点和隐层节点的偏置;wij是RBM的连接权值。
当输入v时,由p(h|v)可得到隐层h;得到隐层h后,由p(v,h)又能得到可见层,隐层可以作为可见层输入数据的特征。由于RBM的可见层神经元或隐层神经元的激活状态之间相互独立,则第j个隐层神经元和第i个可见层神经元的输出概率模型分别表示为:
(5)
式中f(x)=1/(1+exp(-x))为sigmoid函数。
由于可见层和隐层服从二值分布,则判断它们二值概率取值的标准可以通过设定一个阈值来实现,以隐含层为例可表示为
(6)
式中δ为一个0.5~1.0的常数。
利用对比散度算法或计算对数似然函数lgP(v;θ)的梯度法可以实现权重w的学习更新,该权重的更新准则为:
wij=wij+ηΔwij。
(7)
Δwij=Edata(vihj)-Emod el(vihj)。
(8)
式中:η为学习率;Edata(vihj)为训练集中实际数据的期望,即输入MDBN后得到的实际权重值;Emod el(vihj)为在MDBN所确定的分布上的期望,即MDBN重构得到的权值。通过RBM的逐层学习训练过程,可得到合理的w值。
(9)
式中τ和K分别为迭代次数和观测样本个数。
则对应的权值变化量为:
(10)
可由式(10)更新权值:
(11)
经过微调后可得到输出层和最后一个隐含层之间的更新权值wout。利用这种方法从顶层输出层到底层输入层依次微调,可以得到整个MDBN网络的权值w=(wout,wl,wl-1,…,w2,win)。
1.2.3 改善MDBN的性能
从下面三个方面对MDBN进行改进:
(1) DBN通过将棉花生长的环境信息特征向量作为训练样本进行多层深度学习,一般需要对输入数据进行分批次反复迭代学习,使得网络的隐含层单元节点能够充分学习数据中的规则,并使节点充分激活。实际上,不同批次的数据量下DBN学习的重构误差不同,需要选择每一批次最佳的数据量进行学习。
(2) 改善DBN模型,使得它的隐含层单元有初始学习结果的先验值。然后,利用棉花长期正常生长的环境信息数据作为标签数据,对所建立的网络模型进行监督学习以实现对网络参数的微调。参数微调过程采用梯度上升法进行参数更新,按照不同的迭代周期对参数进行寻优,得到具有深层表征性能的监督学习效果。
(3) 在经典的DBN中一般采用固定学习率进行训练,但由于每个RBM均需要多次迭代,且每次迭代后的参数更新方向不尽相同,所以固定学习率可能导致模型出现“早熟”现象或难以收敛。根据RBM训练过程连续两次迭代后参数更新方向的异同,设计自适应学习率η,使算法根据参数更新方向来自适应控制学习速度。学习率自适应更新机制为:
(12)
(13)
(14)
式中,D和d分别表示学习率增大系数和减小系数,0 为了减小棉花病虫害预测模型的训练和运行时间,本文采用的MDBM模型结构为1个输入层、3个隐含层和1个BPNN输出层,如图1所示,基于MDBN的棉花病虫害预测过程如图2所示。在MDBN中,上一层RBM网络经过学习得到的输出特征作为下一层RBM的输入,使每层能更好地抽象出上一层的特征,并且各层独立地对参数进行学习,逐层提取数据的分类或预测特征。顶层BP网络以最后的RBM网络的输出作为输入,用于数据分类或预测。BPNN由输入层、隐含层和输出层组成,有监督地训练MDBN的权值参数,所以BPNN可以看作MDBN中的有监督学习的分类器。 图2 基于MDBN的棉花病虫害预测过程Fig.2 Prediction process of cotton disease and insect pests based on MDBN 本文采用的硬件环境为内存32 G,CPU Intel(R) Core(TM) i7-4790 8*3.60GHZ,GPU GeForce GTX Titan X,训练速度使用单核Intel 3.47 GHZ的15倍以上,深度学习架构为Tensorflow,编程语言为python。 为了确定MDBN的隐含层层数,初步设置每个隐含层的单元数均为150,以输出预测数据的误差作为评价标准,计算MDBN模型采用不同隐层层数时的输出误差。实验得到,当DBN的隐含层层数为3时,模型性能最优。其原因是由于训练数据规模较大,能够学习到足够多的数据特征,较少的隐含层层数就可以对数据的特征进行有效挖掘,由此可以减少网络训练的时间。棉花无病虫害正常生长时每天或每周都会积累一定的环境信息数据。这些数据对于模型的改善和稳定性的提高比较重要。因此,可以通过选取棉花生长一段时间内的正常环境信息数据在原来模型参数的基础上进行递进学习,实现网络参数的更新。实际上,MDBN在环境信息变化较小条件下,可以利用积累的新环境信息数据集进行在线训练,充分地利用系统资源,并且避免因一次训练后的模型长时间应用引起的状态检测误差。利用自适应学习率能够加快网络收敛,因为当连续两次迭代后的参数更新方向(变化量的正负)相同时,学习率会加大,相反则减小。实验表明,在模型结构确定为3时,MDBN的迭代次数直接影响网络的性能:若迭代次数过少,网络的预测性能无法达到稳定状态,不能有效地学习到输入数据中的特征;若训练次数过多,则训练耗时过长不利于实际应用。当迭代次数为100~500次时,计算训练后的输出误差。当训练迭代为210次时,能够获得最优的预测性能。当每一批次的数据量为20时,误差最小,训练数据的特征信息损失最小,网络学习数据规则的结果更充分。MDBN各隐含层单元数对网络性能的影响较大,若单元数过少,则学习的容量有限,不足以存储训练样本中蕴涵的所有规律,单元数过多则会增加网络的训练时间,可能降低网络的映射能力。在预测模型中,第一层RBM的可视层节点数为12,对应12种环境信息,输出结果为病虫害发生概率。为了确定网络层数,在实验中设置MDBN的3个隐含层的单元数为150、160、170、180、190和200。BP网络层的参数选定过程也按照以往经验进行,网络的输入层和输出层单元分别为120和24,网络隐含层单元数量为15。实验结果显示,当MDBN隐含层单元数都为180时性能达到了最优。根据以上实验结果,可以得到MDBN的结构和最佳参数。为了简化我们的模型,训练的MDBN模型每层都采用相同的节点个数。训练RBM时初始学习率为1,分组训练大小设置为32,反向传播微调时学习率为1,动量为0.5。经过多次试验得出识别率较好的MDBN网络隐含层从100开始步长为50进行增加,微调循环次数为50,dropout概率设置为0.2。 最后,采用10-折交叉验证法对4 500个环境信息向量重新进行实验,即将4 500个样本数据集分成10份,每份450个,轮流将其中1份作为测试数据测试模型,然后将剩余的1份作为测试数据输入到训练好的模型,得到10个测试结果,将其平均值作为一次实验结果。试验中,各节点输出值不小于0.90,则判定为该类,预测结果表示为正确识别样本数与450的百分比。重复进行10-折交叉验证实验50次,计算50次实验的平均值,得到两病三虫的总体平均预测实验结果见表1。为了表明本文提出方法的有效性,表1中还给出了基于BP神经网络(BPNN)[20]、强模糊支持向量机(SFSVM)[21]和RBF神经网络(RBFNN)[22]的棉花两病三虫的预测结果。表1给出的DBN的网络结构和初始参数与MDBN相同,只是采用固定的学习率0.1。 从表1可以看出:基于MDBN和DBN的棉花病虫害预测模型的预测准确率远高于其他3种预测模型,其原因是本文提出的基于MDBN和DBN的预测模型能够充分利用12种环境信息,从复杂的环境信息中深度挖掘病虫害预测特征,提取影响棉花病虫害发生和发展的主要因素,从而得到较好的预测结果。由于MDBN采用了自适应学习率,所以训练时间极大缩减,而且利用了多种措施改善网络的性能,所以MDBN比DBN的识别率高,训练时间短。结果表明,基于MDBN的预测模型在棉花病虫害预测中具有良好的特征学习性能,能够满足应用的要求。 表1基于5种预测模型的棉花病虫害预测准确率和方差 Table1Forecasting rates and variances of cotton diseases and insect pests by five forecasting models 预测模型Forecasting model准确率Accuracy rate/%训练时间Training time/hBPNN68.23±1.627.67SFSVM64.48±1.372.21RBFNN63.14±1.536.24DBN82.25±2.4318.69MDBN84.46±1.583.24 棉花病虫害预测是病虫害防治的重要步骤。棉花生长的环境条件是病虫害预测的依据。本文利用棉花生长的平均气温、相对湿度、降雨量和日照时数等12种环境信息,提出了一种基于性能改进深度信念网络(MDBN)的棉花病虫害预测方法,并在棉花的“三虫两病”对应的环境信息数据集上进行了验证。结果表明,本研究提出的方法是有效可行的。该方法为棉花病虫害预测提供了一种新思路。下一步研究重点是,结合基于物联网的棉花农情监控传感网络,开发基于物联网和MDBN的棉花病虫害智能检测系统。1.3 基于MDBN的棉花病虫害预测模型
2 实验与分析
3 讨论