APP下载

基于Grafana与循环神经网络的心跳异常检测

2022-05-25李子怡徐怡彤王梅霞张培培

中阿科技论坛(中英文) 2022年5期
关键词:残差阈值神经网络

李子怡 徐怡彤 王梅霞 张培培

(华北理工大学管理学院,河北 唐山 063210)

目前我国居家养老仍处于发展初期,养老设施建设的缓慢滞后在一定程度上阻碍了居家养老模式的推广,因此智能服务仍将是健康养老的发展趋势。针对老年人的智能服务而言,心跳异常检测是极为重要的内容,目前,数据异值检测技术层出不穷,其中包括近年来出现的开源可视化工具Grafana中的阈值检测等,但由于不同人的心跳数据不同,这就导致使用Grafana阈值检测技术来实现异值检测,很难找到一个公有的阈值。

而基于深度学习的RNN(Recurrent Neural Network,RNN)循环神经网络技术是一类以序列数据为输入,在序列的演进方向进行递归并且所有节点按链式连接的神经网络[1],是目前深度学习常用的算法之一,主要应用在语音识别、机器翻译等领域,其良好的时间序列分析能力,为分析时间序列数据提供了良好的技术手段。本文采用pytorch神经网络扩建实现和优化改进RNN模型,并将其应用在医学心跳异常监测领域,基于深度学习的无监督监测,相较于阈值监测而言,其检测模式避免了统计监测的缺陷,除了常见的心跳异常外,也可以检测出任何未知的异常。

1 RNN循环神经网络(Recurrent Neural Network,RNN)

神经网络包含输入层、隐藏层、输出层。基础的神经网络只在层与层之间建立了权值连接,而RNN循环神经网络最大的不同之处就是在层之间的神经元之间也建立了权值连接,且在隐藏层根据时序进行定向循环。

RNN可以对序列进行操作,其支持输入一个序列、输出一个序列或者两者都为一个序列。因此,RNN可支持的操作也十分多样化,如图1所示。(a)~(e)五张图中,(a)代表固定输入输出的应用,即一对一模式;(b)代表以序列输出的应用,即一对多模式;(c)代表以序列输入的应用,即多对一模式;(d)代表输入输出均为序列的应用,即多对多模式。而利用RNN完成的异值检测是基于(e)图代表的一种输入输出序列同步的应用形式[2]。

循环神经网络还可用于对序列数据的建模过程,其中的隐藏状态可用于RNN中携带的信息的短期记忆[2],进而对输入的信息进行有效的处理。在最经典的RNN模型中,输入序列的维度与输出序列得到维度是一一对应的,即Xt与Ot是一一对应的,但在实际应用中,这种情况很少出现,比如,在机器翻译领域,将中文“我的英语不好”翻译成英文则是:my English is poor,显然此时输入与输出序列的维度是不一样的,所以后续就出现了图(1)中(b)~(e)所示的输入与输出模型。

其中、分别代表输出层和循环层的激活函数,U代表输入层到隐藏层的权重矩阵,S代表隐藏层的值,b、c表示线性关系的偏置,V代表隐藏层到输出层的权重矩阵,O是最终的输出值,权重矩阵 W代表隐藏层上一次的值St-1作为这一次的输入的权重矩阵。通过激活函数控制输出,层与层之间通过权值连接。RNN循环神经网络在t时刻接收到Xt后,通过公式(1)计算得到隐藏层St。由公式可以看出,循环神经网络区别于传统神经网络的是,每次隐藏层St的值不仅取决于Xt,还取决于St-1。再通过公式(2)计算得到输出值Ot,最终的循环神经网络的表达式就可以由公式(1)和公式(2)合并计算得到,即为公式(3)。标准的RNN循环神经网络是权值共享的,如图1中所示的W、U、V都是完全相同的,且输入层的任一个输入值都只会与其对应的线路建立权值连接,不会连接到其他的神经元。由于激活函数是事先确定好的,那么神经网络模型通过训练学到的东西就蕴含在权值中。每一帧只与相邻的时间节点进行关联,权重矩阵在不同时刻共享参数,即不同时刻的连接权重值相同,同时在模型更新的时候也一起更新[3]。

