基于GRU网络的血糖预测方法研究

2020-10-15 11:01滕建丽容芷君但斌斌
计算机应用与软件 2020年10期
关键词:神经网络误差血糖

滕建丽 容芷君 许 莹 但斌斌

1(武汉科技大学机械自动化学院 湖北 武汉 430081) 2(武汉市第五医院 湖北 武汉 430050)

0 引 言

据最新流行病学调查数据,我国糖尿病患病率高达10.9%,血糖达标患者仅为49.2%[1]。“人工胰腺”(Artificial Pancreas,AP)是一种替代胰腺内分泌功能从而把血糖控制在生理范围以内的电子机械装置,有望成为强化血糖控制的新方案[2]。近年来,连续血糖监测技术(Continues Glucose Monitoring,CGM)的逐步成熟极大地推动了“人工胰腺”的发展,但是由于血糖浓度时间序列具有时变性、非线性和非稳定性等特点[3],严重影响了血糖预测精度,制约了“人工胰腺”的闭环控制性能。

血糖预测模型主要分为两大类:基于生理模型的血糖预测和基于数据驱动的血糖预测。生理模型一般较为复杂,使用过程涉及大量参数,而人体血糖是一个动态调节过程,易受各种因素的干扰,这导致建模过程中个性化的参数识别过程困难[4],同时预测精度较低。随着传感器技术的发展,研究人员利用各种传感器获得的血糖及其他数据指标,构建了基于数据驱动的血糖预测模型。Zecchin等[5]构建了基于神经网络的血糖预测模型,并研究了不同输入特征对预测精度的影响。结果表明,当预测时间小于30分钟时,增加除CGM以外的特征对预测精度并无显著影响。还有一些研究表明,胰岛素和碳水化合物摄入量对于血糖预测模型来说是冗余特征,仅使用CGM数据作为输入特征就已足够[6]。此外,血糖预测模型主要应用于“人工胰腺”,过多的输入特征会给患者使用带来不便。因此,目前很多基于数据驱动的血糖预测模型研究都仅采用CGM数据作为模型输入特征。王延年等[3]提出了一种自适应噪声的完整聚合经验模态分解与极限学习机相结合的短期血糖预测模型,预测效果较好。Alia等[7]提出了一种基于人工神经网络的血糖预测方法,该方法相对于支持向量回归、自回归和极限学习机具有更好的预测效果。Hamdi等[8]采用支持向量回归预测短期血糖,并采用差分进化方法对其参数进行优化,取得了较好的预测效果。此外,还有一些学者运用ARIMA、高斯混合模型、正规学习、增强学习、随机森林、卡尔曼滤波等方法构建了血糖预测模型。这些模型能在一定程度上实现短期血糖预测,但是当预测步长(Prediction Horizon,PH)增大时,预测效果就会大大降低,因此有必要对其进行进一步研究。

在时序建模方面,循环神经网络(Recurrent Neural Networks,RNN)相对于其他网络结构优势更为突出,对于实值时序预测问题而言,循环神经网络建模类似于自回归分析,但是它能构建比传统时间序列复杂的多的模型,基本RNN及其两种变体—长短记忆单元(Long-Short Term Memory,LSTM)和门控循环网络(Gated Recurrent Unit,GRU)已在交通流量、客流量等时序预测问题上被证明比传统的SVR、BP等方法具有更好的预测效果,当预测步长增加时,其预测效果也要显著优于传统方法[9-11]。考虑到血糖时间序列的非线性和复杂性,本文将门控循环单元网络应用于血糖预测领域,并进行深入探讨。

1 循环神经网络模型结构

1.1 基本结构模型

相较于传统的人工神经网络,循环神经网络可通过循环结构传递信息,实现信息的持久化[11],因而可用于对文本语句、时间序列、生物信号序列等序列数据建模。基本的循环神经网络主要也可概括为输入层、隐藏层和输出层,与前馈型神经网络相比,循环神经网络在隐藏层采用自连接,如图1(a)所示,其展开形式如图1(b)所示。若输入向量X=(x0,x1,…,xp-1)T,则时刻t各层的状态为:

图1 循环神经网络基本结构

Ht=fhh(WhhHt-1+WxhXt)

(1)

Yt=fhy(WhyHt)

(2)

式中:fhh和fhy分别为隐藏层到隐藏层、隐藏层到输出层的激活函数,一般为Sigmoid函数或tanh函数;Wxh、Whh和Why分别为输入层和隐藏层、隐藏层和隐藏层、隐藏层和输出层之间的连接权重矩阵。

