吉训生,姜晓卫,*,夏圣奎
(1.江南大学 物联网工程学院,江苏 无锡 214122; 2.南通天成现代农业科技有限公司,江苏 南通 226600)
随着数字农业[1]的发展,对蛋鸡养殖户来说,准确提前预知产蛋率的走势可以合理安排蛋鸡生产,对于提高养殖户的经济收益具有重要作用。产蛋率预测是一个时序问题,也是一个复杂的非线性问题。影响产蛋率的因素包括光照、饮水量、采食量、温度、湿度等,这些因素之间存在多重共线性[2-3],比如,温度和湿度、温度和饮水量、采食量等之间均存在较大的相关性,这就给蛋鸡产蛋率的预测增加了难度。近年来,机器学习被不断应用于蛋鸡产蛋率的预测,其中,极限学习机(extreme learning machine,ELM)和BP(back propagation,BP)神经网络使用较为广泛。刘先旺[4]基于遗传算法的BP神经网络建立预测模型,较好解决了BP神经网络容易陷入局部最小值的问题,取得了较好的预测精度,但却忽略了产蛋率的时序性特点。李飞等[5]提出基于极限学习机的蛋鸡产蛋性能预测,由于极限学习机不具有记忆能力,在处理时间序列问题上并不是最优解。
近年来,RNN(recurrent neural network,RNN)被广泛认为是一种捕捉时间流和空间演化的合适方法,具有较好的预测效果。它不仅可以通过基本的神经网络模型学习得到多层特征,还可以将低层特征结合起来形成一个高层,这些性能特点都源于其神经元包含记忆能力[6]。然而,以往的研究表明,传统的RNN存在梯度消失和梯度爆炸[7]等缺陷,无法进行长时间记忆。为了解决这个问题,Hochreiter等[8]提出了LSTM (long short term memory)模型,并在后来的工作中被许多人改进和推广。与传统的RNN相比,LSTM网络可以学习浅层非线性网络结构,提取输入样本数据的基本特征,实现复杂函数的逼近,避免梯度消失和梯度爆炸问题的出现,实现信息的长期存储。
目前,越来越多的学者将LSTM模型应用于实际问题的预测中。Wu等[9]提出使用LSTM准确预测区域的未来温度变化趋势;Huang等[10]利用LSTM模型和层次聚类方法对城市交通短时客流进行预测;陈卓等[11]提出了基于LSTM神经网络的电力负荷预测方法;王鑫等[12]利用LSTM神经网络对故障时间序列数据进行预测;于家斌等[13]构建了基于LSTM神经网络的蓝藻水华预测模型,实现了对水华发生的精准预测。
Kalman滤波可以根据历史数据和实时数据对静态预测结果进行动态调整,以获得较高的预测精度[14-17]。Song等[18]利用LSTM-Kalman模型对某地区的空气质量进行预测,取得了不错的效果。目前还未见利用LSTM-Kalman模型研究蛋鸡产蛋率的相关报道,本文选择LSTM模型作为静态模型,结合Kalman滤波作为动态模型对蛋鸡产蛋率进行预测;在BP神经网络、极限学习机和LSTM模型预测效果进行对比的基础上,构建了基于LSTM-Kalman的蛋鸡产蛋率预测方法,并基于南通天成现代农业科技有限公司的产蛋数据进行试验。
本次试验采集南通天成现代农业科技有限公司5号、6号鸡舍自2019年6月5日到2020年1月4日共214 d的蛋鸡生产数据,除去产蛋上升期,共有171 d稳定产蛋期的产蛋数据。图1是5号、6号鸡舍的环境变量和生产数据曲线图。其中,生产数据包括产蛋率、只均采食量和只均饮水量,分别如图1中的A、B、C所示;环境变量包括温差、温度平均值和湿度平均值,分别如图1中的D、E、F所示。通过图1可以看出,两栋鸡舍的环境参数和产蛋率曲线差别不大,说明两栋鸡舍的蛋鸡生存环境几乎相同,排除了由于鸡舍环境原因导致的产蛋率差异。
图1 环境因子与产蛋率曲线图
采集数据的具体信息如表1所示。根据《海兰褐蛋鸡饲养管理手册》,19~72周龄的蛋鸡死淘率为6.3%,2栋鸡舍的死淘率均小于6.3%,均满足养殖要求。此外,表1还列出鸡舍环境数据的变化范围,表明两栋鸡舍的养殖环境均适宜。
表1 鸡舍养殖数据
LSTM神经网络是将一般递归神经网络的隐层神经元替换为一种特殊的LSTM递归神经网络结构。图2是LSTM神经网络内存块的示意图,包括遗忘门、输入门和输出门。LSTM神经网络的内部计算如下。
xt为当前输入;ht、ht-1分别为当前输出和前一时刻的输出;Ct、Ct-1分别是当前时刻的记忆内容和前一时刻的记忆内容;σ()是sigmoid函数;Ot表示保存的历史信息;Ct′表示需要更新的信息。
(1)遗忘门的作用是保存历史信息,它决定从LSTM单元状态中丢弃哪些信息,保留哪些信息,其输出可表示为
ft=σ(ωfht-1+Ufxt+bf)。
(1)
式(1)中:ft表示的是经过遗忘门之后保留的信息,σ()是sigmoid函数,ωf、Uf、bf表示线性关系的权重和偏执量,xt为当前输入,ht-1为前一时刻的输出。
输入门各变量的定义为:
it=σ(ωiht-1+Uixt+bi);
(2)
(3)
(4)
(3)LSTM单元的状态由输出门更新。输出门的输入由3部分组成,分别是输入层神经元的输出向量、前一隐层单元的输出向量和当前时间单元的保留信息。由sigmoid层确定哪些部分的当前细胞状态需要输出,tanh层对细胞状态进行处理,得到-1和1之间的值,乘以sigmoid输出获得输出结果,具体如式(5)和(6)。
Ot=σ(ωoht-1+Uoxt+bo);
(5)
ht=Ottanh(Ct)。
(6)
式(5)中,Ot代表对历史信息的保留部分。
受温度、湿度等环境因素的影响,LSTM神经网络对产蛋率的预测结果有一定的不确定性,可以通过Kalman滤波降低不确定性的影响,提高产蛋率的预测精度。
Kalman滤波主要包括状态变量估计和状态变量修正2个过程。
状态变量估计:根据k-1时刻的真实值和系统的可控输入预测k时刻的值。
(7)
状态变量修正:使用k时刻的观测值与预测值之差来校正k时刻的预测值。
Zk=HXK+vk;
(8)
(9)
本文提出LSTM-Kalman产蛋率预测模型,首先采用LSTM对产蛋率进行静态预测,预测输出的结果作为Kalman滤波的输入进行动态调整,调整结果作为最终的预测结果。
基于LSTM-Kalman模型的产蛋率预测过程如图3所示。
图3 基于LSTM-Kalman的产蛋率预测流程图
(1)通过鸡舍温度、湿度传感器等设备获取鸡舍的环境因子数据,并对其进行数据修复和最大、最小值归一化预处理。
(2)利用主成分分析法筛选出影响蛋鸡产蛋率的关键变量,降低模型的输入维度,消除变量之间的相关性,并划分训练集和测试集。
(3)初始化LSTM模型参数,输入训练集,不断调整模型参数,直到获取预期的目标准确率;结合Kalman滤波,构建基于LSTM-Kalman的蛋鸡产蛋率预测模型。
(4)采用测试集测试LSTM-Kalman模型的预测性能,与其他传统预测模型进行对比分析,实现蛋鸡产蛋率的精准预测。
本文选用平均绝对误差(mean average error,MAE)、均方误差(mean square error,MAE)和皮尔逊相关系数(r)来评价预测模型的性能。
影响蛋鸡产蛋率的温度、湿度等变量之间存在很强的相关性,直接作为模型的输入会使得模型的网络结构复杂。可以使用主成分分析对采集的变量进行降维,得到不相关的新变量,最终提取出蛋鸡产蛋率的关键影响变量。由表2可以看出,所提取的主成分个数为3时,累计方差贡献率到达91.097 8%,说明这3个主成分可以代表原数据的绝大部分信息。采用Kaiser标准化正交旋转法得到了蛋鸡养殖环境因子对不同主成分的因子载荷,得到的成分矩阵如表3所示。由过表3的成分矩阵可以看出,对主成分1贡献较大的是平均湿度和平均温度,对主成分2和3贡献较大的均为只均采食量和温差。因此,可以选取只均采食量、温差、平均湿度和平均温度作为预测模型的输入变量,这样可以降低输入变量之间的相关性,简化模型网络结构,并以此构建蛋鸡产蛋率预测模型的输入样本,以获得输出结果。
表2 主成分方差贡献率与累计方差贡献率
表3 成分矩阵
首先,使用LSTM神经网络建立蛋鸡产蛋率预测模型。模型输入变量来自6号鸡舍的生产数据。采用Adam算法进行优化,隐含层节点数50,迭代次数500次,输入层节点数为4,输出层节点数为1。
试验使用采集的数据集作为数据源,2个鸡舍采集的完整产蛋率曲线图如图1中A图所示。利用K折交叉验证法[19]验证和测试模型的性能,本次试验中选取K为5。5次试验所对应的学习率、批尺寸和时间步长如表4所示。图4为5次试验LSTM神经网络的预测值与实际值的变化趋势,各组试验最后的预测结果总体趋势与实际值较为吻合;其中,第3、4和5次试验得到的模型精度较高且拟合性能好,试验1和2预测误差较大。
图4 五次试验LSTM预测结果
表4 五次试验LSTM模型参数对比
从表5可以看出,相对于其他组试验,第3次试验最终取得的预测性能最好,准确率最高,其MSE、MAE和r分别为0.119 4、0.283 5和0.953 4,准确率达94.21%。因此,将LSTM模型的学习率、批尺寸和时间步长分别设置为0.010、10和3 d。时间步长为3 d说明鸡舍当天的环境因子数据会影响到3 d后的产蛋率。另外,从预测结果性能上还可以看出,LSTM是一个精度较高的模型,但在产蛋率出现突变的情况下,预测误差较大,因此,有必要通过Kalman滤波对LSTM的预测结果进行进一步的动态调整,以提高预测精度。
表5 LSTM预测模型的精度分析
通过Kalman滤波对LSTM模型的预测结果进行进一步动态调整,可以降低环境因素的不确定性对预测精度的影响,获得更高精度的预测结果,预测结果如图5所示。LSTM-Kalman模型的MSE、MAE和r分别为0.061 4、0.189 8和0.995 2。说明LSTM-Kalman模型进一步提高了预测精度,能够很好地拟合养殖环境因子和蛋鸡产蛋率之间复杂的非线性关系。
图5 LSTM-Kalman模型预测结果
为了进一步验证LSTM-Kalman模型的预测效果和泛化能力,采用BP神经网络[20-22]、极限学习机[23-25]和单独的LSTM模型与之进行对比。本次试验采用的验证集数据来自5号鸡舍,用6号鸡舍数据训练好的LSTM-Kalman模型进行测试,一方面可以与其他模型进行预测性能对比,另一方面可以验证模型的泛化能力。图6为BP神经网络、极限学习机、LSTM模型和LSTM-Kalman模型的预测曲线,可以看出BP神经网络和极限学习机的预测效果不如LSTM模型,并且加入Kalman滤波动态调整模型后,预测精度得到了进一步提高。由表6可知,LSTM-Kalman模型比单一的LSTM模型预测精度高,MSE和MAE分别达到了0.312 8和0.435 3,预测准确率提高了6.03%,可以看出经过Kalman滤波的动态调整,模型的预测性能和稳定性得到了提高。除此之外,与其他2种浅层模型相比,LSTM-Kalman模型明显优于BP神经网络和极限学习机。
表6 各模型预测结果精度分析
图6 各模型预测曲线图
为了进一步验证模型的泛化能力,使用5号鸡舍的生产数据作为训练样本训练得到LSTM-Kalman模型,6号鸡舍的生产数据作为测试样本进行泛化能力验证,同样使用LSTM模型、BP神经网络和极限学习机进行对比试验,预测结果如图7、表7所示。其中,LSTM-Kalman模型的MSE、MAE和r分别为0.235 7、0.457 2和0.974 3,预测准确率达到97.14%,在4个模型中最好。
表7 各模型预测结果精度分析
图7 6号鸡舍产蛋率预测结果
上述试验结果表明,LSTM-Kalman模型预测精度高,泛化能力强,能够准确预测鸡舍蛋鸡产蛋率未来3 d的变化,为提前做好鸡舍环境因子调控提供依据。
本文提出并构建的基于LSTM-Kalman的蛋鸡产蛋率预测模型能够准确预测未来3 d蛋鸡的产蛋率,可以很好得拟合鸡舍环境变量和蛋鸡产蛋率之间的非线性关系。LSTM-Kalman模型的均方误差、平均绝对误差和皮尔逊相关系数分别为0.312 8、0.435 3和0.975 2,预测精度达到98.71%,优于传统的预测模型,解决了传统模型预测精度低、稳定性差等问题。利用6号鸡舍训练好的模型预测5号鸡舍的生产数据,预测精度达到98.71%;5号鸡舍训练好的模型预测6号鸡舍的生产数据,预测精度达到97.14%,说明LSTM-Kalman模型具有比较强的泛化能力。
本文的蛋鸡产蛋率预测模型具有很好的预测性能,可以让养殖者根据当天环境和生产数据提前了解未来3 d蛋鸡产蛋率的变化趋势,让养殖者及时调控鸡舍温度、湿度等,降低天气变化对蛋鸡养殖的影响,对蛋鸡养殖向智能化发展具有重要的指导意义。