iT邦幫忙

2021 iThome 鐵人賽

DAY 12
0
AI & Data

然後模型就死在 Jupyter Notebook 了 (ಥ﹏ಥ)系列 第 12

[Day 12] Error analysis — 錯誤中學會成長 (咩噗)

To me, error analysis is the sweet spot for improvement. — Donald A. Norman

前言

實務上,我們常常會發現模型的準確率並不會在所有資料的子集都相同,它可能在某個輸入條件之下更常犯錯,而這樣的情況會導致模型不可靠,讓我們無法信任其決策結果。
雖然現存的模型評估方法存在許多漏洞,但其中最顯而易見的就是使用單個指標來評估模型,畢竟用一個數字就概括整個模型的行為是很偏頗的,而錯誤分析可以讓我們逃離單個準確率指標的窠臼,揭開隱藏在底下的錯誤分布情形,進而提升糾錯、改善模型的效率。
error analysis
*圖片來源:Besmira Nushi — Responsible Machine Learning with Error Analysis

錯誤分析 (Error analysis)

錯誤分析是模型研發的核心流程,如果做的好,它可以告訴你如何最有效率的改善模型表現。
出乎意料的是,目前大部分的錯誤分析都是簡單粗暴的利用試算表手動作業,以語音辨識為例:
error spreadsheet
其分析步驟如下:

  1. 列出數個在驗證集中被預測錯誤的樣本 (包含標籤與預測值)。
  2. 對這些樣本可能擁有的屬性進行假設 (稱為 tag),例如背景有車聲、人聲。
  3. 將預測錯誤的樣本依照上一步的 tag 進行分類 (樣本可同時擁有多種屬性)。
  4. 在過程中可隨時加入新的 tag,例如低頻寬,但要記得回頭檢視先前的樣本是否屬於此類別。

錯誤分析也是迭代的過程,可以不斷增加新的假設並重新分析:
error analysis iteration
這個過程可以幫助我們了解這些假設是否為錯誤的來源,以及是否需要進一步處理。
而不斷想出新的假設並分析更多資料,就是為了找出能最有效提昇模型表現的 tag,例如前面以 HLP 判斷改善背景有車聲的資料最能提昇模型表現。

有些 MLOps 工具有提供錯誤分析功能,讓我們不需要手動分析,例如微軟的 Error Analysis

做完分析之後

為了盡可能把時間花在刀口上,在錯誤分析之後需要評估該改善哪些 tag 以及改善的優先順序,此時可以參考以下指標:

  • 該 tag 在所有錯誤中佔的比例為何?
  • 在所有擁有該 tag 的資料中,錯誤的比例為何?
  • 該 tag 在所有資料中佔的比例為何?
  • 擁有該 tag 的資料的改善空間有多大? (可以用 HLP 衡量)

將上述第 3、4 點指標加入決策的範例如下 (整體準確率改善空間為該類別的改善空間乘上該類別所佔的比例):
consider data portion

進行更深度的分析之後,會發現相較於只考慮 HLP,改善背景有車聲的資料對整體準確率提昇的幫助變小了!

另外還可以考慮下面幾點來找出可以最優先改善的 tag:

  • 可以改善的空間多大。
  • 改善該 tag 準確率的難易度。
  • 改善該 tag 表現的重要程度。

對於該優先改善哪個類別的資料並沒有一定的標準,但考量以上指標是一個不錯的方向。
當決定好要優先改善哪些資料後,可以使用以下方法進行改善:

  • 收集更多資料。
  • 使用資料增強 (Data Augmentation) 得到更多資料。
  • 改善標注的正確性/資料品質。

明天就讓我們來看看對於不同資料的型態可以進行什麼樣的增強以增加資料量吧。
/images/emoticon/emoticon30.gif

參考資料


上一篇
[Day 11] 建立 Baseline — 開啟機器學習專案的第一步
下一篇
[Day 13] 資料增強 — 我全都要.jpg
系列文
然後模型就死在 Jupyter Notebook 了 (ಥ﹏ಥ)30

尚未有邦友留言

立即登入留言