基本RNN采用BPTT算法进行参数调整,与训练深层前馈神经网络所遇问题相似,训练基本RNN的过程也存在梯度消失或梯度爆炸问题[12]。此外,基本循环神经网络无法实现长期依赖,即它无法记忆时间步长过长的信息。基于此,出现了基本RNN的两种变体——LSTM和GRU网络,其变化示意图如图2所示。

图2 网络结构变化示意图

1.2 长短记忆网络

为了解决基本RNN网络所存在的梯度消失、梯度爆炸,以及无法实现长期依赖等问题,Hochreiter等[13]于1997年首次提出了长短记忆单元(Long-Short Term Memory,LSTM),其良好的预测性能在多个领域得到了证实。LSTM是基本RNN的一种变体,它采用长短记忆单元替代基本RNN隐藏层中的激活函数,其结构如图3所示。除原始激活函数外,该记忆单元还包含由Sigmoid函数构成的输入门、遗忘门和输出门,以及一系列的乘法和加法操作。输入门控制新信息Xt合并到长期记忆中,遗忘门控制过去单元状态Ct-1的保留程度,输入门和遗忘门共同决定着单元状态(Ct)的更新,输出门基于单元状态Ct控制隐藏层Ht输出。Sigmoid函数将上一时间点隐藏层信息和当前输入信息线性变换所得数据转化为0~1之间数值输出,一方面控制信息的记忆程度,另一方面也解决BP算法引起的梯度消失和梯度爆炸问题。

图3 长短记忆单元

1.3 门控循环单元

LSTM由于其良好的预测性能被广泛运用于时间序列问题预测,但是其复杂的内部结构也导致模型训练速度降低。基于此,Cho等[14]于2014年提出了一种基于LSTM的变体——GRU网络单元,如图4所示。GRU网络中并没有明确的单元状态,它利用一个复位门实现了LSTM中遗忘门和输入门的作用,利用更新门控制隐藏层状态的更新,GRU的这种内部结构使得它一方面继承了LSTM的优势,另一方面又减少了模型训练所需参数,从而降低了模型训练时间。

图4 GRU单元

GRU隐藏层输出计算过程如下:

Rt=σ(WrxXt+WrhHt-1)

(3)

Zt=σ(WzxXt+WzhHt-1)

(4)

(5)

(6)

2 短期血糖预测模型构建

2.1 数据来源

本文数据来源于武汉市某三甲医院的美奇连续血糖监测仪,该监测仪每3分钟测得一次血糖数据,可获得连续的血糖监测数据。本文选取20位糖尿病患者数据。图5是某患者连续5日血糖变化曲线。

图5 某患者连续5日血糖变化曲线

2.2 数据预处理

本文对血糖数据的预处理主要有:1)平稳性检验。首先对每位患者的原始序列数据进行单位根检验,判断其平稳性。若平稳,则对原始数据不作处理;若非平稳,则进行差分处理。2)数据归一化。为了更好地训练模型,采用最值归一化方法对差分后数据缩放到(0,1)区间内。3)数据集的转换。本文的时间序列数据无法直接应用于模型,须按时间顺序将其转换成由输入X和输出Y组成的监督型数据样本。4)数据集的划分。本文将经前三步处理所得的每位患者的监督型样本数据随机划分为训练集、验证集和测试集,其所占比例分别为70%、20%和10%。

2.3 模型整体结构及参数设计

本文采用深度学习框架Keras中的Sequential模型,利用add函数添加各网络层。

1)网络结构设置。经多次试验,构建单层GRU网络,输出维度为5,添加全连接层连接隐藏层与输出层,全连接层激活函数为Linear。

2)模型参数设置。对于循环神经网络而言,网络的输入序列长度T是一个很重要的参数,它不仅决定了RNN的深度,也影响着预测结果的精度。基于此,本文首先根据式(7)计算时间序列的自相关系数。取自相关系数约等于0.5时的时间延迟τ,令N=τ,取时间序列T分别等于{N-20,N-15,N-10,N-5,N,N+5,N+10,N+15,N+20},进行单变量控制试验,取预测步长为20时均方根误差最小的为最终输入序列长度T。

(7)

式中:τ为时间延迟;ut、ut+τ为均值;σt、σt+τ为标准差;E为期望;R(t,t+τ)为自相关系数。

