在訓練完一個 CNN 之後,我們當然要知道它「學得好不好」,這就是評估 (Evaluation) 的重要性。
評估 CNN 就像是給學生期末考,看看他們學到了多少。我們通常會用一套從未在訓練中出現過的「測試資料」(Test Data) 來評估模型,這樣才能客觀地看出它在新資料上的表現。
以下是幾個評估 CNN 常常會用到的指標和方法:1. 準確率 (Accuracy)
* 定義: 這是最直觀、也最常被提及的指標。它計算的是模型預測正確的樣本數量占總樣本數量的比例。
* 計算方式:
\text{Accuracy} = \frac{\text{正確預測的數量}}{\text{所有預測的數量}}
* 比喻: 班上 100 個學生,有 90 個學生考試及格,那及格率就是 90%。
* 優點: 簡單易懂,直接反映模型整體表現。
* 缺點: 在某些情況下,單看準確率可能會產生誤導。例如,如果我們要辨識一張圖片是不是「腫瘤」,而絕大部分的圖片都是健康的(非腫瘤),只有極少數是腫瘤。即使模型很懶惰,把所有圖片都判斷為「非腫瘤」,它的準確率可能還是很高(例如 99%),但它卻完全無法辨識出真正的腫瘤,這顯然不是我們想要的結果。
2. 混淆矩陣 (Confusion Matrix)
* 定義: 混淆矩陣是一個表格,它能詳細地展示模型在每個類別上的預測結果,包括哪些預測正確,哪些預測錯誤,以及錯在哪裡。
* 比喻: 考試後,老師會列出一個清單,上面寫著:
* 考 100 分的有幾個人
* 考 90 分的有幾個人
* 原本以為會及格但不及格的有幾個人(粗心)
* 原本以為會不及格但及格了的有幾個人(進步)
* 構成要素:
* 真陽性 (True Positive, TP): 實際是正例,預測也是正例。(例如:實際是貓,預測也是貓)
* 真陰性 (True Negative, TN): 實際是負例,預測也是負例。(例如:實際是狗,預測也是狗)
* 假陽性 (False Positive, FP): 實際是負例,預測卻是正例。(例如:實際是狗,卻預測成貓,也稱為「誤報」或 Type I error)
* 假陰性 (False Negative, FN): 實際是正例,預測卻是負例。(例如:實際是貓,卻預測成狗,也稱為「漏報」或 Type II error)
通常會呈現像這樣的表格(以二分類為例):
| | 預測為正例 | 預測為負例 |
|---|---|---|
| 實際是正例 | TP | FN |
| 實際是負例 | FP | TN |
* 優點: 提供比準確率更豐富的資訊,幫助我們了解模型在不同類別上的表現偏好,以及它犯了哪些錯誤。
3. 精準率 (Precision) 與 召回率 (Recall) / F1 分數 (F1-Score)
當類別分佈不平衡時(例如上面提到的腫瘤辨識案例),單看準確率是不足的。這時,精準率、召回率和 F1 分數就顯得非常重要。
* 精準率 (Precision):
* 定義: 在所有被模型預測為正例的樣本中,有多少是真的正例。它衡量的是模型「預測為正例的準確性」。
* 計算方式:
\text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}}
* 比喻: 班上考試,老師說「及格」的學生,裡面真的有幾位是及格的。如果老師隨便說,裡面很多其實不及格,那精準率就低。
* 應用場景: 當我們不希望有太多「誤報」時,會更看重精準率。例如,垃圾郵件過濾:如果郵件過濾器把正常信件判斷成垃圾郵件(FP),使用者會很不滿意。
* 召回率 (Recall) / 敏感度 (Sensitivity):
* 定義: 在所有實際為正例的樣本中,有多少被模型正確地預測出來。它衡量的是模型「找到所有正例的能力」。
* 計算方式:
\text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}}
* 比喻: 班上真正及格的學生,老師有幾位是真的把他們點出來說「及格」的。如果老師漏掉很多及格的學生沒點到,那召回率就低。
* 應用場景: 當我們不希望有太多「漏報」時,會更看重召回率。例如,醫療診斷(如腫瘤檢測):如果模型漏掉了真正的腫瘤(FN),後果可能很嚴重。
* F1 分數 (F1-Score):
* 定義: 它是精準率和召回率的調和平均值,綜合考慮了兩者的表現。當精準率和召回率都很高時,F1 分數才會高。
* 計算方式:
F1 = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}
* 比喻: 就像一個學生,他不僅要答對,還要確保他沒有隨便亂猜(精準率高),而且沒有漏掉任何一個他本該知道的答案(召回率高),F1 分數就是一個綜合評價。
* 應用場景: 當我們需要同時兼顧精準率和召回率時,F1 分數是一個很好的綜合指標。
4. ROC 曲線 (Receiver Operating Characteristic Curve) 與 AUC (Area Under the Curve)
* 定義: ROC 曲線以「真陽性率 (True Positive Rate, TPR,就是召回率)」為 Y 軸,以「假陽性率 (False Positive Rate, FPR)」為 X 軸繪製而成。曲線下方的面積就是 AUC。
* 目的: 用來評估分類模型在不同分類閾值下的表現,特別適合處理不平衡資料集。
* 優點:
* 不受類別不平衡的影響:ROC 曲線和 AUC 對於不平衡的數據集來說是更可靠的評估指標。
* 展示權衡:它能展示在不同閾值下,真陽性率和假陽性率之間的權衡關係。
* AUC 解讀: AUC 的值介於 0 到 1 之間。
* AUC 越接近 1,表示模型的分類能力越好。
* AUC 接近 0.5,表示模型的分類能力接近隨機猜測。
教學活動建議:
在課堂上,您可以這樣引入評估的概念:
* 「AI 醫生」遊戲:
* 準備一些有「病症」(例如:紅點、裂痕)和「健康」的圖片。
* 讓學生扮演「AI 醫生」,讓他們判斷圖片是「有病」還是「健康」。
* 然後揭示正確答案,一起統計:
* 「診斷正確」的比例(準確率)
* 「沒病診斷成有病」的數量(假陽性)
* 「有病卻沒診斷出來」的數量(假陰性)
* 生活案例討論:
* 銀行詐騙電話識別系統: 如果一個系統把正常的電話判斷成詐騙(FP),會怎麼樣。如果漏掉真正的詐騙電話(FN),又會怎麼樣,這時候是精準率重要還是召回率重要。
* 人臉辨識門禁: 如果把不是員工的人判斷成員工(FP),或把員工判斷成不是員工(FN),哪個後果比較嚴重。