論文筆記 — 吳恩達 2019 ECG

黃馨平
Jackycsie
Published in
10 min readMar 20, 2019

Cardiologist-level arrhythmia detection and classification in ambulatory electrocardiograms using a deep neural network

在本篇論文前吳恩達在2017年已經發過與ECG相關的paper也是使用CNN架構加以改變,下面連結是他的論文網址,以及我念這篇2017 paper後的想法。

心得: 論文筆記 — AI當醫生了!?

原文: 2017 吳恩達 paper

新文:2019年 新的paper

我們本篇的目標第一是將本篇文章的特色拿出來跟大家聊聊,第二是比較2019與2017年兩篇paper之間的差別?

1. Dataset

在這篇論文中,他共準備了53,877位病人的資料,共91,560份 200HZ 的ECG records,並且切割為training set與testing set,另外這些病人的年紀皆大於18歲。

Training set: 病人共有53,549位病人,共有91,232份ECG records,年齡層介於 53~85歲之間,而女性占的比率約43%。

Testing set: 病人共有328位病人,共有328份ECG records,年齡層介於53 ~87歲之間,女性比佔了38%。

從Dataset的角度可以看出,paper的資料性非常的多樣化,可以在訓練時增加相對應的複雜度,讓model 可以有更好的效果產生,也可以從dataset看出女性在dataset的比例相對較低,可能的原因有很多種,如女生在醫界中,比男生更難收集到資料,那這樣的發展是否也會影響到model在testing 女生時,沒有男生來的精準呢!?

2. Model

在model中,他們使用的是透過ResNET的想法下去改造,ResNET的特色在於可以讓model學習更加複雜的pattern,ResNET是一個瘦長的神經網路,以數學的想法來說,就是得知即將餵入的資訊雖然有pattern,但是可能pattern的相似度很高,需要利用更加複雜的function才能包住它,並且加以判別。

在這篇論文中,共有34層layer,33層的卷積層,1層的Softmax層(在16個residual blocks中,每一個residual blocks有兩個卷積層),以及max pooling來增強它的學習效能(透過subsampling),這就是ResNET的特性,不管是使用BatchNorm或者Relu,都是為了能在攏長的訓練過程中,加強他的學習效率。

Model 所使用的filter是16 或者是 32 * 2的k次方個數量,k的數量從0開始並且每4層加1,以及在每一個residual blocks中進行下採樣的方式;在Dropout中它為了降低over-fitting的風險,把參數設為0.2;在optimizer所使用的是大家用過都說讚的Adam,β 1 = 0.9 and β 2 = 0.999:mini-batch也設為非常有sense的128;learning rate從1 * 10的負3次方,當2次epoch沒有改善時,就在將learning rate乘於0.1,有此可知對自己的model 非常的有信心。

從這個model可以非常明顯的看出,他們是跑了非常多個model,以及透過各種認為合理的方法下去training完成(小窮舉法),他們也有提到當residual blocks超過8個後,效果會非常的明顯,可以得知當複雜度非常高的data,build非常deep的model,是趨勢了。

而在本篇中他們也嘗試使用過LSTM,以及bidirectional recurrence,效果它不是來的非常的好,另外一個重點是訓練的時間非常的久,因此放棄了其他兩種類型的發展。

3. Evaluation

在評估model時,本篇共拿了12種類型的label做比較(10 arrhythmias與sinus rhythm和noise),而數據評比的方式有兩種,一種是 Sequence-level,另一種是Set-level。

  • Sequence-level:每30秒就會有23個輸出(30/1.3s),並且去比對這23個輸出的答案是否正確。
  • Set-level: 將輸出結果與ture label比對,而在set level 中不會有時間錯位的懲罰。

透過AUC與ROC的評判方式則是使用Sensitivity and specificity以及PPV(precision)這三種方式,敏感度跟特異性這種評斷方式在醫療期刊中非常的常拿來使用。

下面有簡單的介紹,方便大家理解。

  • Sensitivity(敏感度, Recall): 有病的人當中真正被驗出有病的百分比,例如100個有病的人90人檢測結果呈陽性即90% sensitivity,10人檢測結果呈陰性稱為10%偽陰性 10% false negative; 識別出來對的,佔全部對的幾%(未識別出也算進來)。TP/(TP+FN)
  • Specificity(特異度): 沒病的人當中真正被驗出沒病的百分比,例如100個沒病的人90人檢測結果呈陰性即90% specificity,10人檢測結果呈陽性稱為10%偽陽性 10% false positive。TN/TN+FP
  • Precision:識別出來,有幾張是對的。 TP/(TP+FP)

