訓練醫學模型的相關挑戰彙總

訓練醫學模型的相關挑戰彙總

在醫學數據集的訓練算法期間面臨的許多問題中,以下三個是最常見:

  1. 類別不均衡
  2. 多任務
  3. 數據集大小
    對於這些問題,本文將分享一些解決的方法。
    類別不均衡挑戰
    在現實世界中,我們看到的健康人遠遠比患病的人要多得多,這也反映了在醫學數據集中,健康和患病類別的樣本數量是不平均。在醫療數據集和信用卡欺詐數據集中,你可能會看到正樣本的數量是負樣本的一百倍。
    所以模型訓練的結果往往被誤認爲是表現出色的,然而實際上卻並非如此。如果使用accuracy_score準確度這樣的簡單度量,就會發生這種情況。準確度對於這類數據集來說不是一個很好的度量標準,因爲標籤嚴重傾斜,所以一個只輸出正常標籤的神經網絡的準確率甚至還能略高於90%。
    解決方案:
    終上所述,我們可以定義更有用的指標,例如F1度量或"精確度/召回率"。精確度定義爲"真正例個數/(真正例個數+假正例個數)",在假正例很多的情況下,這是一個很好的度量;另一方面,召回率定義爲"真正例個數/(真正例個數+假反例個數)",在假反例本很多的情況下,這是一個很好的度量。醫療領域的大多數模型是這種情況,但是我們也經常需要同時考慮假正例個數和假反例個數,這就是F1度量的功能,它在精確度(Precision)和召回率(Recall)之間取得均衡,由公式2 ((PrecisionRecall) / (Precision+Recall))給出。
    處理類不均衡的另一種流行技術是"重採樣",這是從多數類(樣本過多的那一類)中刪除樣本(稱爲欠採樣)或在少數類中添加樣本(稱爲過採樣)來在這兩個類之間取得均衡的行爲。儘管它們可以通過使用複雜的重採樣技術來解決,但它們具有自己的缺點,如信息丟失和過擬合。
    多任務挑戰
    在現實世界中,通常僅預測健康或患病是不夠的,我們經常需要將醫療數據分爲多個類別或標籤,例如,僅從心律中檢測出心律失常並沒有什麼市場,對患者進行分析判斷得到哪種心律失常更有價值,例如病狀可能是房顫,室上性心動過速或任何其他類型。
    從理論上講,可以爲需要分類的每個標籤訓練單獨的神經網絡模型,但是這對於寫代碼來說是非常不切實際的,如果我們可以將所有這些分類模型組合到一個返回多個預測的單個深度神經網絡中,就比較有價值。
    解決方案:
    我們可以使用一種稱爲"多類別分類"或"多標籤分類"的方法來應對這一挑戰。這兩種方法略有不同,在多類別中,數據樣本的類別是互斥的,而在多標籤中,數據樣本可以屬於多個類別。在醫學領域,我們通常使用多標籤分類,因爲如果患者被診斷爲肺不張(肺的膨脹不全),則並不意味着他/她就不會有心臟肥大。我們將模型最後一層的分數再傳遞給Sigmoid激活函數,這會把最後一層的每個分數轉換爲0到1之間的值,而與其他分數無關。
    對於多標籤分類,我們選擇的損失函數變爲binary_crossentropy,其中由於我們使用了Sigmoid激活函數,因此每個標籤都被視爲獨立的伯努利分佈。在需要多類的情況下,可以用損失函數設置爲categorical_crossentropy的softmax激活函數來替換Sigmoid激活函數。
    數據集大小挑戰
    另外一個處理醫學數據集的挑戰爲數據集的大小。大型訓練數據集除了具有良好的體系結構外,還對模型的性能起着重要的作用,但可用於疾病的患者數據數量往往不夠。低數據集大小會導致高偏差和高方差,這些原因導致模型的推廣和優化困難。
    解決方案:
    爲了解決模型優化的困難,我們可以使用一種稱爲"遷移學習"的方法,其中我們使用從相關網絡較低層中學習來訓練較高層,而無需它們從頭開始學習。由於先前的訓練,較低的圖層可以用作良好的特徵提取器,因此我們可以根據數據集對其進行微調,該技術優化速度更快,並減少了訓練新模型所需的數據量。
    爲了解決模型泛化的困難,我們可以使用一種稱爲"數據增強"的技術,將數據提供給模型之前,可以對樣本進行一些隨機轉換,這樣我們可以使模型對於大小或亮度等微小變化保持不變。諸如水平或垂直翻轉圖像,更改圖像的亮度或對比度,將圖像旋轉或縮放到一定程度之類的做法都有助於數據擴充。此技術在小型數據集中避免過度擬合非常有用。
    參考鏈接:https://medium.com/aiformedicine/challenges-of-training-models-on-medical-data-7ecc03db2d65


















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章