王量弘 李馨 陳鈞穎 楊濤 王新康 高潔
房顫是一種常見的心律失常,按發作時間的長短可以分為陣發性房顫、持續性房顫和永久性房顫[1]。 房顫發作期間的心率高達100 ~160 次/min,速度快且不規則[2],可導致心血管系統紊亂。 房顫往往伴隨著嚴重的并發癥,如腦卒中、心肌梗死等,對健康產生極大威脅。
心電圖依靠心臟周圍的人體表面所呈現的電位差來反映心肌活動情況,目前已成為心血管疾病臨床診斷的主要手段之一。 然而,傳統的心電圖診斷工作量大、耗時長。 在房顫的診斷中,醫生主要依賴患者的臨床癥狀與心電信息[3],后者主要包括:①絕對不規則的RR 間期;②P 波消失,出現不規則的f 波,頻率350 ~600 次/min;③當心房周期活動可見時,心房激動周期通常<200 ms。 由此可見,房顫患者的心電圖特征可概括為形態與節律差異,其中節律差異對房顫的診斷更為關鍵。
隨著計算機輔助診斷技術的日益興起,大量房顫自動檢測算法被提出。 有學者基于房顫發作期間伴有明顯的RR 間期不規則現象,通過計算心率變異性和香農熵來檢測房顫[4-6];也有不少學者利用P 波特征、TQ 間期、小波特征來檢測房顫[7-9]。在基于心電圖特征的房顫檢測算法中,節律與形態特征相結合的方式對房顫特征的描述尤為重要。
隨著深度學習技術的發展,深度神經網絡因能夠自動提取特征等優勢而廣泛應用于算法[10-14]。本研究提出了一種基于卷積神經網絡(convolutional neural network, CNN) 和雙向長短期記憶(bidirectional long short-term memory, Bi-LSTM)網絡、可用于房顫分類預測的深度學習框架。 模型可以將輸入的心電數據分類為房顫發生前30 min 內數據、正常竇性心律數據和房顫發生時數據,并輸出相應標簽,因此,可根據輸入的心電信號有效預測30 min 內發生的房顫事件。 算法的總體架構如圖1所示。 模型將Ⅱ導聯和V1導聯數據進行預處理后作為輸入,模型前端加入CNN 用于心電數據重構并提取機器特征。 本研究中,CNN 采用ReLU 激活函數來增加網絡復雜度和增強學習能力,同時在卷積層后使用最大池化層進行特征降維;模型后端則使用了Bi-LSTM 網絡,從正、反兩個時序方向提取深層的房顫特征,并引入注意力機制,調整特征權重和優化預測模型。

圖1 算法的總體架構
本研究使用了長時房顫數據庫、MIT-BIH 房顫數據庫和MIT-BIH 正常竇性心律數據庫,針對不同數據庫的差異進行歸一化處理并濾波,得到滿足本研究模型輸入標準的數據集。 再將數據集中的心電信號數據分割為心搏,進行標準化處理后輸入CNN 模型,在提取心電特征后送入下一層Bi-LSTM網絡,結合注意力機制對輸入的心搏進行分類。
本研究使用的實驗平臺是TensorFlow 開源框架。 該平臺由谷歌公司開發設計,被廣泛應用于機器學習、深度學習的研究任務中。 本研究使用Adam 優化算法進行模型訓練,在一定程度上解決了傳統梯度下降法中的優化問題。
長時房顫數據庫保存了84 例陣發性或持續性房顫患者的長程心電圖記錄,其中每條記錄的時長均控制在24 ~25 h,都包括兩個同步導聯Ⅱ、V1的心電信號。 采樣頻率為128 Hz,數據分辨率為12 位,電壓動態變化范圍為-20 ~20 mV。
MIT-BIH 房顫數據庫中保存了23 條心電記錄,每條記錄的持續時間為10 h,同樣也記錄了兩個同步導聯Ⅱ、V1的心電信號。 采樣頻率為250 Hz,數據分辨率為12 位,電壓的動態變化范圍為- 10 ~10 mV。
MIT-BIH 正常竇性心律數據庫中保存有心律失常實驗室18 位受試者的長程心電圖記錄。 納入該數據庫的受試者無明顯心律失常,其中男5 例,26 ~45 歲;女13 例,20 ~50 歲。 采樣頻率為128 Hz,每條記錄中也包含Ⅱ導聯和V1導聯的數據,記錄時長均為25 h 左右。
根據算法目標將整體數據分割為三種集合:竇性心律心電數據、房顫患者發病前30 min 內心電數據、房顫患者房顫發生時心電數據,分別對應標簽N、N′、AF。 在每個數據庫中,按照以下方式進行目標數據集的提取:①在長時心電數據庫中提取N、N′、AF 標簽;②在MIT-BIH 房顫數據庫中提取AF標簽;③在MIT-BIH 正常竇性心律數據庫中提取N標簽。 三類標簽的心電信號如圖2 所示。對房顫發生前30 min 以上的竇性心律心電數據,本研究不單獨設置標簽。 考慮到需要將這些數據與房顫發生前30 min 內的心電數據加以區分,因此為便于數據處理,將其并入標簽N。

