基于LSTM递归神经网络的番茄目标产量时间序列预测

2018-08-29 08:58魏正英张育斌
节水灌溉 2018年8期
关键词:方根番茄神经网络

周 瑞,魏正英,张育斌,张 千

(西安交通大学机械制造系统工程国家重点实验室,西安 710049)

0 引 言

番茄目标产量的确定是番茄种植播前决策环节的重要部分,是决策番茄种植过程中总施肥量与灌水量的关键参数之一。合理的番茄目标产量确定是实现番茄作物精准培育管理的前提和基础,有助于实现农业生产过程中经济、社会、生态效益的协调统一。目前,已有一些研究提出了目标产量预测的方法,这些方法大致分为两种:①基于作物生产潜力经验公式[1]的预测方法,依据作物生长环境与土壤肥力,结合栽培管理水平作为人为调控因子进行番茄目标产量预测。②基于机器学习与统计方法的预测方法,依据相同培育条件下积累的历史作物产量数据,应用统计理论和机器学习算法建立番茄目标产量的预测模型对番茄目标产量进行评估计算。基于经验公式的方法需要测量的参数多,准确的作物产量估计需要高精度的测量装备,而多数农户不具备测量条件,因此结合相同培育环境下的历史产量数据,基于机器学习与统计方法的作物产量预测可以辅助农户进行目标产量制定。

番茄产量年度数据是时间序列数据,现有针对时间序列数据的预测算法有多种模型,例如自回归移动平均、支持向量回归、人工神经网络、小波神经网络等。随着深度学习算法研究的不断深入,深度学习模型能够适用于时间序列数据的预测问题,深度学习算法通过对输入的数据信息逐步分层抽象并提取特征,提取出包含在数据序列中的隐含关系。递归神经网络将时间的序列概念引入到神经网络结构构建中去,使递归神经网络在时间序列数据分析中性能表现更好。长短期记忆单元是递归神经网络的一种变体,弥补了RNN可能出现的梯度消失和梯度爆炸、长期数据记忆能力有限等问题,能够有效地进行处理长时间的序列信息。LSTM模型在不同领域的时间序列数据研究中已取得了不少成果的应用案例,包括股票价格预测[2]、语音识别[3]、机器翻译,图像文字识别、交通流速预测[4],农业领域的降雨量预测[5]等。

本文针对历年番茄产量时间序列数据,提出了一种基于LSTM递归神经网络的目标产量预测方法,对LSTM递归神经网络模型进行训练与模拟计算,用交叉验证的方法对模型在测试集上预测的均方根误差进行评价,并将模型的预测效果与自回归移动平均方法、小波神经网络方法、支持向量回归方法进行了对比。实验结果显示基于LSTM递归神经网络的预测模型在番茄目标产量预测上具有更好的预测性能。

1 相关理论和技术

1.1 前馈神经网络

人工神经网络通过构建类似人体神经元的连接方式来进行信号处理,得到数据信号预测模型,可以用于处理数据非线性预测等问题。在数据分析领域,主要采用前馈神经网络来提取静态数据之间的隐含关系[6]。

前馈神经网络是一种具有前向结构的人工神经网络,一般是多层结构,包括输入层、隐含层和输出层,通常有多个隐含层。每一层神经元的输入是上一层神经元的输出并且通过全连接将其输出传递给下一层,且整个结构中没有反馈。每一个神经元可以是多输入的,但是只有一个输出。多层前馈神经网络是感知器的推广,只要有包含足够多的神经元的隐含层,前馈神经网络就可以拟合为任意复杂连续函数(图1)。

图1 前馈神经网络

Lin表示输入层,x=(x1,x2,x3)T是多层感知器输入;Lhidden表示隐含层,包含4个神经元(h=(h1,h2,h3,h4)T);Lout是输出层,输出维度数为3(y=(y1,y2,y3)T)。数据从输入层到输出层传递的这个过程称为前向传播,可以用公式表示:

h=f(W1Tx+b1)

(1)

y=f(W2Th+b2)

(2)

其中W1∈R3×4表示输入层单元与隐含层单元之间传递的权重矩阵,b1∈R4×1为隐含层的偏置;W2∈R4×3表示隐含层单元和输出层单元传递的连接权重,b2∈R3×1为输出层的偏置。对于激活函数f,通常采用双曲正切函数、logistic函数或sigmoid函数,来获得逼近非线性函数的能力。对于多层前馈神经网络的训练,采用误差反向传播算法(BP),因此也常将多层前馈神经网络直接称为BP网络。

虽然多层前馈神经网络能够一定程度上解决非线性问题,但其网络当前时刻的状态与上一时刻的输入无关,因此无法处理具有时间序列特征的数据。为了解决输入之间前后关联的问题,这就需要使多层前馈神经网络不仅接收当前的输入,也要接收上一时刻的输出,由此产生了递归神经网络。

1.2 递归神经网络

为了克服前馈神经网络无法处理时间序列数据问题,递归神经网络将隐含层之间结点互相连接,使得隐含层的输入不仅仅是当前时刻输入层的输出还包括了上一时刻隐含层的输出。通过这种方式,递归神经网络可以将当前时刻以前的信息记忆在网络之中。如图2所示,递归神经网络与前馈神经网络的结构大致相同,不同之处在于隐含层之间的连接关系,即增加了隐含层间的权重Wh。

图2 递归神经网络

若Lhidden隐含层包含m个神经元,则Wh为m×m维的权重矩阵。递归神经网络的传播过程可以用公式表示:

ht=f(W1Txt+WhTht-1+b1)

(3)

yt=f(W2Tht+b2)

(4)

式中:W1表示输入层与隐含层连接权重;W2表示隐含层与输出层连接权重;b1、b2分别表示隐含层和输出层的偏置;xt表示t时刻的输入;ht表示隐含层输出;yt表示t时刻的输出;ht-1表示第t-1时刻隐含层的输出。激活函数f一般是双曲正切函数或者Relu函数。

此外,递归神经网络还可以转化成相对应的多层前馈神经网络,从而可以使用BPTT算法进行训练,展开过程如图3所示。

图3 递归神经网络展开

若训练样本中包含T个时刻的数据,则递归神经网络将展开成一个隐含层数量为T个的前馈神经网络。理论上来说,递归神经网络可以处理任意长度的序列数据,但是当处理无限长的序列数据时,展开的多层前馈神经网络也是无线层的。因此在实际应用中,通常只假设当前状态只与之前有限个状态相关,以降低复杂度。与传统的前馈神经网络不同,展开的递归神经网络有如下特点:

每个隐含层的输入都由当前时刻输入和上一时刻隐含层输出两部分组成。而传统前馈神经网络的输入只能是上一层(隐含层或输入层)的输出。

如图3所示,展开的递归神经网络相同位置的参数是共享的,而传统前馈神经网络则是非共享的,这也大大地降低了网络所要学习的参数。

对于递归神经网络,每一个时刻都会给出一个输出,但是并不是必要的,只有t时刻的输出才是模型的预测结果,其余的输出结果都保存在了隐含层中。

1.3 长短期记忆单元

尽管递归神经网络能够有效地处理非线性时间序列,但是仍然存在以下两个问题:①由于梯度消失和梯度爆炸的问题,RNN不能处理延迟过长的时间序列;②训练RNN模型需要预先确定延迟窗口长度,然而实际应用中很难自动地获取这一参数的最优值。由此,LSTM模型应运而生[7-9]。LSTM模型是将隐藏层的RNN细胞替换为LSTM细胞,使其具有长期记忆功能。经过不断地演化,目前应用最为广泛的LSTM模型细胞结构如图4所示。

图4 LSTM细胞结构

