---
# System prepended metadata

title: '【生成式人工智慧與機器學習導論2025】05 一堂課搞懂機器學習與深度學習的基本原理 '
tags: [生成式AI]

---

20251118筆記 內容可能有錯誤，請參考原始影片

[李宏毅【生成式人工智慧與機器學習導論2025】](https://www.youtube.com/playlist?list=PLJV_el3uVTsMMGi5kbnKP5DrDHZpTX0jT)

[【生成式人工智慧與機器學習導論2025】第 5 講：一堂課搞懂機器學習與深度學習的基本原理 (案例：老師什麼時候要下課)](https://www.youtube.com/watch?v=Taj1eHmZyWw&list=PLJV_el3uVTsMMGi5kbnKP5DrDHZpTX0jT&index=6)

### 【生成式人工智慧與機器學習導論2025】第 5 講：一堂課搞懂機器學習與深度學習的基本原理 (案例：老師什麼時候要下課) 大綱

**I. 機器學習與深度學習概述**
*   **核心目標**：透過資料找出一個函式 $F$。
*   **案例**：預測課程長度 $Y$ (分鐘)，輸入為投影片 $X$ (頁數)。
*   **任務類型**：輸入一個東西，輸出一個數字，稱為迴歸 (Regression)。

**II. 機器學習的三個基本步驟**
1.  **定義目標**：評估函式 $F$ 的好壞。
    *   **方法**：計算模型預測值與真實值（標準答案）之間的距離或相似度。
    *   **距離量化**：使用損失函式 (Loss/Cost, $L$) 或目標函式 (Objective)。
    *   **案例 Loss**：均方誤差 (Mean Square Error, MSE)。
    *   **訓練資料**：用於定義 Loss 函式的資料。
2.  **畫定函式範圍**：選擇候選函式的集合。
    *   **特徵工程 (Feature)**：將輸入 $X$（如投影片）轉換為數值（如頁數 $X_1$、字數 $X_2$）作為函式輸入。
    *   **模型 (Model)**：人為對問題的理解，即函式的範圍。
    *   **線性迴歸 (Linear Regression)**：最簡單模型， $Y = W_1 X_1 + B$。
    *   **類神經網路 (Neural Network)**：包含許多神經元 (Neuron) 的複雜函式集。
    *   **深度學習**：具有多個隱藏層的類神經網路。
3.  **尋找最佳函式**：在範圍內找到 $L$ 最低的函式。
    *   **優化 (Optimization)**：尋找一組參數 $W^*, B^*$ 使 Loss 最小。
    *   **方法一**：暴力窮舉 (Brute Force)。
    *   **方法二**：梯度下降法 (Gradient Descent)。

**III. 優化挑戰與進階技巧**
*   **梯度下降法**：從隨機點開始，沿著斜率 (Gradient) 下降方向移動。
*   **步長決定**：步長 = Learning Rate $\times$ Gradient。
*   **挑戰**：Learning Rate 選擇（太大學習暴走，太小收斂緩慢）。
*   **小批次梯度下降 (Batch GD)**：使用資料子集（Batch）計算 Loss 並更新參數。
    *   **好處**：加快更新頻率。
    *   **壞處**：更新方向不穩定，產生震盪。
    *   **Epoch**：所有 Batch 看過一次即為一個 Epoch。

**IV. 驗證與泛化**
*   **額外步驟**：驗證 (Validation)。
    *   **目的**：評估模型在未見過資料（Validation Set）上的表現。
*   **過度擬合 (Overfitting)**：訓練集 Loss 低，但驗證集 Loss 暴增。
    *   **原因**：函式範圍太大，模型記住訓練資料的雜訊。
    *   **駕訓班比喻**：記住特定場地的貼紙而非真正駕駛技巧。
*   **解決 Overfitting**：
    *   **改變訓練資料**：確保訓練資料與驗證資料性質相近。
    *   **特徵工程**：引入更具信息量的特徵（如平均字數）。
    *   **提早停止 (Early Stopping)**：當 Validation Loss 開始回升時停止訓練。
*   **測試集洩漏 (Data Leakage/Overfitting on Test Set)**：重複使用測試集會導致模型最終對測試資料過度擬合。

---

### I. 機器學習與深度學習概述

**核心問題**
生成式人工智慧（Generative AI）的基礎是尋找一個函式 $F(x)$，該函式將未完成的句子 $x$ 作為輸入，並輸出下一個 token 的機率分佈。我們過去探討了 $F$ 的內部結構，但沒有說明它如何被找到。透過資料找出一個函式的技術統稱為機器學習。

**例子：預測課程長度 (Regression)**
為了解釋原理，課程採用了一個與語言模型無關的案例：預測李宏毅老師上課的時間長度 $Y$，輸入 $X$ 是一份投影片。

*   **輸入 ($X$)**：一份投影片。
*   **輸出 ($F(x)$)**：一個數字，代表這堂課的長度（單位：分鐘）。
*   **任務類型**：由於輸出是一個數字，這種任務在機器學習中稱為**迴歸 (Regression)**。

**機器學習的三個步驟**
尋找函式 $F$ 的基本流程分為三個步驟：
1.  **定義目標 (Loss Function)**：我要找什麼樣的函式。
2.  **畫定範圍 (Model)**：我現在可以選擇的函式有哪些。
3.  **尋找最佳 (Optimization)**：找一個最好的函式。

### II. 機器學習的三個基本步驟

#### 1. 步驟一：定義目標 (Loss Function)

定義目標即評估一個函式 $F$ 是否為我們想要的。評估方式與評估生成式 AI 能力檢定類似：準備輸入 $X$、模型輸出 $Y$、以及標準答案 $Y_{true}$，計算輸出與標準答案之間的距離或相似度。

*   **訓練資料 (Training Data)**：用於計算 Loss 的資料集，由輸入（如投影片）和真實輸出（如實際課時）組成。
*   **損失函式 (Loss or Cost, $L$)**：如果計算出的數值是越小越好，則稱為 Loss 或 Cost。
*   **目標函式 (Objective)**：如果計算出的數值是越大越好，則稱為 Objective。
*   **均方誤差 (Mean Square Error, MSE)**：在這個例子中，我們計算預測時長與實際時長之間**差值的平方**的平均值。
    $$L(F) = \frac{1}{N} \sum_{i=1}^{N} (Y_{predict}^{(i)} - Y_{true}^{(i)})^2$$
    MSE 的數值越小，代表函式 $F$ 的預測越精準。Loss 函式 $L$ 本身是參數的函式，不同的參數組合會導致不同的 Loss 值。

#### 2. 步驟二：畫定函式範圍 (Model)

我們需要將非數值輸入（如投影片）轉換為數值，這些數值稱為**特徵 (Feature)**。

*   **特徵 (Feature)**：用來表示輸入的數值串。例如：
    *   $X_1$: 投影片頁數。
    *   $X_2$: 投影片總字數。
    *   $X_3$: 標題長度。
*   **線性迴歸模型 (Linear Model)**：基於直覺假設，課程長度 $Y$ 應與投影片頁數 $X_1$ 成正比。
    $$Y = W_1 X_1 + B$$
    $W_1$ 和 $B$ 是模型中未知的數值，稱為**參數 (Parameter)**。
    *   此方程式代表一個**函式的集合 (Function Set)**，其中每個點（$W_1, B$ 的特定數值）都代表一個函式。
    *   人類對問題的理解（例如頁數應與時長正相關）被稱為**模型 (Model)**，它是定出函式範圍的依據。
*   **深度學習模型**：
    *   **目標**：尋求一個更大的函式範圍，甚至包含所有可能的函式。
    *   **組成**：所有曲線都可用分段線性曲線（Piecewise Linear Curve）逼近。
    *   **數學基礎**：分段線性曲線可由一個常數項加上大量的「山坡形狀」函式（如 ReLU）疊加構成。
        $$Y = B + \sum_{i=1}^{H} C_i \max(0, W_{i1} X_1 + B_i)$$
    *   **神經元 (Neuron)**：一個計算步驟 $W X + B$ 再透過激活函數（如 $\max(0, \cdot)$，稱為 **ReLU**）。
    *   **層 (Layer)**：一排神經元的集合。
    *   **深度學習**：具有許多隱藏層 (Hidden Layer) 的類神經網路。

#### 3. 步驟三：尋找最佳函式 (Optimization)

目標是找到一組參數 $W_1^*, B^*$，使得 Loss $L(W_1, B)$ 的值達到最小。這是一個**優化 (Optimization)** 問題。

*   **方法一：暴力窮舉 (Brute Force)**
    *   對於參數較少（例如 $W_1$ 和 $B$ 只有兩個）且範圍可估計的情況，可以窮舉所有可能的參數組合，計算其 Loss，找出 Loss 最低的組合。
    *   在線性迴歸和 MSE 的情況下，這個問題事實上有**公式解 (Close-form solution)**。

*   **方法二：梯度下降法 (Gradient Descent)**
    *   這是一種更通用的方法，適用於複雜的 Loss 和複雜的模型（類神經網路）。
    *   **精神**：隨機找一個起始點 $W^{(0)}$，然後沿著 Loss 曲線下降最陡峭的方向移動。
    *   **方向決定**：透過計算該點的**切線斜率**來決定方向。
    *   **梯度 (Gradient)**：切線斜率的集合（即 Loss 函式對所有參數的偏微分）。
    *   **更新步驟**：新的參數 = 舊參數 - (Learning Rate $\times$ Gradient)。
    *   **Learning Rate (學習率)**：控制更新的步長。Learning Rate 越大，步長越大，學習越快，但可能導致模型「暴走」飛出 Loss Surface。Learning Rate 太小則收斂過慢。
    *   **局部最小值 (Local Minimum)**：梯度下降法可能卡在非全局最佳的點，因為在該點的周圍移動 Loss 都不會變小。

*   **批次梯度下降 (Batch Gradient Descent)**
    *   在資料量海量時，計算完整的 Loss $L$（需要掃過所有資料）耗時巨大。
    *   **Batch**：將所有訓練資料分成小的子集。
    *   **更新**：每看過一個 Batch 的資料，就計算其 Loss $L_{batch}$ 的梯度，並更新一次參數。
    *   **Epoch**：所有 Batch 都看過一次，稱為一個 Epoch。
    *   **批次大小 (Batch Size)**：是一個**超參數 (Hyper Parameter)**，需要手動調整。Batch Size 設為 1 時，稱為隨機梯度下降 (SGD)。
    *   **挑戰**：Batch Size 太小（如 SGD）會導致 Loss 下降不穩定，參數在山谷間劇烈擺盪。

### III. 驗證與泛化 (Validation and Generalization)

在找到最佳函式後，必須進行額外的步驟 $\textbf{+1}$：**驗證 (Validation)**。

*   **目的**：評估模型在未見過的資料上的表現。驗證資料集（Validation Set）通常從訓練資料中抽取出，或使用性質相似但獨立的資料。
*   **驗證結果差的檢視**：如果訓練 Loss 低（如 71），但驗證 Loss 暴增（如 122 或 1143），需要回頭檢視前三個步驟。

![image](https://hackmd.io/_uploads/SJJD6UDxZe.png)


#### 1. 檢查步驟一：訓練資料的匹配性 (Mismatch)
*   **問題**：訓練資料的性質可能與實際應用的資料不符。
    *   *案例*：使用「機器學習 2021」的課程（較多數學、講得慢）訓練模型，用來預測「生成式 AI 導論 2025」的課程（較多投影片，講得快）。
*   **解決**：更換訓練資料，選擇性質更相近的資料集，以使 Loss 降到合理範圍。

#### 2. 檢查步驟二：函式範圍的局限性
*   **問題**：如果模型是線性模型，但數據關係是曲線（如非線性）。
*   **解決**：擴大函式範圍，使用更複雜的**類神經網路**（使用 ReLU 等激活函數），這在理論上可以逼近任何函式。
*   **特徵工程 (Feature Engineering)**：
    *   優化輸入特徵，例如將「總字數」替換為「每頁投影片的平均字數」，因為平均字數能更有效描述內容密度。
    *   好的特徵選擇可以幫助模型更容易學習，且有助於降低訓練難度。

#### 3. 過度擬合 (Overfitting)
*   **現象**：訓練 Loss 雖然很低（如 22），但驗證 Loss 卻極高（如 1300）。
*   **本質**：函式範圍畫得太大，模型學會了記住訓練資料中的雜訊或特定例外，而非通用的規則。
*   **案例**：Lazy 函式能完美記住訓練資料的答案，但在訓練集外一律輸出 0。

![image](https://hackmd.io/_uploads/B18GpIDl-l.png)


*   **駕訓班比喻**：在駕訓班學會看「貼紙」來倒車，而不是學會看路況來開車。
*   **解決 Overfitting**：
    *   **調整範圍**：範圍不能太小（無法包含好函式），也不能太大（導致 Overfitting）。
    *   **提早停止 (Early Stopping)**：在訓練過程中，持續監測 Validation Loss。當 Training Loss 仍在下降，但 Validation Loss 開始反覆上升時，應停止訓練並選取 Validation Loss 最低點的模型。

#### 4. 測試集洩漏與基準測試 (Testing Data Overfitting)
*   **問題**：如果無限次地在 Validation Set 或 Test Set 上進行嘗試和調整模型，最終會導致模型對這些集合過度擬合。
*   **結果**：模型在基準測試 (Benchmark) 上表現極佳（甚至超越人類），但在實際應用中效果不佳。
*   **對策**：機器學習競賽和研究通常將測試資料分成 Public Set（可有限次數測試）和 Private Set（只測試一兩次），以確保最終結果的公正性。

![image](https://hackmd.io/_uploads/B1IY6IDeZe.png)



### IV. 訓練類神經網路的實作細節

*   **訓練難度**：類神經網路參數多、Loss Surface 複雜，導致 Optimization 極易失敗。
    *   可能卡在 Local Minimum、鞍點 (Saddle Point)，或者因為 Gradient 太小而收斂緩慢。
*   **Backpropagation**：計算類神經網路梯度的有效率演算法。
*   **優化器 (Optimizer)**：除了基本的 GD 外，還有更複雜的參數更新方式（如 Adam）來動態調整 Learning Rate，這能改善訓練效果。
*   **初始化 (Initialization)**：參數的初始值也會對複雜模型的訓練結果有影響。