图1 RNN循环神经网络(Recurrent Neural Network,RNN)结构图

图2为RNN循环神经网络前向传播的展开层,而训练过程是通过RNN循环神经网络的反向传播方式(Back Propagation,BP)实现的,传播过程中每一帧的输出值Ot和预测值之间会产生损失值Lt。反向传播的过程就是将输出端的损失值反向传递的过程,对于需要更新的权重参数,通过计算它们关于损失函数(常见的损失函数有交叉熵函数、平方误差函数等)的梯度,进而运用梯度下降的方法不断迭代,最终更新权重矩阵W、U、V以及偏置c的值。

图2 RNN循环神经网络循环层展开示意图

2 时序心跳数据异常检测(Anomaly detection of time series heartbeat data)

2.1 基于Grafana的阈值检测

Panel heartbeat_c1通 过Grafana中Alertmanager组 件 的Alerting功能实现异常数据告警。如图3所示,当心跳值低于-2时,Grafana将发送告警邮件到用户邮箱。

2.2 基于RNN循环神经网络的异值检测

通过观察图4中出现异常的心跳数据发现,在23:03:20-23:03:25之间的异常数据找不到一个合适的最值用于心跳数据的异值检测,此时,图3中运用到的Grafana中的阈值检测将不再适用,基于此问题,我们结合RNN循环神经网络(Recurrent Neural Network,RNN)模式识别来进行心跳数据的异值检测。

图3 Grafana统计监测异常数据

图4 heartbeat_c2

隐藏层内循环按时间序列展开后如图5所示。将RNN输出的每一帧的预测值Ot与目标值Xt+1通过Multivariate Gaussian Distribution model公式(4)计算得出残差值(Anomoly score),运用RNN循环神经网络检测异值的核心就是监测残差值的变化,为此,我们结合可视化工具Grafana达到可视化残差值的目的。首先在Grafana的dashboard中新建一个panel来图形化Anomoly score,如图6所示,在心跳数据正常时,残差值起伏并不大,一旦心跳数据出现异常时,下一帧的心跳数据(真实值)与通过RNN循环神经网络计算得出的预测值不相等,而由预测值与真实值计算得出的残差值将会表现出很大的起伏,由此,便可以结合Grafana阈值检测的方式来检测残差值的起伏变化,每当残差值高于一定值时,检测为异常心跳数据,并结合其内置的Alerting功能向用户发送告警邮件。

图5 RNN检测异值原理

3 实验过程

训练环境为Windows10操作系统,CPU为Intel(R) Core(TM)i5-1035G1,GPU为NVDIA GeForce MX330,软件环境为Python3.9,InfluxDB-1.7.6。

实验对象约60人,每人约15条心跳数据,共计866条数据作为训练集进行数据模型训练。训练集从样本对象年龄与健康程度两个维度来训练RNN模型,整个实验过程分为数据采集与传输、数据存储、计算残差、数据展示与告警四个阶段。本实验的智能监测终端与云平台间采用 TCP 协议进行通信,传输数据时,TCP server 子模块通过 3 次握手法与智能监测终端建立连接,并开始接收来自智能监测中端发送的十六进制数据包,将数据帧解码后发送至数据交互后端 Data back。

(1)数据采集。首先每0.004 s采集一次心跳数据,再通过物联网口袋机进行数据传输。首先打开对应的程序代码,进行编译,同时进行硬件部分的连接。由于此类传感器需要事先预热,因此在进行测试之前首先需要经过一段时间的预热,等到小灯熄灭之后再进行测试。最终采用HTTP API的格式传输到数据库内进行存储。

