邹修国,宋圆圆,徐泽颖,张世凯,张杰,殷正凌
(南京农业大学人工智能学院/江苏省智能化农业装备重点实验室,江苏 南京 210031)
中国是世界第二大肉鸡养殖国,鸡肉消费量已经仅次于猪肉消费量。在福利养殖模式下,环境要素对肉鸡品质具有非常重要的影响[1]。当今社会,越来越多的人注重食品安全,也关注畜禽养殖环境。氨气是养殖时鸡舍中的主要有害气体,会影响鸡肉品质[2]。鸡长期生活在氨气环境中,会使呼吸系统免疫反应异常,引起气管组织坏死[3-4]。不仅如此,氨气还损害人的健康,因此需要及时、准确地预测氨气浓度变化,以便对鸡舍内的氨气浓度进行调控,提高养殖效率。
国内、外学者对畜禽舍内氨气预测已经进行了一些研究,但主要集中在猪舍内氨气浓度预测,对鸡舍内氨气浓度预测较少。从国内研究现状来看,Tong等[5]在猪舍氨气预测中采用计算流体动力学中广泛使用的5种湍流模型(SKE、RNG、RKE、SKW、KWSST)进行评估,结果表明RNG模型预测猪舍围墙内的气流速度和氨气浓度最接近测量值。谢秋菊等[6]采用L-M算法优化3-7-1三层结构的神经网络模型,对猪舍氨气浓度进行预测,结果显示预测值和实际值相对误差仅为1.72%;并利用5种隶属函数建立了一个拟合良好的自适应神经模糊推理系统预测模型,表明使用Gbell函数的预测模型具有较好的预测效果[7]。刘春红等[8]采用最优权重和残差优化方法对基于ARIMA-BPNN(back propagation neural network)的猪舍氨气浓度预测方法进行对比研究,结果表明残差优化组合预测方法精度最高,为猪舍氨气环境的科学调控提供参考。杨亮等[9]建立基于EMD(empirical mode decomposition)和LSTM(long short-term memory)模型来预测猪舍氨气浓度,并与Elman模型、RNN模型和LSTM模型进行对比试验,结果表明基于EMD-LSTM模型的预测精度较高。
国外学者也采用多种途径实现畜禽舍氨气浓度的预测。Lim等[10]采用主成分分析方法进行预处理,然后采用基于权重划分的后处理BP神经网络来解决复杂非线性效应以提高氨气排放量估算精度和评价氨气排放因子的相对重要性。Brown等[11]建立了一个氨气排放预测方程,预测偏差为+0.13%~+18.6%,对预测氨气排放具有重要意义。
除了预测畜禽舍氨气浓度之外,很多学者还运用机器学习对其他农业对象进行预测研究,例如对生态系统成分[12-14]进行预测等。Zhang等[15]采用BP神经网络模型、最小二乘支持向量机(least square support vector machine,LSSVM)模型和改进的粒子群(improved particle swarm optimization,IPSO)优化LSSVM模型,对黄羽鸡舍的环境温度进行了预测。还有一些农作物相关预测也取得进展,例如双季稻产量估产[16]、植物电信号预测[17]和棉花病虫害预测[18]等。
本文采用机器学习方法对自建的平养鸡舍内冬季氨气浓度进行预测,采用PSO算法优化DNN(PSO-DNN)模型、DNN模型和随机森林模型实现氨气浓度预测,用PSO-DNN模型与另2种模型进行对比,分析鸡舍氨气浓度受鸡舍内环境变化和鸡本身情况影响的变化规律,通过模型实现鸡舍内氨气浓度的预测,从而有助于对鸡舍氨气浓度的及时调控。
1.1 鸡舍环境
试验在江苏省南京市六合区金牛湖街道自建的平养鸡舍内进行(118°52′64″E,32°26′77″N),试验时间为2019年12月5日至2020年1月12日,冬季,鸡舍内设置照明灯,开灯时间为05:00—23:00。鸡舍宽度为1.9 m,长度为2.9 m,墙壁采用彩钢聚苯乙烯夹芯板,地面铺设松木屑作为垫料,鸡舍内放入45只黄羽鸡,舍内设置食槽和自动饮水器供鸡只日常营养摄取,鸡舍实景如图1所示。在鸡舍出风口墙上安装2个负压风机分别作用于内、外循环通风系统,内循环通风系统用于鸡舍内部气体流通,外循环通风系统用于鸡舍与外界大气交换气体,鸡舍监测系统框架如图2所示。根据室内外环境参数,如鸡舍内外温、湿度和舍内氨气浓度等,来控制风机是否开启以及风机的频率,以此来调节鸡舍环境。
图1 鸡舍内部实景图Fig.1 Interior view of the broiler chamber
图2 鸡舍监测系统框架Fig.2 Frame of the monitoring system
Zhang等[19]应用计算流体动力学(computational fluid dynamics,CFD)技术对鸡舍通风系统进行仿真模拟,结果表明该鸡舍通风系统变频风机工况的设计满足对不同时段温度变化的调控,且内循环进风口和负压风机的安装位置可以提高舍内通风降温效果。通风系统调节鸡舍内环境也能影响氨气浓度变化。鸡舍内设有环境参数监测系统、内外循环通风系统和视频监控系统[20],可有效监测和调控肉鸡生活环境,以保证肉鸡健康生长。故本研究采用此通风系统。
在冬季肉鸡养殖过程中,负压风机通风可以降低密闭式平养鸡舍产生的氨气等有害气体,但是在通风降氨的同时还要考虑降低温度损失率。鸡舍2个出风口风机Fan_A和Fan_B独立工作。根据室内的实际温度和氨气浓度给出调频方案,在试验过程中,白天温度不高于30 ℃,所以变频器没有开启最高工作频率(50 Hz),不对此工况进行研究,本文只用到了表1中的3种工况。
表1 风机频率控制方案Table 1 Fan frequency control scheme
试验数据包括2部分。一部分选取试验期间的鸡舍环境变量数据:氨气浓度、温度和相对湿度。由于通风系统只有表1中的3种工况,且受温度和氨气浓度控制,所以工况不单独作为变量列入。从2019年12月6日14:00至2020年1月11日22:00,每分钟保存1组环境变量数据,共保存52 320组数据。此外,由于试验采用松木刨花木屑作为垫料,期间不进行清粪处理,氨气浓度具有累积效应,将鸡龄和肉鸡进入鸡舍的时间(h)作为另一部分试验数据,共同完成对鸡舍内未来1 h氨气浓度的预测,以便有足够时间调控。氨气传感器选用美国霍尼韦尔公司产品4NH3-100,误差小于2%,分辨率为0.007 59 mg·m-3,安装在内循环出风口上方,距离地面30 cm处;温、湿度监测采用建大仁科品牌RS485型温湿度变送器,温度分辨率是0.1 ℃,相对湿度分辨率是0.1%,安装在外循环进风口上方,距离地面30 cm处。环境变量监测点布置如图3所示。
图3 鸡舍环境参数测量点分布Fig.3 Distribution of monitoring points in the broiler chamber
鸡舍环境变量数据包括外循环进风口处的温、湿度数据和内循环出风口处氨气浓度数据。新鲜空气由外循环进风口进入鸡舍内部,因此本文采用外循环进风口处的温度、相对湿度值表示鸡舍外环境变量。由于内循环通道将鸡舍内循环出风口和进风口连接起来,和鸡舍外无气体交换,内循环负压风机将鸡舍内气体匀速排入内循环通道,通道内氨气浓度值更能代表鸡舍内氨气浓度平均值,因此选定内循环出风口处氨气浓度测量值作为鸡舍氨气浓度值。将鸡舍外温度、相对湿度和鸡舍内氨气浓度作为数据集的一部分对鸡舍内氨气浓度进行预测。
1.3.1 数据插值处理在试验过程中,没有出现设备故障、断电等因素导致的环境变量数据缺失和异常,但是由于鸡只在传感器旁振翅等行为造成气流扰动而导致温、湿度和氨气浓度监测数据偏离实际值。经过数据分析,温、湿度本身数据波动较小,将温、湿度偏离前、后各5 min共10个值的平均值的10%认定为偏离值;氨气本身数据波动稍大,将氨气浓度偏离前、后10个值的平均值的20%认定为偏离值。偏离值会影响预测结果,因此本文采用均值插补法实现数据的平滑性,用前、后各5 min数据的平均值作为该取样时间的值。
1.3.2 数据处理由于1 h内鸡舍环境参数变化不大,因此将鸡舍环境参数按每小时的平均值进行平滑处理。数据采集频率是每分钟采集1次数据,将鸡舍每60个采样点的环境参数进行1次平均,52 320组数据经过每小时平均处理得到872组数据。表2为每小时平均处理后的鸡舍环境变量数据及鸡龄和鸡进入鸡舍的时间数据。每小时平均处理计算公式如下:
(1)
表2 部分试验数据Table 2 Experimental data
式中:xh为每小时平均值;xi为第i分钟所采集的数据。
通过分析试验数据得到氨气浓度阶段极值出现的条件为:早晨05:00和温度达到20 ℃,前者是因为开灯后,鸡的活动造成舍内氨气浓度迅速上升;后者是因为20 ℃前负压风机在15 Hz下工作,舍内氨气不能有效排出,导致不断积累。随后风机在30 Hz下工作,舍内氨气浓度得到有效控制。
1.3.3 数据归一化处理不同量纲和量纲单位的评价指标会影响数据分析的结果,为了去除数据量纲和数量级影响,对数据进行归一化处理,使数据指标具有可比性。原始数据经过数据归一化处理后,不同维度之间的特征在数值上具有一定可比性,各指标处于同一数量级,适合进行综合对比评价。数据归一化处理后会提升模型的收敛速度和模型的精度。
本文数据采用min-max法进行数据归一化处理,完成对原始数据的线性变换,其结果映射到(0,1)之间。转换函数公式如下:
(2)
式中:x*为标准化处理后的数据;x为原始数据;xmax、xmin为样本数据的最大值、最小值。
本文选取整体数据集的前70%作为训练集,后30%作为验证集,采用PSO-DNN建模预测未来1 h的氨气浓度,采用平均绝对误差(mean absolute error,MAE)作为机器学习预测结果衡量的标准,与DNN、随机森林模型进行对比分析,MAE计算值越小说明预测结果越好。下面根据鸡舍氨气浓度预测输入数据特征构建DNN、PSO-DNN和随机森林3种预测模型。
1.4.1 DNN预测模型DNN是有较多隐藏层的神经网络,也被称为多层感知机。近几年DNN在解决多种领域的困难问题上取得了巨大成功[21]。DNN内部网络包括:输入层、隐藏层和输出层,如图4所示。最左边1列是输入层,最右边1列是输出层,其余中部若干列都是隐藏层。网络中任一层的神经元都与下一层的任意1个神经元相连。
图4 深度神经网络(DNN)预测模型基本结构Fig.4 Basic structure of deep neural network(DNN)prediction model
图4中,x1,x2,…,xq为DNN预测模型的输入,分别表示从温度、湿度、氨气浓度、鸡龄和鸡进入鸡舍的时间等信息中提取的特征元素所组成的输入向量。在DNN中包含p个隐藏层,下一层的输入接到上一层的输出,最终输出结果y。假设第i-1层共有m个神经元,而第i层共有n个神经元,则第i层的线性系数ω组成1个n×m的矩阵Wi,第i层的偏置b组成1个n×1的向量bi,第i-1层的输出a组成1个m×1的向量ai-1,第i层的未激活前线性输出z组成1个n×1的向量zi,第i层的输出a组成1个n×1 的向量ai。用矩阵表示第i层的输出,见公式(3)。
ai=σ(zi)=σ(Wiai-1+bi)
(3)
激活函数采用ReLU(rectified linear unit)函数,给定元素x,该函数定义为:
ReLU(x)=max(x,0)
(4)
ReLU函数提供了一个很简单的非线性变换,可以看出,ReLU函数只保留正数元素,并将负数元素清零,避免梯度爆炸和梯度消失问题。
将所有的矩阵W、偏置向量b和输入数据向量x进行所需的线性以及激活运算,从输入层开始按层依次向后计算,一直到算出最后的输出层结果。本文设置DNN模型参数如表3所示。
表3 DNN模型参数设置Table 3 Parameter setting of DNN model
1.4.2 基于PSO算法优化的DNN预测模型PSO是一种智能进化计算方法,依靠群体中个体之间协作以及信息共享找到最优解[22]。PSO算法作为仿生方法,源于对鸟群或鱼类社会行为的研究。算法中设每个粒子是N维搜索空间的运动个体,粒子有速度和位置2个属性,任一粒子在搜寻空间内调整自身位置以及与其他粒子的协作来计算全局最优解。因为PSO算法计算简便、收敛效率高,在机器学习算法领域获得广泛应用[23-24]。
PSO算法优化DNN模型的基本思想:一次训练所选取的样本数目batch_size决定了模型的优化程度和速度,增大batch_size会使相对处理速度加快,同时所需内存容量增加。batch_size的正确选择是为了在内存效率和内存容量之间寻找最佳平衡点,合适的batch_size使梯度下降的方向更加准确,训练振动的幅度减小,模型更容易收敛,对于数据量较大的数据,必须正确设置batch_size的数值,不可省略。为了选择合适的batch_size,引入PSO算法来优化该值,建立一种新的PSO-DNN模型。PSO优化DNN模型的步骤如下:
1)完成初始化,包括最大迭代次设定,自变量个数设定,粒子最大速度设定,将位置信息设为整个搜索空间。随机初始化速度区间内的速度和搜索空间内的位置,粒子群规模设为M,对所有粒子随机设定 1个飞行速度。
2)对适度函数和个体极值进行定义,为所有粒子计算最优解,从最优解中找1个全局值,即是本次全局最优解,与历史全局最优解比较,如果优于历史值,则要替换。
3)更新每个粒子的速度和位置,具体方法见公式(5)和(6)。
(5)
(6)
4)当达到设定迭代次数或全局最优位置满足最小界限时,算法结束。将PSO算法训练出的batch_size值作用于DNN模型。
以最小MAE作为目标函数,设定算法终止判断依据为迭代次数是否达到100次,得到最佳的batch_size为10,再以此构建DNN模型进行预测,算法流程如图5所示。
图5 PSO-DNN模型流程图Fig.5 Flow chart of PSO-DNN model
1.4.3 随机森林模型随机森林模型是包含多个决策树的集成分类器,其采用的决策树在生长过程中完全生长不进行剪枝,且森林中的每一棵决策树之间没有关联,模型最终输出的预测结果是所有树预测值的平均值。随机森林模型融合了bagging和随机特征选取,因此相对于其他大多数算法,随机森林模型具有一定的优越性。大量的理论和实践研究结果表明,随机森林模型具有极好的准确率和较强的抗噪性[25],能够评估各个特征在分类问题上的重要性,且不易发生过拟合现象[26]。随机森林模型算法流程如图6所示。
图6 随机森林模型算法流程图Fig.6 Flow chart of random forest model
其基本步骤如下:
1)从初始数据训练集M中利用bootstrap自助法采用放回抽样的方式抽取k个样本作为每棵回归树的根节点样本,且每个样本的容量都与原始训练集一样,形成训练集,剩余样本用于评估预测误差。
2)选择k个样本建立决策树模型。随机选择一定数量的特征,决策树的分裂节点都选最优特征值,经过计算后得到k种输出结果,决策树最后的预测结果都是该样本点到叶节点的均值。
3)计算k种输出结果预测值均值作为随机森林模型对氨气浓度预测的结果。
基于随机森林模型的氨气浓度预测模型参数设置如表4所示。
表4 随机森林模型参数设置Table 4 Parameter setting of random forest model
根据文中参数设定,分别对DNN模型、PSO-DNN模型和随机森林模型用数据集前70%数据训练,训练后对后30%数据进行预测,分别将预测结果与监测值对比。由上文可知,数据集共872组数据,其中鸡舍内环境数据均为小时平均数据,共872 h。数据集后30%经过3个模型预测后,结果如图7所示。
图7 基于DNN模型(A)、PSO-DNN模型(B)和随机森林模型(C)的氨气浓度预测结果Fig.7 Ammonia concentration prediction based on DNN model(A),PSO-DNN model(B)and random forest model(C)横坐标代表数据集后30%对应的时间。The abscissa represents time of corresponding to 30% of the data set.
由图7-A可以看出:采用DNN模型进行氨气浓度预测的结果曲线整体在监测值曲线下方,即预测值整体高于监测值。监测值曲线的某些峰值特征,预测结果未能有效预测出,在时间为757 h左右尤为突出,预测精度有待提高。在全部时间点中,DNN模型预测值和监测值最大差值为8 mg·m-3,预测结果的MAE为4.297 mg·m-3。
由图7-B可看出:采用PSO-DNN模型进行氨气浓度预测的结果与DNN模型预测结果相比吻合度上升,特别是在757~857 h二者曲线几乎重合。从整体预测结果看,最大误差值约3 mg·m-3,优于DNN算法预测值与监测值的最大差值8 mg·m-3;PSO-DNN模型预测结果的MAE为1.886 mg·m-3,预测精度提高。
由随机森林模型的预测值曲线和监测值曲线对比结果(图7-C)可以看出,607~757 h预测值大于监测值,差值最大约为10 mg·m-3,且在时间上预测值曲线稍滞后于监测值曲线,但是其走向基本一致;随着时间的延长,浓度变化复杂程度提高,757 h之后预测值曲线和监测值曲线上下交错,二者差值较大,最大约为14 mg·m-3。最后得到的预测结果的MAE为2.855 mg·m-3。
上述结果表明:PSO-DNN模型预测精度最高,与DNN和随机森林模型预测结果相比,其MAE分别降低56.1%和33.9%,因此选定PSO-DNN作为氨气浓度预测模型。如果预测的氨气浓度达到19 mg·m-3,将通过增加负压风机工作频率,即内、外循环风机都从0 Hz调至15 Hz,或从15 Hz调至30 Hz,以此对氨气浓度提前进行调控。
监测系统选定PSO-DNN作为氨气浓度预测模型,将构建完成的模型用于现场试验。试验时间从2020年1月12日18:00至2020年1月20日06:00。在鸡舍内铺上全新垫料,1月12日18:00设为模型应用试验第1个小时,鸡龄是112 d,氨气变送器和温、湿度变送器每分钟记录1次,共记录10 800组数据,经过每小时平均处理得到180组数据用于模型输入,经过模型计算,得到预测值和监测值对比结果(图8)。
由图8可以看出,通过表1风机控制方案和氨气预测浓度达到19 mg·m-3触发风机增加工作频率的组合控制,氨气浓度值控制在19 mg·m-3以内;同时PSO-DNN模型氨气浓度预测结果与监测值吻合度较高。从整体预测结果来看,该模型预测结果的MAE为0.757 mg·m-3,结果比模型对原数据集后30%测试数据集预测结果好,由此得到模型从试验初期开始计算,氨气浓度值逐步累加,预测精度更高。
图8 PSO-DNN氨气浓度模型的验证结果Fig.8 Verification results of PSO-DNN prediction model for ammonia concentration
1)本文采用的小型精细化平养鸡舍,设计内、外循环通风系统,通过养殖45只黄羽鸡的冬季试验验证风机通风效果,氨气浓度阶段极值出现的条件为早晨05:00和温度达到20 ℃。负压风机工作在30 Hz频率下,鸡舍内氨气浓度可以得到有效控制。
2)针对多环境因素和鸡本身数据,采用PSO算法优化DNN模型构建PSO-DNN模型来预测氨气浓度,最终PSO-DNN模型预测结果的MAE为1.886 mg·m-3,用DNN和随机森林构建模型预测结果的MAE分别为4.297和2.855 mg·m-3,PSO-DNN模型预测的准确度更高。
3)将PSO-DNN模型用于现场试验,氨气浓度预测结果的MAE为0.757 mg·m-3,结果优于模型对原数据集后30%测试数据集预测结果。因此,PSO-DNN模型可用于冬季平养鸡舍内氨气浓度预测和预警。