圖2 對應N、N′、AF 三類標簽的心電圖
1.3.1 統一樣本格式 由于不同數據庫的采樣頻率、數據分辨率、濾波程度、標簽類型等諸多因素并不一致,因此通過數據庫截取的數據集不能直接作為輸入數據使用,在使用前需要統一標準。 本研究中將所有數據統一重采樣至128 Hz、分辨率統一至32 位,以便精確計算特征值,在模型中表述為float32。
1.3.2 濾波 心電信號是一種很微弱的低頻信號,采集設備、環境和人體各種生理活動都會對心電圖造成干擾。 原始心電圖中一般包含大量噪聲,而這對那些對噪聲敏感的分類模型來說是致命的,因此需要對原始數據進行濾波處理。 本研究主要考慮解決基線漂移現象和高頻噪聲干擾這兩個對模型影響較大的問題,使用一個一階巴特沃斯帶通濾波器來過濾原始的心電信號。
1.3.3 數據切割 N、N′、AF 三類標簽數據集中均記錄了時長為30 min 的心電數據,對應的數據長度為230 400 個采樣點,這個數量對于模型來說過于龐大。 本研究為了精簡輸入,從三個標簽數據集中分別以7.5 s 連續截取,共裁剪了30 min 時長的數據作為一個獨立的數據集。 為了保證每段數據之間盡可能相對獨立,從每個數據集中僅隨機抽取5段作為輸入集合,剩余部分將被用于數據均衡。
1.3.4 歸一化處理 不同人群的心電信號,其幅值分布可能有較大差異。 在模型的數學計算中,數量級較大的數據往往占據主導地位,導致預測模型對幅值小的心電信號不敏感。 本研究采用Min-Max 歸一化方法對濾波后的心電信號進行標準化。 這種標準化方式統計了樣本中的最大值與最小值,并以兩個最值將整體的分布按比例映射到0 ~1,從而得到新的分布。 對于某個樣本值xi,經標準映射后的xi′可按下式計算:

有許多傳統的機器學習方法通過加入更多的專家特征,實現房顫預測[15-19],但這種特征提取方式需要花費更多的時間成本和醫療資源,臨床應用的時效性差,并不適用于預測短時間內發作的房顫事件。 本研究利用CNN 對原始的多導聯心電序列進行重構,從中提取具有預測意義的機器特征,并使其取代專家特征。
卷積核的大小決定了其感受野的范圍;感受野越大,能感受到的錨點信息越多,獲得的特征效果可能更好,但同時計算量也會倍增,不利于模型深度的增加。 為了盡可能多地保留特征并將其送入下一層LSTM 網絡,本研究將卷積核的最大邊長設置為5,并采用有填充的方式來保存數據的邊緣信息。 第一層卷積,網絡著重考慮在不丟失過多信息的情況下將序列的特征向量表征至更深層次。 第一層卷積在選擇卷積核尺寸時,需要將兩個導聯的數據寬度進行融合,并把維度降至一維,通過增加卷積核數量來提升特征提取能力。 第二層卷積也被用于高維特征的提取,但主要目標是降維,以保證不超過原始心電序列的時序規模。
由于線性不可分問題始終存在,而卷積層并不能解決這個問題,因此,本研究引入了激活函數,用來加強模型的表達能力。 本研究選擇ReLU 作為CNN 層之間的激活函數。 它是一個分段函數:當輸入<0 時,函數值恒為0;當輸入≥0 時,函數值與輸入相等。
池化層也是該網絡的組成部分,主要是用于特征降維,也能在一定程度上防止過擬合。 由于節律變化是模型預測房顫的主要依據,因此,盡可能地保留節律信息是選擇池化方式的關鍵,而最大池化能夠保證最大限度地保留這類信息。 本研究在第一層激活層后加入一層最大池化層,用于壓縮過長的張量長度,并進行特征降維;在第二層激活層輸出后也增加了一個最大池化層,其尺寸根據下一層LSTM 模型的輸入確定。
輸入的Ⅱ導聯和V1導聯數據經過CNN 后,輸出一個合適的張量并將其輸入Bi-LSTM 模型。 本研究將原始數據集的時間作為Bi-LSTM 的輸入時間序列維度;將原始數據集經過CNN 生成的通道維度,作為Bi-LSTM 的輸入特征向量維度;同時,將原始數據集的導聯維度降至1,不作為Bi-LSTM 輸入的某一維度。 考慮到ReLU 函數在LSTM 訓練過程中很容易造成梯度爆炸,而sigmoid 函數的非飽和區間較窄,容易造成梯度消失,本研究中的算法采用tanh 函數作為記憶單元的激活函數。 由于本研究采用的Bi-LSTM 在輸出上有兩層相向的LSTM 層,因此其為原始LSTM 模型輸出的兩倍,相應地,Bi-LSTM 模型輸出張量的長度為批處理大小、寬度為時間序列長度、通道數為隱藏層的單元數量。 關于兩組輸出的結合方式,本研究采用了對應位置取和,將兩組合并為長、寬、通道數均不變的一組特征向量,由此得到了該模塊的輸出維度。
該輸出張量經上述計算后,輸入注意力模型。為了避免前一層加和可能導致的特征值值域分布溢出問題,采用tanh 激活函數對輸入進行非線性轉換。 本研究采用軟注意力機制,通過設定可訓練權重向量W,將其與非線性激活后的張量作矩陣乘法;每個時間序列步中,長度為隱藏層單元個數的特征向量被轉換為權重系數。 權重系數矩陣再通過一個softmax 激活函數作歸一化處理,即可得到標準化的權重系數矩陣α,此時矩陣的長為批處理大小、寬為時間序列長度。 再利用矩陣α對注意力模型的輸入張量進行加權求和,并重新調整尺寸為二維,即可得到注意力系數矩陣。
在注意力模型輸出前,還加入了一層激活層,激活函數選擇tanh 函數。 該層輸出后直接經過一個全連接層,輸出向量直接通過argmax 函數轉換為獨熱編碼類型的向量,以實現對三種房顫相關標簽的預測。
在數據集的劃分上,本研究采用了五折交叉驗證的方式進行整體模型的訓練與測試,其中訓練集占80%,驗證集占20%。 根據訓練方案確定每層的參數,如表1 所示。

表1 卷積神經網絡參數
本研究引入了混淆矩陣,用來具體觀察模型在每一個特定類中的表現,并從混淆矩陣中提取了準確率、精確率、召回率和F1分數這4 個統計指標, 分別記作Acc、P、R和F1,其具體的數學定義如下:
(1) 準確率是指被預測正確的陰性樣本和陽性樣本數量之和占總樣本數量的比例,可按如下公式計算:

(2) 精確率是指所有被預測為陽性且真實標簽也為陽性的樣本數量占預測標簽為陽性的總樣本數量的比例,可按如下公式計算:

(3) 召回率是指所有被預測為陽性且真實標簽也為陽性的樣本數量占真實標簽為陽性的總樣本數量的比例,可按如下公式計算:

(4)F1分數是指綜合了精確率與召回率的一種平衡分數,其數學定義為二者的調和平均數,可按如下公式計算:

其中,TP表示為預測為陽性標簽且實際也為陽性標簽的樣本數量;TN表示預測為陰性標簽且實際也為陰性標簽的樣本數量;FP表示預測為陽性標簽但實際為陰性標簽的樣本數量;FN表示預測為陰性標簽但實際為陽性標簽的樣本數量。
為了確定訓練超參數學習率和批處理的大小,本研究在固定LSTM 隱藏層單元數量為64 的情況下,對比了不同學習率和批處理大小對模型訓練速度的影響。 進行大量實驗后通過觀察準確率曲線的收斂情況,篩選了其中6 個有代表性的模型A—F,通過學習率和批處理大小的組合得出相對較高的準確率(表2)。 由表2 可以發現,學習率與模型的收斂速度呈正相關,但不同的學習率可能會導致不同的收斂情況。 本研究所用數據的驗證集在學習率為0.003 0 附近、批處理大小為64 時達到最佳表現,此時模型預測房顫的準確率為0.90。

表2 學習率和批處理大小對模型訓練速度的影響分析
在統一學習率、批處理大小的情況下,本研究比較了不同的隱藏層單元數量對模型表現的影響。采用不同隱藏層單元數量訓練模型,選出了4 個各項參數表現良好的模型,其訓練過程中所使用的模型參數及性能表現如表3 所示。

表3 不同隱藏層單元數量模型的性能表現對比
從表3 中可知,本研究所提出模型的最高準確率約0.934,精確率約0.930,召回率約0.933,F1分數約0.931。 從訓練的多個模型來看,不同模型均能收斂且表現良好,可以證明所提出的模型魯棒性較強。 N 類被誤分為N′類的情況是當前模型的主要問題。 從醫學角度來看,N′類的精確率較高,有利于從一般人群的心電圖篩查中更準確地識別潛在的房顫患者,這對疾病篩查具有很重要的臨床意義。 為了解決這一問題,我們將在今后的研究中嘗試采用更多的網絡結構,以進一步改進預測效果。
房顫的初步診斷主要依賴心電圖。 利用現有的工程技術,人們已經對心電圖展開了細致而深入的研究,在房顫自動檢測與房顫長短期預測等領域取得了一定的成果。 盡管目前對于房顫自動檢測算法的研究較多,模型應用也十分廣泛,但在房顫的預測上仍然存在諸多挑戰。 首先,當前研究在房顫預測方面過分依賴專家特征,傳統的SVM、K近鄰法等都需要花費大量的醫療資源和人力成本,這是當前研究面臨的瓶頸。 雖然近年來有不少深度學習模型被應用于房顫的預測任務中,但模型預測的準確率與附加的專家特征數量仍然緊密相關。 本研究從已知的公開數據庫出發,提取了Ⅱ導聯和V1導聯數據并重新規劃了數據形式,構建了Bi-LSTM房顫預測模型。 在模型前端的輸入部分,加入了CNN 用于心電數據重構,并提取機器特征;在模型后端,增加了一層注意力模型,用于優化預測模型。本研究提出的算法能夠有效預測房顫發生前30 min內數據、正常竇性心律數據和房顫發生時數據。 該模型性能表現優良,克服了傳統模型對專家特征的依賴,同時保障了較高的準確率,能夠滿足臨床對房顫檢測便捷性、高效性的要求。
本研究提出的模型在以下幾方面有進一步的研究空間:①為了數據的歸一化處理,本研究將多個數據庫的多導聯數據作了最小匹配,僅保留了兩個導聯的數據作為輸入,而近年來12 導聯數據庫逐漸豐富,可以考慮進一步擴展導聯數,以實現更好的預測效果。 ②整體模型尺寸龐大,雖然在實時性上有所改進,但是若要進一步用于臨床實時監護,還需要進一步減少參數數量。