CV Day 8 評估與診斷:top-k、混淆矩陣、信心校準 執行需求:CPU 可跑 。本篇所有範例都在一般筆電的 CPU 上跑得動;包含一個小型 CNN 在 CIFAR-10 子集上的訓練(約 3 分鐘)與完整的 top-k、混淆矩陣、信心校準分析。GPU 會跑得更快,但不是必須。 引言 昨天的內容中,我們把四個訓練技巧一次疊上去,讓模型在同一個資料集上多拿 0.5–1.5 個百分點的 top-1。但訓練結束並不表示工作完成:模型到底學到了什麼?它在哪些類別上特別容易出錯?它給出的信心分數到底可不可信?這些問題需要一套完整的「評估與診斷」方法才能回答。評估不是把測試集丟進模型、印一個正確率就算交差,而是要從多個面向拆解模型的行為,找出下一步該改進的方向。 這一篇要帶你認識影像分類任務的三個核心評估工具: top-k 正確率 看模型在前 k 個預測中是否包含正確答案; 混淆矩陣 把錯誤集中在哪幾對類別之間視覺化; 信心校準 (calibration)則檢查模型給出的機率是否真的反映「預測為對的機率」。我們會用一個在 CIFAR-10 子集上訓練的小型 CNN 走完整流程,並把所有指標畫成圖表與表格,方便你在自己的任務上重現同樣的分析。讀完這篇,你會了解三個指標的數學定義、PyTorch 與 scikit-learn 的對應 API,以及當指標不理想時該從哪個方向改善。 top-k 正確率 top-k 正確率回答一個簡單問題:「模型的預測機率前 k 名中,有沒有包含正確答案?」對 k=1 來說就是我們熟悉的正確率(top-1);對 k=5 來說,只要正確答案出現在預測前五名就算對,這在 ImageNet 這種 1000 類任務上特別常用,因為類別之間本來就有視覺相似性(例如「哈士奇」與「阿拉斯加雪橇犬」),top-1 反而會低估模型的實力。 PyTorch 計算 top-k 不需要額外安裝套件,用 logits.topk(k, dim=1) 一次取得前 k 名的索引,再用 pred.eq(labels.view(-1, 1)).any(dim=1) 比對即可。這個寫法的關鍵在「廣播比對」:把標籤形狀從 (B,) 擴展成 (B, 1) ,再與 (B, k) 的預測做元素相等比較,最後沿著 k 軸取 any,就能一次得到每個樣本是...