神經網路導論與實作
這個章節以「從資料觀察到模型比較」作為學習主線,帶領讀者從簡單的手寫數字影像開始,逐步理解傳統機器學習與深度學習在影像分類任務上的差異。

本系列不是從公式開始背起,而是先讓模型真的跑起來。讀者會先觀察圖片資料如何以陣列形式儲存在電腦中,再使用 SVM 建立第一個分類 baseline,接著切換到更接近真實世界的 SVHN 街景門牌數字資料集,觀察傳統機器學習在複雜影像上的限制,最後使用 TensorFlow 建立 Dense DNN 與 CNN 模型。
1. 學習目標
完成本章節後,你將能夠:
- 了解灰階影像與彩色影像在電腦中如何表示。
- 使用資料視覺化觀察手寫數字資料集的特徵。
- 使用 SVM 建立傳統機器學習分類模型。
- 說明為什麼影像資料常需要正規化或標準化。
- 使用 TensorFlow/Keras 建立 Dense DNN 模型。
- 透過神經網路優化技巧改善模型表現。
- 理解 CNN 為什麼是影像辨識任務中的重要模型架構。
- 比較不同模型在不同資料複雜度下的表現。
2. 課程主線
本系列的設計順序如下:
| 章節 | 主題 | 對應 Notebook |
|---|---|---|
| 1 | 圖片資料與手寫數字辨識 | 01_digits_data_visualization.ipynb |
| 2 | SVM 手寫數字分類 baseline | 02_digits_svm_baseline.ipynb |
| 3 | SVHN 真實世界數字影像與 SVM 限制 | 03_svhn_svm_baseline.ipynb |
| 4 | TensorFlow Dense DNN 入門 | 04_svhn_dnn_tensorflow.ipynb |
| 5 | DNN 優化技巧與過擬合 | 05_svhn_dnn_optimization.ipynb |
| 6 | CNN 影像辨識入門 | 06_svhn_cnn_tensorflow.ipynb |
| 7 | 模型比較與學習總結 | 綜合比較 |
3. 為什麼先做 SVM,再做 DNN?
傳統機器學習方法,例如 SVM,對於特徵清楚、資料規模適中的任務仍然非常有用。在簡單的手寫數字資料上,SVM 可以取得相當好的效果。這代表傳統機器學習並不是「過時」的技術,而是適合的任務不同。
但當資料變得更貼近真實世界,例如 SVHN 街景門牌數字,圖片會出現背景、顏色、光線、角度與周圍雜訊。這時候若只把圖片攤平成一長串 raw pixels,再交給傳統機器學習模型,模型很難自動理解局部紋理與空間結構。
深度學習的價值就在這裡:模型不只是在已經整理好的特徵上分類,也能從資料中學出更有用的表示方式。
4. Colab 實作方式
每篇實作文章上方都會附上 Colab badge。點擊後即可在 Google Colab 中開啟 notebook,不需要在本機安裝 TensorFlow 環境。
Note
建議依照章節順序完成實作。前兩份 notebook 使用較簡單的手寫數字資料,重點是建立資料與分類流程的直覺;後四份 notebook 會切換到 SVHN 資料集,觀察模型在真實影像任務中的表現差異。
5. 模型表現總覽
本系列會逐步得到以下觀察:
| 階段 | 模型 | Train Accuracy | Test Accuracy |
|---|---|---|---|
| 簡單手寫數字 | SVM RBF | 高準確率 | 高準確率 |
| SVHN | SVM RBF raw pixels | 0.6947 | 0.5170 |
| SVHN | Simple Dense DNN | 0.7476 | 0.6540 |
| SVHN | Optimized Dense DNN | 0.8501 | 0.6973 |
| SVHN | Small CNN | 0.9814 | 0.9263 |
Info
簡單手寫數字資料集與 SVHN 是不同資料集,不能直接當成公平模型排行。這裡的重點是觀察:當資料從乾淨、簡單走向真實、複雜時,不同模型的能力差異會逐漸浮現。