(2)数据存储。对于类似于心跳这种持续的数据,我们采用开源分布式时序、事件和指标数据库InfluxDB实现心跳数据的存储。在读入心跳数据后利用InfluxDB的http API功能,将心跳数据实时存入InfuxDB。

(3)计算残差。将老人一天的心跳数据,批量的定期(如以12 h为单位)进行深度学习的异常监测,通过循环神经网络RNN计算出预测值,再通过将预测值与真实值比较生成残差。

(4)数据展示与告警。采用开源可视化工具Grafana进行数据可视化,并利用其内置的告警功能实现发生异常时,生成图片报告并在5 s内发送到医生或家属的邮箱内。

4 实验结果

(1)训练模型。RNN测试模型对于年龄较低、身体素质较为健康的实验对象检测效果较为灵敏,如表1所示。

表1 两个不同维度的训练RNN效果分析

在样本数据与训练轮数不断增加的情况下,数据检测精确度不断增长,检测时间大致呈正态分布,RNN检测时间最终分别趋于1.3s,训练时间大约持续2h左右,如表2所示。

表2 RNN训练轮数与检测效率分析

(2)测试模型。共计约60名实验对象中,每名样本对象进行7次心跳数据检测,作为测试集进行测试。实验从精确率(Percision,P)、召回率(Recall,R)误检率(False alarm,F)和漏检率(Missing alarm,M)四个维度来评估模型测试结果,其计算公式如公式5~8所示,其中TP、TN、FP、FN分别对应正样例、负样例、误报和漏报数量。两个模型精确度如表3所示。共计434条数据中,RNN循环神经网络算法相较于Grafana阙值检测,精确率同比增长11.02%,召回率同比增长7.96%,误检率同比下降7.79%,漏检率同比下降7.96%,检测效果良好。同时通过采用基于深度学习的循环神经网络RNN来实现数据分析模块,可以十分高效地监测出心跳异常,在识别速度上达到了毫秒级别。

表3 两种模型精度比较

5 结语

通过大量的数据训练,采用循环神经网络技术的心跳异常检测实现了不同时段人体心跳信息的监测。通过试验,得出该系统可实现健康信息的实时显示,自动生成阈值,脉搏数、心跳等指标超出阈值报警。通过匹配各时段、不同状态下人体指标的监测与计算,对计算得出的异常信息做出预警和报告,为实现对被监测人生命安全的保障提供及时信息传递,有效地规避了传统的统计监测的弊端,对于其他位置的异常有利于在满足基本生活需求的同时为居家老人提供医疗服务,进而有利于提高居家养老水平。

但标准的 RNN 循环神经网络技术在误差反向传播过程中仍然会出现梯度消失和爆炸的现象,由于其隐含层的神经元的结构简单,使得RNN循环神经网络很难对长时间的信息进行记忆[4],针对此类问题,之后我们将使用其变体模型长短时记忆网络LSTM[5]和门控循环单元网络GRU[6],利用LSTM网络将传统循环神经网络中神经元节点替换为具有长短时记忆能力的单元,并且通过自动学习调整每个时间步“保留”和“遗忘”的上一时间步信息的比例的特点,来解决RNN循环神经网络梯度爆炸和消失的问题,并不断提升其检测速度和精度。

猜你喜欢

残差阈值神经网络
基于残差-注意力和LSTM的心律失常心拍分类方法研究
基于双向GRU与残差拟合的车辆跟驰建模
基于递归模糊神经网络的风电平滑控制策略
土石坝坝体失稳破坏降水阈值的确定方法
采用红细胞沉降率和C-反应蛋白作为假体周围感染的阈值
基于残差学习的自适应无人机目标跟踪算法
神经网络抑制无线通信干扰探究
基于深度卷积的残差三生网络研究与应用
基于神经网络的中小学生情感分析
基于Q-Learning算法和神经网络的飞艇控制