在test data中,他們共請了9位心臟學的專家,來進行測試,並且拿訓練好的model與這群專家比賽看誰的評斷比較正確,而標label的人則是找另外6位專家共同標註label,當成gold standard。

下圖是model比較的表格,我們可以看出醫生在Junctional rhythm以及Ventricular tachycardia上,贏了我們的model,雖然都是贏的不多,但可以了解model,還有可以進步的空間,而整體model的sequence-level model 的平均正確率為0.807,Set-level 0.837,醫生的sequence-level為 0.753,set-level為0.780,可以得知model的整體實力真的有機會可以降低醫生未來的誤判率。

另外我們來看一下 confusion matrix 可以得知,我們給model 的目標就是幾近完美,近乎苛求,在sinus rhythm可能是因為波型太過相似,讓這塊連醫生都無法有效的判斷出來。

另外為了驗證model 的可行性,本篇論文還實作了MIT-BIH的data下去training以及testing,training set(n=8,528)以及拿10%的自己的data下去train目的在於希望可以提早收斂,testing set(n=3,658),並且檢驗3種label後,下面為test後的結果圖,他們的驗證方式是使用Sequence-level作驗證的。

看完上面的圖,個人的心得認為或許它有其他可以微調的方式,因為它在paper中也宣稱,它沒有特別調過任何的參數,目標是跟原始的training方式一樣,這方面是值得存疑的,需要去驗證看看而這個實驗最後它的F1 分數為0.83,也相當的不錯,或許是label少,容易認出?

4. 結論

本篇論文雖然將許多參數的細節寫出,但許多內容並未公布,如他們如何解決在set-level 30s中有多比record的算法,以及為什麼取這幾種label做為target;但從大方向來說,可以得知擁有好的資料集是非常重要的,但好處在於它也有提到他們利用MIT-BIH的training set加上10%自己的data可以也做rup w到不錯的結果。

而它有提供測試集剛好是占整體資料的10%,另外我們自己再去抓MIT-BIH的資料即可,測試集資料

論文也提供了github供大家參考。

5. 比較

既然我們在前面有提到,在本篇論文前已經有出過2017年 ECG paper,那我們來比較他們的幾項差異。

  • Dataset:在2017年擁有的病人數接近為30,000,到了2019年共有了53,877人,並且非常詳細的紀錄了男女比例,以及他們選擇資料的標準。
  • model:總體的層數34 層layer,大致上優化的方法也都沒有改變,唯一有變的就是在residual layer中,都少了一個dropout,在2017中個residual layer都有兩個dropout,從此方法的改變可以看出,或許是因為資料變多了,over-fitting沒有那麼嚴重,因此可以少一個dropout,讓training的收斂速度來的更快。
  • label:在2019論文當中,將atrial fibrillation與atrial flutter合併為一個,另外也將2 second-degree AVB與third-degree AVB合併為AVB class,這樣就從2017的14個label,變成2019的12個label。

接下來做的是2017 與 2019 testing set數據比較,左圖是2017年的,右圖是2019年的圖。

從比較圖可以得知,大致上透過上面data、model、label的改進,的確在2019年的paper中,可以看出識別率的確變高了,但是在EAR、IVR、junctional rhythm,可以看出並沒有讓識別率更高,甚至有一些還降低了;另外透過合併後的的兩個label,大幅提高了辨識率;另外有趣的是因為這樣的合併讓心臟病專家,除了AVB以外,並沒有有提升非常多的辨識度。

從上面的數據結果一步步的比較下來,2019 辨識度Set-Level 0.837,2017 辨識度Set-Level 0.809,或許真正提升辨識度的原因不在於data、model、label的改進?還是純粹只是將label合併之後所提升的整體辨識度。

因此我們換個思考方式當2017年的4個label套用成2019的兩個label的數據,我們的model是否會提升,而實計算出來的結果是seq-level是0.8017,set-level是0.7765,因此可以得知model真的是有進步的。

寫完了...

看完大神的兩篇paper以後,可以得知雖然前面的路不容易,但是有機會。

We are the champions...

My friends~

--

--

黃馨平
Jackycsie

閱讀本是尋常事,繁華靜處遇知音