
📚 本文為筆者準備期末考時所撰寫之課堂筆記,內容整理自「國立成功大學電機工程學系 — 人工智慧晶片設計與應用」課程之第一講(Lecture 1: Overview of DNN),並加以補充說明。亦歡迎其他正在修習或有興趣瞭解 AI 與深度學習架構的讀者參考使用。
機器學習:從經驗中成長
Mitchell 在 1997 年經典地定義了機器學習:
「如果一個程式可以透過不斷的經驗 (E),在特定的任務 (T) 上表現 (P) 越來越好,我們便稱它具備機器學習的能力。」
這不僅適用於 AI,也像是人類終其一生的學習歷程。我們如何幫助 AI 持續從經驗中進步?本文將從基礎開始,深入探討各種機器學習方法以及我自己的觀察與心得。
一、從簡單的線性回歸出發
線性回歸(Linear Regression)是機器學習最基礎的方法之一。以一個實際例子說明:
假設我們的任務(Task T)是:透過 MRI 影像預測一個人神經疾病的嚴重程度。首先,將 MRI 影像轉為一組數值向量,例如:
[0.1516516, 16516.51, ..., 15.5484984]
然後透過線性模型預測疾病嚴重程度(0 到 100 分):
y = wTx + b
模型透過計算預測值 y
與真實值 t
的差距,並以 平均平方誤差 (MSE) 來作為訓練目標:

以下圖為例(此處假設資料點數量 m=20):

線性回歸雖然簡單,但它將原本複雜的 AI 問題,透過線性代數轉化為可處理的數學問題。
二、如何讓模型有效地從資料中學習?
在機器學習的世界裡,僅靠一兩筆資料遠不足以幫助模型理解真實世界複雜的規律。我們需要的是一個足夠大的資料集 (Dataset),讓模型從大量資料中歸納出一般化的規律與模式。
一個完整的資料集通常會分成三個部分:
- 訓練集(Training Set,約 60–80%)
訓練集是模型實際用來學習規律的資料。你可以想像它像學生平常練習的習題,透過反覆訓練,模型會逐步學到如何從輸入預測輸出。 - 驗證集(Validation Set,約 10–20%)
驗證集的目的是調整並選擇最佳的模型參數,例如學習率、正則化係數或模型結構等。透過驗證集,我們能及早發現並避免模型的過度學習(Overfitting)。可以把它比喻成學生在大考之前做的模擬考,讓我們能提早發現問題並進行修正。 - 測試集(Test Set,約 10–20%)
測試集則是用來最終評估模型的泛化能力。模型從來沒有見過測試集內的資料,因此測試結果是真正的實力檢測。可以理解為正式考試,用來評估學生是否真正掌握所學的知識。
透過這樣的資料分割,我們確保模型的訓練效果不只是停留在表面,而是能真正學習到能泛用於未知資料的規則。
為什麼要分割資料?
我們將資料分割的原因,是要確保模型能真正從資料中學習到「泛化的能力」,而非僅記住特定的訓練資料。這種方法避免了在測試真實數據時,發生嚴重的泛化誤差。
三、三種機器學習的核心方法
1. 監督式學習(Supervised Learning)
資料集內每一筆資料都有標籤,就像學生做習題一樣,有明確的正確答案讓模型參考學習。
2. 非監督式學習(Unsupervised Learning)
資料沒有明確的標籤,模型必須自行從資料中尋找隱藏的模式與分類結構。
好比打開一個混亂的衣櫃,必須依靠自己的判斷將衣服分類:
- 分類衣服 → Clustering
- 衣服特徵(顏色、大小) → 資料特徵
3. 強化學習(Reinforcement Learning)
模型像一個探索迷宮的小孩,必須透過不斷的嘗試錯誤,記住哪些路可走、哪些路不能走,逐步找到最佳路徑:
- 小孩 → Agent
- 迷宮 → 環境
- 每次嘗試 → Action
- 出口或碰壁 → Reward / Penalty
四、評估模型表現:泛化誤差、過擬合與欠擬合問題
當我們訓練機器學習模型時,最重要的目標不只是讓它記住訓練資料,而是希望它能夠從中學習到通用的規律,以便對未來未知資料做出準確預測。然而,模型通常會在從未看過的測試資料上表現較差,這個現象稱為泛化誤差 (Generalization Error)。
泛化誤差的本質,是模型無法完全捕捉真實世界的複雜性,而訓練資料又不可能涵蓋所有可能情境。透過下圖,我們可以清楚觀察到泛化誤差的存在:
上圖中可見,模型在訓練資料上的表現幾乎完美,但在測試資料上卻表現明顯較差。
為什麼會有這種差距呢?這與模型容量(Model Capacity)的概念息息相關。
模型容量(Capacity)與過擬合(Overfitting)
模型容量指的是模型能表達或擬合資料複雜程度的能力。如果模型容量過高(例如模型的參數過多、層數過深),它會試圖完美記住訓練資料的每一個細節,甚至包含一些隨機噪音與無意義的資訊,這就是我們所謂的「過擬合(Overfitting)」。
過擬合的模型在訓練資料上表現得非常完美,但卻在真實環境中的新資料表現不佳,因為它並沒有真正學習到能推廣的規則,而只是記憶了訓練資料。
模型容量過低導致欠擬合(Underfitting)
相反地,若模型容量過低(例如模型結構過於簡單),就無法充分捕捉資料的規律,無論在訓練集或測試集上表現都不理想,這稱作「欠擬合(Underfitting)」。
欠擬合的情況,代表模型沒有學到足夠的特徵或規則,無法準確描述資料中隱藏的關係。
容量與誤差的平衡
因此,我們必須在模型容量與誤差之間取得平衡。模型容量與泛化誤差之間的關係可用以下這張經典的圖表清楚表示:

從圖中可見,隨著模型容量增加,訓練誤差會逐漸下降,但測試誤差則會先下降後上升,產生所謂的「U型曲線」。我們的目標就是找到這個最低點,確保模型既能精準描述資料,又不會過度擬合訓練資料中的雜訊。
如何避免過擬合與欠擬合?
實務上,有幾種常用的方法可以幫助我們調整模型容量,避免這些問題:
- 增加資料量:更多的資料能讓模型學習到更廣泛的規律。
- 正則化(Regularization):透過限制模型參數的大小,避免過擬合。
- 交叉驗證(Cross-validation):透過多次驗證來選擇最佳模型參數。
- 提前終止訓練(Early Stopping):當模型在驗證集上的表現停止改善時,停止訓練,避免過度記憶資料。
透過以上方式,我們便能夠有效控制模型的泛化能力,讓模型真正地學到資料中有意義的規律,而不只是記憶訓練資料的表面特徵。
五、降低過擬合的關鍵:正則化 (Regularization)
當模型容量過大時,最常見的副作用就是過擬合──模型把訓練資料的雜訊也背下來,導致測試集表現變差。
正則化的核心思路,就是在訓練過程「加阻力」,限制模型過度依賴特定特徵。最常用、也最易實作的做法是 L2 Regularization(權重衰減,Weight Decay)。
1. L2 Regularization 如何運作?
在原本的損失函數 Lorig 旁,額外加入所有權重平方和的懲罰項:

- λ:正則化係數,決定懲罰強度
- 權重越大→懲罰越重→模型傾向讓權重變小
- 權重不會被迫歸零,而是被拉回「合理區間」,因此模型傾向平均使用所有特徵,而非過度依賴少數量級特別大的特徵
2. 直觀案例:用「薪水、性別、身高」預測壽命
y = w1(薪水)+w2 (性別)+w3 (身高)
- 薪水通常以「萬元」計,數值動輒上萬
- 性別只是一個 0/1 變數,身高約 100–200
→ 若不加以限制,模型很容易讓 w1w_1w1 主導一切
加入 L2 後,新的損失函數:
當 w1嘗試變得過大時,懲罰項會大幅增加,迫使最佳化器重新分配權重,讓性別和身高也參與預測。結果是模型更平滑、對新資料更穩定。

訓練集準確率雖然較低,但測試集準確率持續提升且 gap 變小,顯示泛化能力更好。
L2 Regularization 透過「權重平方懲罰」讓模型參數不致失控,
既能避免大特徵「壓倒性」主導,也能促使模型學到更平滑、可泛化的決策邊界。
六、從線性走向非線性模型:引入 ReLU 函數
線性模型有明顯的局限性,例如無法解決 XOR 問題:
因此,我們引入非線性的 ReLU 函數,讓模型能學習複雜的非線性關係,提升對真實世界資料的描述能力:

AI 與我們一樣,都在持續學習的路上
機器學習與深度學習的方法看似複雜,但其本質依然是從資料中不斷學習並改進。無論是 AI 還是我們人類自己,學習都是一條無止境的旅程。
希望這篇文章能讓大家更直觀地理解機器學習的核心觀念與演算法,也希望能成為你繼續深入探索 AI 世界的起點與助力!