陳小杰+曹國華



摘要:該方法獨創性地在將機器學習用于心率數據挖掘,根據長時間采集的心率大數據建立該用戶的心律狀況評價函數,同時實時進行動態反饋和修正,解決了從采集到的心率大數據中到心律狀況動態函數這一復雜多變量、強耦合、動態實時變化的偽隨機擬合問題。
【關鍵詞】心率 信號處理 機器學習 可穿戴預警系統
1 算法流程
首先給出本產品總的算法流程圖如圖1所示。
在本節中將詳細討論機器學習算法設計。當數據由NRF51822芯片傳給APP時,首先APP需要采集大量的基礎數據,以便刻劃出該用戶的心律狀況圖譜即解算出該用戶的心律狀況函數,然后根據藍牙芯片傳輸的數據對該函數進行實時反饋修正,從而當用戶出現心律異常征兆時,能夠及時給出預警信息。接下來便詳細論述基于機器學習的心律狀況函數以及動態實時反饋修正算法的推導過程。
2 卷積神經網絡的機器學習
在作品難點與創新一節中己詳細論述了心率曲線數據的本質是偽隨機數據,而心率曲線數據和刻劃心律健康狀況指標的心律狀況函數可以看做是一個多變量、強耦合的動態非線性映射。本文采取基于卷積神經網絡的機器學習解決該問題。
假設數據采集頻率為N/S,則在一天之內可以采集的數據為N*60*60*24=86400N個心率數據。假設N為0.5,3天之內即可采集到百萬個數據,可見數據量已經足夠了。為了敘述的方便,將等待被訓練數據個體的長度設為M個,于是原問題簡化為從86400N/M個樣本中訓練出最常見、出現頻率最高的樣本特征,換言之即從86400N/M個樣本中提取出最大特征公約數。當采集到新的心率數據時,即可根據該算法判斷出該心率數據是否在最大特征公約數中,如果在,便說明心律并無異常,當采集到的心率數據樣本偏離太多,即可證明該時問段內心律出現異常,從而給出預警信息。該算法的層級結構如圖2所示。
首先需要對輸入的心率數據樣本進行前處理以去噪和得到更加有用的信息。本產品中所采取的預處理方法如圖3所示。
然后將心率輸入樣本進行CNN機器學習算法的第一步卷積運算。卷積運算的本質其實是將輸入數據和濾波矩陣filter進行內積。在CNN中,濾波器filter(帶著一組固定權重的神經元)對局部輸入數據進行卷積計算。每計算完一個數據窗口內的局部數據后,數據窗口不斷平移滑動,直到計算完所有數據。這個過程中,有如下參數:
(1)深度depth:神經元個數,決定輸出的depth厚度。同時代表濾波器個數:
(2)步長stride:決定滑動多少步可以到邊緣:
(3)填充值zero-padding:在外圍邊緣補充若干圈O,方便從初始位置以步長為單位可以剛好滑倒末尾位置,通俗地講就是為了總長能被步長整除。圖4便是其運算原理圖。
設輸入心率樣本數據為[a b;c d],設置的濾波器組為[d e;fg],則輸出為:
[yl y2;y3 y4]
其中:yl=ad+be+cf+dg
y2=bd+df;
y3=cd+de;
y4=dd;
當數據經過卷積層便進入激勵層。本激勵層選用sigmoid函數,其功能是相當于把一個實數壓縮至O到1之問。當z是非常大的正數時,g(z)會趨近于1,而z是非常大的負數時,則g(z)會趨近于O。這樣一來便可以把激活函數看作一種“分類的概率”,比如激活函數的輸出為0.9的話便可以解釋為90%的概率為正樣本。
最后將這些數據經過池化層,本池化層采取求最大值的方式。然后將該數據進行復合輸出。整個流程已經走完,剩下的便是讓所有樣本心率數據進行迭代。建立該網絡神經元,當下一個樣本數據來臨時,便可給出其輸出值,根據輸出值即可判斷該樣本心率數據是否屬于該用戶該段時問內正常的心律范圍內。endprint