李子怡 徐怡彤 王梅霞 張培培
(華北理工大學管理學院,河北 唐山 063210)
目前我國居家養老仍處于發展初期,養老設施建設的緩慢滯后在一定程度上阻礙了居家養老模式的推廣,因此智能服務仍將是健康養老的發展趨勢。針對老年人的智能服務而言,心跳異常檢測是極為重要的內容,目前,數據異值檢測技術層出不窮,其中包括近年來出現的開源可視化工具Grafana中的閾值檢測等,但由于不同人的心跳數據不同,這就導致使用Grafana閾值檢測技術來實現異值檢測,很難找到一個公有的閾值。
而基于深度學習的RNN(Recurrent Neural Network,RNN)循環神經網絡技術是一類以序列數據為輸入,在序列的演進方向進行遞歸并且所有節點按鏈式連接的神經網絡[1],是目前深度學習常用的算法之一,主要應用在語音識別、機器翻譯等領域,其良好的時間序列分析能力,為分析時間序列數據提供了良好的技術手段。本文采用pytorch神經網絡擴建實現和優化改進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循環神經網絡循環層展開示意圖
Panel heartbeat_c1通 過Grafana中Alertmanager組 件 的Alerting功能實現異常數據告警。如圖3所示,當心跳值低于-2時,Grafana將發送告警郵件到用戶郵箱。
通過觀察圖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檢測異值原理
訓練環境為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內發送到醫生或家屬的郵箱內。
(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 兩種模型精度比較
通過大量的數據訓練,采用循環神經網絡技術的心跳異常檢測實現了不同時段人體心跳信息的監測。通過試驗,得出該系統可實現健康信息的實時顯示,自動生成閾值,脈搏數、心跳等指標超出閾值報警。通過匹配各時段、不同狀態下人體指標的監測與計算,對計算得出的異常信息做出預警和報告,為實現對被監測人生命安全的保障提供及時信息傳遞,有效地規避了傳統的統計監測的弊端,對于其他位置的異常有利于在滿足基本生活需求的同時為居家老人提供醫療服務,進而有利于提高居家養老水平。
但標準的 RNN 循環神經網絡技術在誤差反向傳播過程中仍然會出現梯度消失和爆炸的現象,由于其隱含層的神經元的結構簡單,使得RNN循環神經網絡很難對長時間的信息進行記憶[4],針對此類問題,之后我們將使用其變體模型長短時記憶網絡LSTM[5]和門控循環單元網絡GRU[6],利用LSTM網絡將傳統循環神經網絡中神經元節點替換為具有長短時記憶能力的單元,并且通過自動學習調整每個時間步“保留”和“遺忘”的上一時間步信息的比例的特點,來解決RNN循環神經網絡梯度爆炸和消失的問題,并不斷提升其檢測速度和精度。