LSTM模型训练过程采用的是与经典的反向传播算法原理类似的BPTT算法,大致可以分为4个步骤:①按照前向计算方法计算LSTM细胞的输出值;②反向计算每个LSTM细胞的误差项,包括按时间和网络层级两个反向传播方向;③根据相应的误差项,计算每个权重的梯度;④应用基于梯度的优化算法更新权重。

基于梯度的优化算法种类众多,比如随机梯度下降(SGD),AdaGrad,RMSProp等算法。本文选用的是适应性动量估计算法(Adam)。Adam算法是一种有效的基于梯度的随机优化方法,该算法融合了AdaGrad和RMSProp算法的优势,能够对不同参数计算适应性学习率并且占用较少的存储资源。相比于其他的随机优化方法,Adam方法在实际应用中的整体表现更优。

2 实验方法

番茄产量数据来自新疆番茄种植基地,数据集包含1996-2015年间年番茄每公顷平均产量数据。

2.1 数据预处理

在得到观测序列后对番茄产量时间序列数据做预处理,以得到适应构建LSTM模型的数据形式。首先需要对数据集进行平稳性检查,时间序列的平稳性反映了时间序列的统计性与时间的相关性,平稳时间序列其统计规律不随时间推移而变化,因此可以通过平稳的时间序列信息对将来时间进行预测。时间序列平稳性的检验方法有时序图法和自相关函数法,其中时序图法由于其直观性广泛运用于平稳性判别过程,平稳时间序列在变化曲线上呈现随时间在其均值附近波动的特征,而非平稳序列则出现不同时间段具有不同的统计特征(如均值持续上升或均值持续下降)。对番茄平均产量作时序图,横轴为年份,纵轴为番茄平均产量(kg/hm2),由图可知,番茄平均产量数据时序图虽有波动但整体虽时间持续上升的非平稳时间序列。需要首先进行数据平稳化处理。

图5 番茄平均产量时序图

通常使用差分法将时间序列数据转换为平稳序列,经过n次差分后得到序列若为平稳序列,则这个序列成为n阶差分平稳序列。差分运算是一种对数据蕴含信息进行抽象提取的过程,差分阶数越多越能提取到非平稳序列中的确定性信息,但是随着阶数增大原始数据的信息损失也更多。所以要选择适当的差分阶数对时间序列数据进行分析。对番茄平均产量原始数据进行差分运算,得到一二阶差分图,如图6、图7所示,由图6、图7可知一阶差分序列已达到平稳。

图6 番茄平均产量一阶差分图

图7 番茄平均产量二阶差分图

2.2 基于LSTM的番茄目标产量模型训练

考虑到时间序列数据集特征与LSTM神经网络训练输入输出要求,本文构建LSTM番茄目标产量预测模型的整体结构如图8所示,原始产量时序数据经过平稳性检验与差分、监督学习格式转化、标准化后转化为适于LSTM网络训练的数据集,将数据集按照7∶3的比例分为训练集和测试集;将训练集数据输入LSTM神经网络计算损失函数,通过Adam优化方法依据最小均方根误差原则求解,得到训练后的模型;输入测试数据集到LSTM网络得到预测结果。初步依据经验确定模型参数步数设为1,隐藏层单元数1 500,神经元个数4[10-12]。

图8 模型构建流程图

2.3 评价指标

本文通过计算耗时和模型误差来评价模型效果。计算耗时通过统计模型训练过程消耗时长得到;模型误差通过训练集与测试集预测结果的均方根误差(RMSE)来定量的评价,公式如下:

式中:pt是预测值;yt是实测值;RMSE值越小,模型对番茄目标产量的预测效果越好。但需保证RMSE值需小于持续性模型预测得到的基准值[13,14]。

持续性模型预测用于对线性增长趋势的时间序列做出基准预测,在持续性模型中,将t-1时刻的观测值数据作为下一时刻t的观测值,持续性模型的预测结果是数据集的性能基线,可以作为评判LSTM模型效果的评价指标[15]。将数据集分为训练集和测试集,以1996-2008年数据作为训练集,2009-2015年数据作为测试集,构建持续性预测模型。预测结果如图9所示,计算得到番茄产量持续性模型预测结果的均方根误差为50.848。