此外,本文选择绝对值均差MAE作为损失函数,均方根反向传播(RMSProp)作为优化器。每次训练所含样本数为32,训练轮数为200次,为防止模型在训练集上准确率下降,添加EarlyStopping操作,若连续5次迭代过程不发生变化,则停止训练。

2.4 模型性能评价指标

为了量化模型预测性能,本文分别选取均方根误差(Root Mean Square Error,RMSE)、平均绝对百分误差(Mean Absolute Percentage Error,MAPE)和克拉克误差网格分析法(Clarke Error Grid Analysis,EGA)作为模型预测性能评价指标。克拉克误差网格分析是为了评估患者的测量血糖值和参考血糖的临床精确度而于1987年开发的分析方法[15]。目前它已成为评估血糖预测算法精度的一种常用方法,该方法可以评估血糖实际水平和预测水平的临床效果差异[7]。

均方根误差计算公式如下:

(8)

平均绝对百分误差计算公式如下:

(9)

3 结果与分析

本文构建基于GRU网络的短期血糖预测模型,表1和表2分别是20位不同患者预测步长分别为2步(提前期=6 min)、10步(提前期=30 min)、16步(提前期=48 min)和20步(提前期=60 min)时的RMSE和MAPE。可以看出,预测误差大体上随预测步长的增加而增加,但也有少数情况相反。由于患者血糖波动状况不同,不同患者的预测误差大小具有很强的差异性,相对而言,血糖波动幅度小的预测效果更好。其中,预测效果最好的在提前期为60 min时其RMSE为0.230 6 mmol/L,MAPE为3.557 4%。

表1 提前期分别为6 min、30 min、48 min和60 min的RMSE mmol/L

表2 提前期分别为6 min、30 min、48 min和60 min的MAPE %

4 讨 论

为了探究GRU相较于其他方法的预测性能,本文与支持向量回归(SVR)、基本RNN和LSTM等方法进行对比。SVR参数设置:kernel为径向基神经网络,C=10,gamma=0.1。基本RNN激活函数为tanh,其他参数与GRU相同,LSTM结构和参数都与GRU相同。表3是几种不同方法的平均绝对百分误差,由表3可知,提前期为60 min时,GRU的预测误差为7.34%,LSTM的预测误差为7.92%,传统RNN的预测误差为10.78%,SVR的预测误差为12.37%,即对于血糖预测问题,GRU的方法最优。对于模型运行时间而言,GRU的平均时间为42.21 s,LSTM的平均时间为51.66 s,即GRU的运算速度相对LSTM更快。

表3 几种不同方法误差比较 %

克拉克误差网格分析法是一种图形工具,它根据血糖预测值落在A、B、C、D、E五个区域的概率来评估血糖预测方法的准确性。图6是使用上述方法预测某患者未来60 min血糖变化的克拉克误差网格分析结果,落在A区域的值具有较高的预测精度,它表明预测值偏离实际值不超过20%。由图6可知,所有点均落在A、B区域内,使用GRU预测时,A区域占比98.392 9%,B区域占比1.607 1%。使用LSTM时,A区域占比89.523 8%,B区域占比10.476 2%。使用基本RNN,A区域占比78.75%,B区域占比21.25%。使用SVR时,A区域占比64.166 7%,B区域占比35.833 3%。由此可得,GRU的预测效果相较于其他模型更好。

图6 不同模型的克拉克误差分析

5 结 语

在仅针对CGM数据的研究中,大多都是直接利用神经网络构建输入序列与输出序列的对应关系,通过迭代循环确定输入神经元个数。本文首先结合ARIMA的建模思想,利用自回归系数初步确定模型输入序列长度,缩小迭代范围,然后利用具有记忆特性的GRU网络预测未来60 min患者血糖变化。与传统SVR方法相比,GRU方法的预测精度显著增加。与基本RNN和LSTM方法相比,RMSE、MAPE和克拉克误差网格分析结果也表明,GRU的预测精度最高,并且其平均训练时间要低于LSTM,因此是一种比较好的短期血糖预测方法。

猜你喜欢
神经网络误差血糖
基于神经网络的船舶电力系统故障诊断方法
细嚼慢咽,对减肥和控血糖有用么
一吃饺子血糖就飙升,怎么办?
居家监测血糖需要“4注意”
MIV-PSO-BP神经网络用户热负荷预测
北斗导航种萝卜百米误差仅2厘米
基于改进Hopfield神经网络的对地攻击型无人机自主能力评价
基于神经网络的中小学生情感分析
隧道横向贯通误差估算与应用
隧道横向贯通误差估算与应用