iT邦幫忙

2026 iThome 鐵人賽

DAY 29
0
AI Engineering

從 Pixel 到 AI:30 天影像辨識入門之路系列 第 29 篇

Day29 到底怎麼調模型?從 Baseline 到最佳模型的完整調校實戰

  • 分享至 

  • xImage
  •  

從 Day15 第一次建立 CNN Baseline Model,到昨天使用 MobileNetV2 進行 Transfer Learning,我們已經嘗試了不少改善模型的方法。

一開始,我以為調整模型就是改變 Learning Rate、Batch Size,或是增加 CNN 的 Layer。

但經過前面幾天的實驗後,我發現一個問題:

當模型表現不理想時,到底應該先調整哪個地方?

所以今天不急著建立新的模型,而是整理前面做過的實驗,看看不同調整方法分別解決什麼問題,以及如何有系統地改善模型。


一、先從 Baseline Model 開始

在 Day15,我們第一次建立完整的 CNN,使用兩層 Conv2D 和 MaxPooling2D 進行 HAM10000 七類皮膚病灶分類。

當時的 Test Accuracy 約為 73.49%。

Baseline 的目的並不是一開始就追求最高的 Accuracy,而是先建立一個可以比較的起點。

有了 Baseline,後續每次修改模型時,才有辦法觀察調整前後的差異。


二、模型調校到底在調什麼?

回顧前面的實驗,其實我們調整的內容可以分成幾個方向:

調整項目 主要想解決的問題
Epoch / Early Stopping 模型應該訓練多久?
Batch Size 每次使用多少資料更新模型?
Learning Rate Weight 每次應該調整多少?
Optimizer 使用什麼方法更新 Weight?
Data Augmentation 如何增加訓練圖片的變化?
Dropout 如何降低 Overfitting?
CNN Architecture 增加 Layer 是否能學到更複雜的特徵?
Transfer Learning 能否利用已經學過的影像特徵?

這些方法雖然都可能影響模型表現,但它們處理的問題並不完全相同。

因此,模型調校不應該只是隨機修改參數,而是先觀察模型遇到什麼問題,再決定要嘗試哪種方法。


三、先觀察 Training 和 Validation

如果模型的表現不理想,我們可以先觀察 Training Loss 和 Validation Loss。

例如:

情況一:Training Loss 和 Validation Loss 都很高

代表模型可能還沒有充分學習資料中的特徵。

這時可以考慮檢查 Learning Rate、訓練時間或模型架構。

情況二:Training Loss 很低,但 Validation Loss 很高

代表模型可能出現 Overfitting。

這時可以考慮 Data Augmentation、Dropout 或 Early Stopping。

情況三:整體 Accuracy 不錯,但某些類別辨識很差

這是我們在 Day25 的 Confusion Matrix 中實際看到的問題。

例如模型對 nv 的辨識能力很好,但經常將 mel 預測成 nv。

這時只繼續追求更高的 Accuracy,可能無法真正解決問題,還需要進一步觀察 Class Imbalance 和各類別的預測結果。


四、回顧前面的調校實驗

接下來整理幾個已經完成的實驗結果。

實驗 比較內容 觀察結果
Learning Rate 0.0001、0.001、0.01 0.001 的 Test Accuracy 最高
Optimizer Adam、SGD Adam 在當次設定下表現較好
Data Augmentation 有/無 Augmentation 加入後 Test Accuracy 小幅提升
Dropout 有/無 Dropout 加入後 Test Loss 降低
CNN Architecture 2-Layer、3-Layer 3-Layer 的 Accuracy 略高
Transfer Learning CNN、Feature Extraction、Fine-tuning Fine-tuning 後的 MobileNetV2 表現最好

從這些實驗可以看到,不同方法帶來的改善程度並不相同。

有些調整可以改善 Accuracy,有些主要改變訓練過程,也有些方法在特定設定下反而讓模型表現下降。

因此:

調整模型時,不能預設某個方法一定有效,而是需要實際比較。


五、整理模型的 Test Accuracy

以下整理前面部分實驗的結果:

實驗 模型/設定 Test Accuracy
Day15 Baseline CNN 73.49%
Day21 Learning Rate = 0.001 74.97%
Day22 Adam Optimizer 74.30%
Day23 With Data Augmentation 74.97%
Day24 With Dropout 74.03%
Day27 3-Layer CNN 74.97%
Day28 MobileNetV2 Feature Extraction 77.58%
Day28 MobileNetV2 Fine-tuning 78.58%

要注意,這些數字來自不同天的實驗,雖然使用相同的 HAM10000 Dataset,但各次模型訓練可能受到隨機初始化、訓練設定及實驗條件影響。

因此這張表主要是回顧各次實驗的結果,不能直接認為每一項改善都可以累加。

例如,不能把 Data Augmentation、Dropout 和 Transfer Learning 的 Accuracy 提升幅度直接相加,就當成最終模型的表現。


六、如果重新調整一次模型,我會怎麼做?

經過這幾天的實驗後,我會把模型調校整理成以下流程:

建立 Baseline
↓
觀察 Training / Validation Loss
↓
檢查 Accuracy、Recall、Confusion Matrix
↓
找出主要問題
↓
選擇一項調整方法
↓
重新訓練並比較 Validation 結果
↓
保留有效的設定
↓
繼續下一項實驗
↓
選定模型後進行最終 Test 評估

例如:

如果模型出現 Overfitting,就可以先嘗試 Dropout 或 Data Augmentation。

如果 Training 和 Validation 的 Loss 都不理想,可以檢查 Learning Rate 或模型架構。

如果某些類別的辨識能力特別差,就需要進一步觀察錯誤案例,思考是否與 Class Imbalance 或影像特徵有關。

這樣每一次修改都有明確的目的,而不是只靠猜測調整模型。


七、目前哪個模型表現最好?

從這次系列的實驗結果來看,MobileNetV2 經過 Fine-tuning 後,得到目前最高的 Test Accuracy:

78.58%

相較於 Day15 的 Baseline CNN 約 73.49%,提高了約 5.09 個百分點。

不過,這不代表模型已經達到可以實際應用於醫療診斷的程度。

前面的 Confusion Matrix 已經提醒我們,整體 Accuracy 不能代表所有類別的辨識能力。

因此,即使模型整體表現提升,仍需要檢查各類別的 Recall、錯誤案例及模型的泛化能力。


Day29 小結

今天沒有再建立新的模型,而是回顧從 Baseline 到 Transfer Learning 的調校過程。

這幾天最大的收穫是,模型調校不是單純增加 Layer、調高 Learning Rate,或是加入越多方法越好。

更重要的是:

先找出模型的問題,再選擇合適的方法,透過實驗確認是否真的改善。

目前 MobileNetV2 Fine-tuning 在我們的實驗中取得最高的 Test Accuracy,但仍然有進一步改善的空間。

下一篇就是這次 30 天系列的最後一天,我們將回顧從最初認識 Pixel、RGB、CNN,到最後完成皮膚病灶分類模型的整個學習過程。


上一篇
Day28 不用每次從零開始!Transfer Learning 能打贏自己的 CNN 嗎?
下一篇
Day30 30 天後,我真的更懂 AI 了嗎?從「會跑模型」到「會分析模型」
系列文
從 Pixel 到 AI:30 天影像辨識入門之路 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言