图9 持续性模型预测

3 结果分析

应用本文提出的模型构建流程对番茄平均产量时序数据进行处理,经过平稳性检验与差分处理、转化为监督学习形式、标准化后,对数据集分割为训练集和测试集,应用训练集数据建立LSTM递归神经网络模型。初步依据经验确定模型参数步数设为1,隐藏层单元数1 500,神经元个数4。通过计算得到LSTM番茄产量模型的均方根误差小于基准均方根误差,因此模型预测效果可靠(图10)。

图10 LSTM神经网络预测结果

由于递归神经网络训练初始条件为随机生成,为验证LSTM递归神经网络模型预测效果的稳定性,对相同参数条件下的模型进行重复实验,得到模型多次实验均方根误差分布情况(图11)。

图11 模型均方根误差分布

统计50次重复实验结果得到模型均方根误差的平均值为5.2,标准差为8.2,最小值和最大值分别为4.05和6.74,由箱型图可知误差大部分储与4.5到5.6之间,验证了模型预测效果的稳定性。

为进一步验证LSTM模型的应用效果,引入3种不同时间序列模型ARIMA、小波神经网络、支持向量回归模型与LSTM模型预测效果进行对比,结果表1所示:

表1 模型预测效果对比

从表1中可以看出,LSTM模型拟合测试集上均方根误差为5.453;而ARIMA模型测试集上均方根误差7.956;WNN模型测试集上均方根误差23.232;SVR模型测试集上均方根误差15.53。LSTM模型在测试集上的均方根误差均优于ARIMA、WNN、SVR模型,但训练过程计算消耗时长LSTM模型5.4秒高于其他模型。

4 结 语

建立了基于LSTM递归神经网络的番茄目标产量预测方法,应用1996-2015年为期20年的历史数据对LSTM模型进行训练和预测,结果表明,LSTM递归神经网络模型能够较好的预测番茄目标产量的变化趋势。并与ARIMA、WNN、SVR等算法的预测效果进行对比。实验结果表明:

(1)在1996-2015年番茄年平均产量数据集上训练并建立了LSTM递归神经网络番茄目标产量预测模型,验证了LSTM递归神经网络在番茄目标产量预测问题上具有较好的拟合效果,模型的训练集和测试集均方根误差均较小,说明对未来几年的番茄产量预测能够反应番茄产量的变化规律,可以用来指导番茄目标产量的确定。

(2)对LSTM递归神经网络的稳定性进行了验证,相同参数下重复进行训练10次,得到每次模型在测试集上的均方根误差值。其中均方根误差平均数为5.45,标准差为0.55,最小均方根误差4.70,最大均方根误差5.71,均方根误差的中位数为5.318。多次实验下均方根误差标准差小,说明LSTM递归神经网络模型稳定性较好,多次重复实验情况下能取得较为稳定的拟合效果,对番茄产量的预测结果可信度较高。

(3)LSTM递归神经网络模型在时间序列预测问题上较ARIMA、WNN、SVR有更好的精度,但由于LSTM递归神经网络具有更复杂的网络结构,求解过程相对其他模型更加复杂,耗时更长,不适合应用于需要实时预测的问题,番茄目标产量的确定属于番茄种植的播前决策环节,对于实时性要求不高,LSTM递归神经网络构建的番茄目标产量预测模型适用。

猜你喜欢
方根番茄神经网络
基于递归模糊神经网络的风电平滑控制策略
随机振动均方根加速度计算方法研究及应用
秋茬番茄“疑难杂症”如何挽救
番茄果实“起棱”怎么办
神经网络抑制无线通信干扰探究
我们爱把马鲛鱼叫鰆鯃
基于神经网络的中小学生情感分析
HOME家系列
数学魔术——神奇的速算
基于支持向量机回归和RBF神经网络的PID整定