郭祥云 连京华 李慧敏 孙 凯
(1.北京信息科技大学 信息管理学院,北京 100192;2.山东省农业科学院 家禽研究所,济南 250023)
氨气是一种无色、有毒、有强烈刺激性气味的气体,研究表明蛋鸡生长环境的氨气浓度过高会对鸡只的呼吸道黏膜和眼结膜产生刺激并诱发各种炎症[1-3]。氨气浓度受养殖场内温度、湿度、通风条件等环境因素影响,依靠监测设备可以获取氨气浓度数据并对其进行监测和调控,但存在调控滞后性问题[4]。及时、准确地预测鸡舍内氨气浓度的变化情况,进而辅助管理人员管理和控制鸡舍内环境,对于改善鸡只生存环境和提高动物福利具有重要意义。
已有研究对畜禽养殖场氨气浓度的预测提出了一些方法,主要分为2大类: 基于物理化学统计的氨气排放机理模型和基于经验的智能算法。机理模型从物理化学角度定量分析氨气排放的变化规律;基于经验的智能算法是黑箱模型,不关注系统内部结构,可以用来解决机理复杂且未知的非线性建模问题[5]。鸡舍内氨气浓度与其他环境因素间存在复杂的非线性关系[6],因此,采用基于经验的智能算法预测鸡舍内氨气浓度是可行的方法之一。
常用的基于经验的智能算法有经验模态分解和长短时记忆神经网络模型(Empirical mode decomposition-long short term memory, EMD-LSTM)[7]、Logistic回归模型[8]、自适应模糊神经网络(Adaptive neuro fuzzy inference system, ANFIS)[2]、灰色隐马尔可夫模型(Grey hidden markov model,GHMM)[9]、深度信念网络(Deep belief networks,DBN)[10]、粒子群优化极限学习机(Particle swarm optimization-extreme learning machine,PSO-ELM)[11]、反向传播神经网络(Back propagation neural network,BPNN)[12-14]等,且多用在猪舍氨气浓度预测[2,9,15-16]、水体氨氮预测[10-11]、农田和牛舍氨气浓度[12,17]等领域,有关鸡舍氨气浓度预测算法的研究相对较少。
近年来,循环神经网络(Recurrent neural network, RNN)在自然语言处理、机器翻译和时序预测中取得了很好的效果[5]。RNN可以使用内部存储器单元来处理任意输入序列,从而保证学习时间序列的能力,捕捉系统时间和空间的演变。但是,RNN存在梯度消失现象,无法捕捉序列中的长时间依赖性。长短时记忆(Long short-term memory, LSTM) 网络完整地考虑时间序列中长短期依赖关系,极大程度上避免了梯度消失的发生[13]。基于双阶段注意力机制的编码器-解码器(Encoder-Decoder)模型以LSTM为基本单元,最初被用来解决机器翻译问题,因其能够自适应的提取输入数据特征,同时记忆时间序列的长期依赖关系,在时间序列预测中展现了良好的性能[18-19]。本研究拟采用基于双阶段注意力机制和LSTM的Encoder-Decoder模型构建鸡舍内氨气浓度预测算法,以期为鸡舍氨气浓度高精度预测提供技术支持。
本研究数据采集自山东省济南市商河县北部某蛋鸡养殖场,鸡舍长60 m,宽12 m(图1),采用自动饲喂和自由饮水方式,全天供水,通风方式为自然通风和强制通风相结合。数据采集时间为2020-04-01—04-07,每15 min采集1次,此时鸡龄为160~166 d。采集的鸡舍环境数据包括:二氧化碳(CO2)、氧气(O2)和氨气(NH3)体积分数,细颗粒物(PM2.5)质量浓度,温度和相对湿度[6]。基于物联网的鸡舍环境参数采集系统拓扑结构见图2,传感器参数见表1。表2示出2020年4月2日8:00—11:00试验鸡舍环境数据。
图1 试验鸡舍Fig.1 Layer house
1.2.1数据预处理
1)缺失值处理:本研究中缺失值主要来源于传感器通信故障,缺失值填充方法为缺失值所在时间点前后相邻两个时间点数据值的平均值[7]。
2)异常数据处理:本研究中异常数据识别标准为测量值与其平均值之差的绝对值大于其标准差的3倍,异常点处数据将被替换为异常点两侧数据的平均值。
3)归一化处理:为消除环境参数量纲不同造成的收敛困难问题[20],本研究采用最大最小法对环境参数进行归一化处理,归一化计算公式为[7]:
图2 鸡舍环境参数采集系统拓扑结构Fig.2 Topological structure of environmental parameters collection system in layer house
表1 本研究所用传感器技术参数Table 1 Technical data of sensors in this research
表2 2020-04-02 T8:00—11:00试验鸡舍环境数据Table 2 Environmental data of layer house at 8:00—11:00 on April 2nd, 2020
(1)
式中:X′为归一化后的值;X为原始值;Xmin和Xmax分别为原始值中最小值和最大值。
1.2.2双阶段注意力机制模型
鸡舍内氨气浓度受温度、湿度等多种环境参数影响,环境变量在同一时刻具有相互依赖性,同时,不同时刻的环境变量数据对其他时刻的环境变量数据影响也不同,双阶段注意力机制模型在编码器和解码器阶段均引入注意力机制,能够获取鸡舍环境变量之间的依赖性和环境变量数据序列的时间依赖性。
1)双阶段注意力模型结构。
双阶段注意力机制预测模型的结构见图3。模型输入为鸡舍中CO2和O2的体积分数、PM2.5质量浓度以及温度、相对湿度序列数据,时间窗口大小为T。输入注意力机制模块用以捕捉环境变量之间的依赖性,该模块能够自适应地提取环境变量对氨气浓度的影响程度,并赋予环境变量不同的权重;经过输入注意力机制加权的环境数据传递给编码器模块进行编码,然后进入时间注意力机制模块,时间注意力模块自适应提取不同时刻环境数据对氨气浓度的影响程度,并对不同时刻的环境数据进行加权,经过时间注意力模块加权后进入解码器进行解码。最后将信息传输给全连接层输出氨气浓度预测值。
图3 双阶段注意力模型结构Fig.3 Two-stage attention mechanism structure
2)长短时记忆网络(LSTM)。
本研究中编码器和解码器均采用LSTM算法(图4),LSTM算法由Hochreiter等提出[21],其隐藏层神经元包括细胞状态和3个门结构,实现控制信息在细胞状态上的更新。
图4 LSTM单元结构Fig.4 LSTM cell structure
LSTM单元主要计算公式如下:
(2)
Ut=σ(Wu[ht-1,xt]+bu)
(3)
Ft=σ(Wf[ht-1,xt]+bf)
(4)
Ot=σ(Wo[ht-1,xt]+bo)
(5)
(6)
ht=Ot⊙tanh(ct)
(7)
3)输入注意力机制。
(8)
(9)
(10)
4)时间注意力机制。
(11)
(12)
时间注意力模块的输出ot计算公式为:
(13)
5)解码器。
解码器结合全连接层对T+1时刻的氨气体积分数进行预测,Y=(y1,y2,…,yt,…,yT)表示T时间窗口内各个时刻的氨气体积分数,yt表示t时刻的氨气体积分数。具体过程为:
(14)
(15)
图5 输入注意力机制Fig.5 Input attention mechanism
图6 时间注意力机制Fig.6 Temporal attention mechanism
(16)
式中:oT为时间注意力模块T时刻的输出;Vy,Wy,bw,b为待训练参数。
1.2.3模型评价方法
为了比较不同预测模型的性能,采用平均绝对误差(Mean absolute error, MAE)、均方根误差(Root mean square error, RMSE)2个指标衡量各模型的预测结果[6]。MAE和RMSE的计算公式分别为:
(17)
(18)
本研究中CO2、NH3和O2的体积分数,温度和相对湿度数据的缺失率分别为0.299%,0.747%,0.149%,0.897%,0.897%,PM2.5质量浓度数据无缺失。数据集的划分采用holdout方法,训练集占比为80%,测试集占比为20%。经多次试验,选择的优化函数为Adam,学习率为0.001,隐藏状态大小为64,时间窗口T∈{2,3,4,8},分别对应实际时间为30, 45, 60和120 min。对比算法为支持向量回归 (Support vector regression,SVR)、人工神经网络(Artificial neural network,ANN) 和无注意力机制的LSTM算法。SVR模型参数为:核函数为径向基函数(Radial Basis Function,RBF);时间窗口T∈{2,3,4,8}的惩罚系数分别为1.0,0.5,0.5,1.0;ANN模型为1个输入层,5个隐藏层和1个输出层,5个隐藏层神经元个数分别为5,10,25,10,5,激活函数为tanh;无注意力机制的LSTM模型参数与本研究中模型参数相同。模型采用Python 3.6、sklearn 0.23.2、Pytorch 1.1.0框架进行开发。
图7示出不同时间窗口T下测试集NH3体积分数预测结果对比。直观地看,随着T的增加,模型拟合效果逐渐向好。当T为8时,NH3体积分数波动较小时刻,模型预测能力强;NH3体积分数波动幅度较大时刻,模型预测能力较弱。
图7 不同时间窗口T下测试集氨气体积分数观测值和预测值Fig.7 Observations and predictions of NH3 volume fraction on testing set under different window size
图8示出不同时间窗口T下的测试集NH3体积分数预测残差。T=2时,残差区间为±2.0 μL/L;T∈{3,4}时,残差区间为±3.0 μL/L,T=4时残差波动幅度较T=3时小;T=8时,最大残差超过了4.0 μL/L。对于不同时间窗口T,最大残差均出现在氨气浓度波动较大的时刻,表明在氨气浓度波动较大时,模型预测能力较弱。同时,随着时间窗口T的增加,在氨气浓度变化较小的区间内,残差较小;相反地,氨气浓度波动剧烈的区间残差较大。
图8 不同时间窗口T下测试集NH3体积分数预测残差Fig.8 Residual of NH3 volume fraction under different window size
表3示出不同模型RMSE和MAE指标对比。本研究模型的RMSE在T为2,3和4时分别为0.433 4,0.394 8和0.379 9 μL/L, 逐渐减小;T=8时,相较之前有所增加,为0.405 1 μL/L,与文献[19]研究呈现类似的变化趋势,表明时间窗口T太大或太小会导致模型鲁棒性和泛化性的变化,在进行氨气浓度预测时需要选择合适的时间窗口。MAE在4个时间窗口T下分别为0.267 4,0.262 9,0.228 9和0.272 4 μL/L,呈现同样的变化趋势。
从RMSE指标看,相较于SVR,在T为2,3,4和8时分别降低了43.61%,57.77%,48.50%和43.85%,相较于ANN分别降低了43.77%,57.51%,48.66%和45.21%。从MAE指标看,相较于SVR, 在T为2,3,4和8时分别降低了20.01%, 28.79%, 35.84%和12.91%, 相较于ANN分别降低了24.07%,32.88%,38.71%,25.36%。可以看出,SVR和ANN模型预测结果接近,本模型的预测结果在RMSE和MAE评价指标框架下优于SVR和ANN。
无注意力机制的LSTM算法表现优于SVR和ANN,略逊于双阶段注意力机制的LSTM模型,在T为2,3,4和8时,RMSE分别为0.474 6,0.504 5,0.450 4和0.535 2 μL/L,MAE分别为0.270 2,0.283 7,0.243 2和0.272 6 μL/L,相比于该模型,基于双阶段注意力机制的LSTM模型在RMSE指标上分别降低了8.68%,21.74%,15.65%和24.98%;在MAE指标上分别降低了1.04%,7.33%,5.88%和0.07%。
表3 各模型测试集氨气体积分数预测误差对比Table 3 Comparison of prediction error of NH3 volume fraction with different models on test dataset
本研究采用基于双阶段注意力机制和LSTM算法对鸡舍氨气浓度进行预测,并与传统的SVR和ANN算法以及无注意力机制的LSTM算法进行比较研究。结果表明,基于双阶段注意力机制和LSTM的模型相较于SVR、ANN和无注意力机制的LSTM模型,在不同时间窗口下RMSE和MAE均较低。基于双阶段注意力机制和LSTM的模型能够提高鸡舍氨气浓度时序数据变化趋势的预测精度,能更准确地预测鸡舍氨气浓度变化和趋势。
循环神经网络训练需要大量数据集,为了提高模型的鲁棒性,今后研究可以采取增加数据集等方法改善模型表现;同时鸡舍环境受如温度、湿度、气象因素、饮食等众多因素影响,且环境变量间存在复杂的非线性关系,考虑更多环境因子或有助于提高模型预测精度及鲁棒性。