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),需要回頭檢視前三個步驟。  #### 1. 檢查步驟一:訓練資料的匹配性 (Mismatch) * **問題**:訓練資料的性質可能與實際應用的資料不符。 * *案例*:使用「機器學習 2021」的課程(較多數學、講得慢)訓練模型,用來預測「生成式 AI 導論 2025」的課程(較多投影片,講得快)。 * **解決**:更換訓練資料,選擇性質更相近的資料集,以使 Loss 降到合理範圍。 #### 2. 檢查步驟二:函式範圍的局限性 * **問題**:如果模型是線性模型,但數據關係是曲線(如非線性)。 * **解決**:擴大函式範圍,使用更複雜的**類神經網路**(使用 ReLU 等激活函數),這在理論上可以逼近任何函式。 * **特徵工程 (Feature Engineering)**: * 優化輸入特徵,例如將「總字數」替換為「每頁投影片的平均字數」,因為平均字數能更有效描述內容密度。 * 好的特徵選擇可以幫助模型更容易學習,且有助於降低訓練難度。 #### 3. 過度擬合 (Overfitting) * **現象**:訓練 Loss 雖然很低(如 22),但驗證 Loss 卻極高(如 1300)。 * **本質**:函式範圍畫得太大,模型學會了記住訓練資料中的雜訊或特定例外,而非通用的規則。 * **案例**:Lazy 函式能完美記住訓練資料的答案,但在訓練集外一律輸出 0。  * **駕訓班比喻**:在駕訓班學會看「貼紙」來倒車,而不是學會看路況來開車。 * **解決 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(只測試一兩次),以確保最終結果的公正性。  ### IV. 訓練類神經網路的實作細節 * **訓練難度**:類神經網路參數多、Loss Surface 複雜,導致 Optimization 極易失敗。 * 可能卡在 Local Minimum、鞍點 (Saddle Point),或者因為 Gradient 太小而收斂緩慢。 * **Backpropagation**:計算類神經網路梯度的有效率演算法。 * **優化器 (Optimizer)**:除了基本的 GD 外,還有更複雜的參數更新方式(如 Adam)來動態調整 Learning Rate,這能改善訓練效果。 * **初始化 (Initialization)**:參數的初始值也會對複雜模型的訓練結果有影響。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up