---
# System prepended metadata

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

---

# 課程目標與範圍
![image](https://hackmd.io/_uploads/H1GOBZBJ-g.png)
* 一堂課搞懂機器學習與深度學習的基本概念，聚焦「如何用資料找出函式 F」
* 不以語言模型為例，改用跨領域範例說明「找函式」的普適性
* 課程分上下兩部分：原理講解與實作練習

# 生成式 AI 中的函式 F 回顧

* F：輸入未完成句子 X，輸出下一個 token
* 過去已剖析 F 的結構與運作，今天重點在「如何從資料中學到 F」

# 用資料找函式＝機器學習

* 機器學習：透過資料尋找能滿足目標的函式
* 同一套方法可應用於語言、影像、時間序列等多種任務

# 範例任務：投影片 → 上課時長（Regression）
![image](https://hackmd.io/_uploads/rydKrWBybg.png)
* 輸入 X：一份投影片
* 輸出 Y：老師實際會講多久（數值）
* 問題型態：輸出為連續數值，屬於回歸（Regression）
* 動機：可預估「什麼時候下課」

# 學習的三步驟（Learning/Training）
![image](https://hackmd.io/_uploads/SJcsH-SyWe.png)
* 步驟一：定義要找的函式好壞標準（目標/評估）
* 步驟二：劃定可選的函式集合（模型/假設空間）
* 步驟三：在集合中找出表現最好的函式

# 第一步：定義目標與評估
![image](https://hackmd.io/_uploads/ByLnH-rybg.png)
* 準備一批「輸入投影片」與其「真實上課時長」
* 將輸入丟給候選函式 F 得到預測，再與正解比較

![image](https://hackmd.io/_uploads/Hy7aBZrybe.png)
* 以距離/相似度的平均作為單一分數（Evaluation Metric）
* 分數越小越好時稱為 Loss/Cost；越大越好可稱為 Objective

# Loss 與 MSE
![image](https://hackmd.io/_uploads/SJ-1IWr1Zl.png)
![image](https://hackmd.io/_uploads/BJmeIZBk-l.png)
* 本課採用 Loss，並以 Mean Squared Error（MSE）為例
* 計算方式：各樣本的（預測−真值）平方後平均
* MSE 小表示預測更精準

# 訓練資料（Training Data）
![image](https://hackmd.io/_uploads/BkaZUZrJZe.png)
* 用於定義與計算 Loss 的資料集合（輸入 X、標籤 Y）
* 訓練資料決定了學習時優化的方向與目標

# 第二步：把輸入變成可用的數字（特徵）
![image](https://hackmd.io/_uploads/SkoMU-ByZe.png)
* 函式輸入必須是數值，需將投影片轉為特徵（Feature）
* 例：頁數 x1、總字數 x2、標題長度 x3、是否包含「learning」x4（0/1）
* 以向量形式表示一份投影片，供模型計算

# 線性回歸示例與參數
![image](https://hackmd.io/_uploads/SJEHU-SJbl.png)
* 假設關係：y = w1·x1 + b（頁數與時長近似成正比，另加固定開場時間 b）
* w1、b 為未知參數（parameters），待由資料學出
* 這個式子對應到「一個函式集合」：每組 w1、b 對應一個函式

# 函式集合的彈性與設計
![image](https://hackmd.io/_uploads/BJZUL-rkWg.png)
* 可擴充為 y = w1·x1 + w2·x2 + b，或加入更複雜交互項
* 人類可依對任務的理解來設計哪些特徵/形式應納入
* 不同設計＝不同搜尋範圍，影響最終可學到的函式

# 模型（Model）的意涵
![image](https://hackmd.io/_uploads/Bkx_LbSy-l.png)

* 常用來指「候選函式的集合（假設空間）」或「學到的單一函式」
* 核心精神：用較簡單的數學結構近似複雜現實
* 將人類對任務的領域知識（domain knowledge）放入第二步的模型設計，有助於學習效果

---

# 步驟三目標：最小化 Loss
![image](https://hackmd.io/_uploads/Sy8bHzH1Ze.png)

* 在既定模型範圍內，找出讓 loss 最小的參數組合
* 已知如何計算 loss 與候選函式集合；任務是選出最低 loss 的函式

# Loss 與記號
![image](https://hackmd.io/_uploads/S1bQrGHkbl.png)

* 資料：第 i 堂課投影片頁數 X1^(i)，真實時長 Y_hat^(i)
* 模型：Y^(i) = W1 * X1^(i) + B
* Loss（MSE）：L = (1/n) * Σ[i=1..n] ( W1*X1^(i) + B − Y_hat^(i) )^2

# Loss 是參數的函式
![image](https://hackmd.io/_uploads/SJGVHMHyWl.png)

* 換不同的 W1、B 會得到不同的 L
* 目標：找到 (W1*, B*) 使 L(W1, B) 最小，也就是 (W1*, B*) = argmin L(W1, B)

# 暴力搜尋與 Loss Surface
![image](https://hackmd.io/_uploads/S1QBSzB1-l.png)
![messageImage_1762104659641](https://hackmd.io/_uploads/ByzDHMrybl.jpg)


* 朴素法：在猜測範圍內枚舉 W1、B，逐點計算 L，取最小
* 視覺化概念：以 W1、B 當平面軸、L 當高度或等高線（loss surface）
* 觀察：W1 對 L 的影響通常比 B 大，兩者之間也會互相影響（等高線呈斜向）

# 線性回歸的特例
![image](https://hackmd.io/_uploads/H1-uSMHkWg.png)

* 線性回歸 + MSE 有公式解（closed-form solution）
* 一般任務的模型或 loss 較複雜，未必有公式解

# 梯度下降（直覺）
![image](https://hackmd.io/_uploads/BySqHzBy-l.png)

* 從任一初始點出發，沿「讓 L 變小」的方向反覆更新
* 可能停在局部極小值（local minimum），未必到達全域極小值（global minimum）

# 斜率、偏微分與梯度
![image](https://hackmd.io/_uploads/Bk7jHfHyWl.png)
![image](https://hackmd.io/_uploads/rkBhHGHJWx.png)

* 方向由「切線斜率」決定；切線斜率就是偏微分：dL/dW1、dL/dB
* 多參數把所有偏微分組成向量 ∇L（gradient）
* 深度學習框架能自動計算梯度（自動微分）

# 參數更新規則
![image](https://hackmd.io/_uploads/r1cpHzBkWe.png)

* 單參數：W ← W − η * dL/dW
* 多參數向量化：Θ ← Θ − η * ∇L(Θ)
* 每次更新稱為一次 iteration/update，重複直到斜率接近 0 或達到停止條件

# Learning Rate（η）

* η 太大：容易跨過谷底、發散、參數爆炸、出現 NaN
* η 太小：在梯度很小區域前進極慢，需要大量步數
* 難同時兼顧速度與穩定性，調參不易

---
# 兩參數情境與梯度
![image](https://hackmd.io/_uploads/Syp0UfSybg.png)

* 參數包含 W1 與 B，起始值以上標 0 表示（W1^(0), B^(0)）
* 在當前點計算偏微分：dL/dW1 與 dL/dB
* 將各偏微分收集成向量稱為梯度（gradient）

# 自動微分與工具

* 深度學習框架（例：PyTorch）可自動計算梯度，無需手算
* 重點在於定義好 Loss 與模型，再呼叫框架取得梯度

# 參數更新規則（純文字）

* W1 ← W1 − η * dL/dW1
* B  ← B  − η * dL/dB
* 每次更新稱為一次 iteration / update；更新後以上標 1、2、3…標記（W1^(1), B^(1) 等）

# 高維向量化觀點
![image](https://hackmd.io/_uploads/B1uxwzrJZg.png)
![image](https://hackmd.io/_uploads/H1CfDfHJ-l.png)

* 將所有參數聚成 Θ（例如語言模型可達數十億維）
* 以梯度向量 G 表示所有偏微分：G = ∇L(Θ)
* 向量化更新：Θ ← Θ − η * G；重複計算梯度與更新


---
# 梯度下降實作示例（兩參數）
![image](https://hackmd.io/_uploads/SkBiPGSyWl.png)

* 參數：W1 與 B；初始設定例：W1=1、B=15
* 在當前點計算梯度 dL/dW1、dL/dB，沿可使 Loss 下降的方向更新
* 學習率 η 決定每次更新步伐大小

# 學習率過大（η 太大）的症狀
![image](https://hackmd.io/_uploads/HJ0TDfH1Zl.png)

* 一步跨過谷底、越界到「地圖外」，參數劇烈震盪
* 容易數值發散，出現 NaN，訓練直接崩潰
* 直觀觀察：一步就從谷左跳到谷右，再下一步失控

# 學習率過小（η 太小）的症狀
![image](https://hackmd.io/_uploads/HJFAwMBJWx.png)

* 下降極慢，在梯度很小區域幾乎不動
* 需大量步數才有可見進展（例：100 步才到谷底、1000 步才剛轉彎）
* 訓練時間長，進展不明顯

# 速度與穩定性的兩難

* 想加快進度提高 η，容易暴走；降低 η 又會極慢
* 實務上難以一次「調到剛好」，需反覆調整

# 低維「開天眼」與高維現實
![image](https://hackmd.io/_uploads/BkjkdMr1bl.png)

* 低維例子可畫 Loss surface，便於判斷「夠低即可停」
* 高維情境無法暴搜與視覺化，只能從 Loss 曲線推斷
* Loss 幾乎不降時，難判斷是局部極小值還是暫時變慢

# 小結：訓練的核心難題

* 學習率設定影響巨大：太大發散，太小停滯
* 沒有通用的固定值，需依任務與資料特性試調




---
# 參數更新太慢的原因
![image](https://hackmd.io/_uploads/Hk7-uGHJZg.png)

* 計算一次整體 Loss 需掃過所有資料，成本高
* 大型任務（如語言模型）資料量龐大，完整計算一次 Loss 不切實際

# 用 Mini-batch/SGD 加速
![image](https://hackmd.io/_uploads/B1szOfSkWx.png)

* 將全部資料 N 切成多個 batch，每個 batch 含 B 筆
* 以單一 batch 算出 L_k，立刻計算梯度並更新參數，再處理下一個 batch
* 不切 batch 稱 Full Batch；batch size = 1 稱 Stochastic Gradient Descent (SGD)

# Epoch 與更新次數
![image](https://hackmd.io/_uploads/By2X_zrJWg.png)

* Epoch：所有 batch 都被用過一次
* 每個 Epoch 的更新次數為 N/B
* 例：N=1000、B=100 → 每個 Epoch 參數更新 10 次

# Batch Size 的利弊
![image](https://hackmd.io/_uploads/HJQrdzSJ-e.png)

* 小 batch：更新頻繁、前進快，但方向噪聲大、路徑擺盪
* 大 batch：方向穩定、單步成本高、前進慢
* Full Batch 與 SGD 是兩極，中間值需折衷

# Shuffle 的必要性
![image](https://hackmd.io/_uploads/rJaBOfBJbg.png)

* 每個 Epoch 重新打亂樣本與 batch 組合
* 降低固定同組的偏差，抽樣分佈更接近全資料

# 線性回歸初次結果（以 ML 2021 訓練）
![image](https://hackmd.io/_uploads/BJZDOfHJZl.png)

* 模型：y = 1.67*x1 + 4.85
* 訓練集 MSE ≈ 240（約 15 分鐘誤差）
* 驗證集（本課 0–4 講）MSE ≈ 1143，高估嚴重，泛化差

---

# 結果回顧（以 ML 2021 訓練）
![image](https://hackmd.io/_uploads/HJgnOfSybl.png)

* 模型：y = 1.67*x1 + 4.85（x1＝頁數，y＝時長/分鐘）
* 訓練集 MSE ≈ 240 → 約 15 分鐘誤差（因為 240 ≈ 15²）
* 視覺觀察：多數點落在趨勢附近，但誤差不小

# 為什麼不能直接拿去測試
![image](https://hackmd.io/_uploads/rJ03uGrJbx.png)

* 正式測試前需要「驗證」（validation），先用未參與訓練的資料檢查泛化
* 比喻：測試＝大考；驗證＝模擬考，錯了可以回頭修正

# 驗證資料與結果（本課 0–4 講）
![image](https://hackmd.io/_uploads/HJApuzH1Zg.png)

* 驗證輸入：本課已上 5 次的投影片頁數（例：27、35、97…）
* 預測輸出：50、63、167（舉例）
* 驗證集 MSE ≈ 1143，遠高於訓練集 → 明顯高估、泛化失敗

---
# 驗證失敗的原因與資料問題
![image](https://hackmd.io/_uploads/SJjR_MH1-g.png)
![image](https://hackmd.io/_uploads/Hk31KfSyZl.png)
![image](https://hackmd.io/_uploads/ByJZKGSk-g.png)
* 將機器學習 2021 的課程資料用來預測「生成式 AI 與機器學習導論 2025」時，結果極差。
* 繪圖後發現藍色（ML 2021）與綠色（2025 導論課）點分布不同。
* 導論課（綠點）在相同投影片頁數下課程時長更短。
* 導論課需更多投影片才能講同樣長度的課。
* 因此，訓練資料（ML 2021）與實際應用場景（導論課）屬性不同，導致 Loss 大幅上升。
* 結論：第一步「目標設定」出錯，因為選錯訓練資料。

# 修正步驟一：更換訓練資料
![messageImage_1762105604972](https://hackmd.io/_uploads/HJVMtMBJbg.jpg)
![image](https://hackmd.io/_uploads/r11XtGHybg.png)
 
* 將訓練資料改為「生成式 AI 導論 2024」課程。
* 該課程性質與「生成式 AI 與機器學習導論 2025」較相近。
* 訓練後模型：y = 0.78x₁ + 12.85
* 意涵：導論課每頁投影片平均講 0.78 分鐘。
* 訓練集 Loss = 71，驗證集 Loss = 122。
* 相比舊模型（訓練 240、驗證 1143），大幅改善。
* 預測誤差約為 11 分鐘，模型更貼近真實。

# 重點觀念

* Validation 必做，用來提早發現泛化問題
* Domain Shift 會讓「在 A 訓練、到 B 使用」失準
* 合適的訓練分佈比單純壓低訓練 Loss 更關鍵

---

# 改進步驟二：擴大函式空間
![image](https://hackmd.io/_uploads/BkwoTGSy-x.png)
![image](https://hackmd.io/_uploads/HJQhTMH1Ze.png)

* 原本模型限制為 y = w₁x₁ + b（線性函式），只能表示直線關係。
* 若真實關係是彎曲的函數，線性模型再怎麼調也逼不近
* 需要擴大候選函式集合

# 想法：用分段線性曲線逼近任意函數
![image](https://hackmd.io/_uploads/SJP6pfByWg.png)
![image](https://hackmd.io/_uploads/BJYaaGS1-e.png)

* 在 x–y 平面上取更多節點，把相鄰節點以直線連接成分段線性（piecewise linear）曲線
* 節點越多，分段線性曲線對原函數的近似越好

# 分段線性 = 常數項 + 多個「山坡函式」
![image](https://hackmd.io/_uploads/SkhCpMB1Wl.png)

* 任何分段線性曲線都可表示為：常數項 + 許多「山坡形」函式的加總
* 每段線段由一個「山坡函式」負責，段與段的轉折點由其轉折位置對應

# 山坡函式可由兩個「折線基底」相減組成
![image](https://hackmd.io/_uploads/ByayCfSJWg.png)

* 山坡形狀 = 兩個只有單一轉折點的「折線基底」的組合
* 折線基底以「過某一門檻後呈線性、未過門檻為 0」的形式表達

# 折線基底的數學型（ReLU 形式）
![image](https://hackmd.io/_uploads/HkrZCGrybx.png)

* 折線函數數學形式為：C × max(0, w₁x₁ + b)。
* 參數意義：w1 控制斜率，b 控制轉折（門檻）位置，c 控制段的高度/權重
* 轉折向上或向下由 c 的正負決定
* 該函式即為常見的 **ReLU（Rectified Linear Unit）**。
* 
# ReLU 函數與神經網路的形成
![image](https://hackmd.io/_uploads/H1BQ0MHkWl.png)

* ReLU：若輸入 < 0 → 輸出 0；若輸入 > 0 → 輸出輸入值。
* 不同的 w₁、b、C 可生成不同形狀的曲線。
* 將多個 ReLU 加總可逼近任何函數：
  y = b + Σ cᵢ × max(0, wᵢx + bᵢ)
* 若使用多個輸入特徵（如 x₁=頁數、x₂=字數），輸入可視為向量。
* 函數可表為：y = cᵀσ(Wx + b)，其中 σ 為 ReLU。


----

# ReLU 基本概念（單一特徵）
![image](https://hackmd.io/_uploads/HyZFAGSyZg.png)

* 形式：a = max(0, w*x1 + b)，輸入 ≤ 0 輸出 0，輸入 > 0 輸出等於輸入
* 名稱：Rectified Linear Unit（ReLU）
* 加權輸出：y = b0 + Σ ci * max(0, wi*x1 + bi)；以多個 ReLU 疊加近似曲線

# 多個 ReLU 範例（H=3）
![image](https://hackmd.io/_uploads/SyraAfryZx.png)

* 三個子函式：a1, a2, a3 各由不同的 w、b 經 ReLU 得到
* 各自乘上 c1, c2, c3 後相加，再加常數 b0，得到最終 y
* H 越大，可描述的分段線性轉折越多，近似能力越強

# 多特徵輸入（x1, x2, …）
![image](https://hackmd.io/_uploads/SJ0ACMSy-x.png)

* 將多個特徵視為向量 x，分別乘上對應權重再加偏置後過 ReLU
* 例：x = [x1, x2]^T，經 Wx + b → ReLU → a，再線性組合為輸出
* Feature 取用需依任務理解進行選擇（feature selection）

# 向量化／矩陣表示

* 一層計算：a = ReLU(Wx + b)
* 輸出層：y = c^T a + b0
* 全流程皆為「矩陣相乘＋向量相加＋逐元素 ReLU」

# 疊層（多層表達力）
![image](https://hackmd.io/_uploads/HkG-kQBkZe.png)

* 可將 a 當新輸入，再做 a' = ReLU(W' a + b')，層層堆疊
* 多層可表達更複雜的分段線性結構與非線性關係

# 命名與結構
![image](https://hackmd.io/_uploads/HyMzJXSk-x.png)

* Neuron（神經元）：線性組合（Wx + b）接 ReLU 的基本單元
* Layer（層）：多個 Neuron 並列構成；輸入層之外稱 Hidden Layer
* Neural Network（類神經網路）：多層 Neuron 組成；Hidden Layer 多即為 Deep Learning

# 為何深度學習更強

* 單一線性模型只能表示直線；多 ReLU 可組出分段線性曲線
* H 越大、層越多，可近似更複雜的函數（理論上神經元無限時可近似任意函數）
* 實務中神經元有限，但相較線性模型，神經網路的函數集合大幅擴張


# 反向傳播（Backpropagation）
![image](https://hackmd.io/_uploads/S14Sy7HyWg.png)

* 是計算神經網路中所有參數梯度的演算法。
* 實質上仍是 Gradient Descent，只是利用鏈式法則高效求梯度。
* 現代深度學習框架（如 PyTorch、TensorFlow）已自動實作。
* 使用者通常無需手動撰寫 Backpropagation。

# 理論與實務

* 理論上，若神經元數量足夠多，神經網路可逼近任何函數（Universal Approximation）。
* 實際上受限於計算與資料，僅能近似。
* 與線性模型相比，神經網路能涵蓋更多非線性函數。
* 訓練過程仍採 Gradient Descent，只是需更高效的梯度計算方式。

---
# Deep Learning 與 Loss 曲線
![image](https://hackmd.io/_uploads/S18JgXSkZe.png)

* 使用具有 Hidden Layer 的 Neural Network（H=100），因參數量龐大只能觀察 Loss 曲線。
* 每次更新參數後記錄訓練 Loss，隨 Epoch 增加 Loss 逐漸下降但趨緩。
* Full-batch 訓練每個 Epoch 更新一次，最終 Training Loss 為 80。
* 理論上 Neural Network 能表達 Linear Model，因此 Loss 不應比線性模型（71）更高。

# Optimization 問題
![image](https://hackmd.io/_uploads/r11xlXSy-g.png)
![image](https://hackmd.io/_uploads/B18-l7Bkbl.png)

* Neural Network 範圍更大卻 Loss 較高，代表優化出問題。
* 可能原因包括 Local Minima、Saddle Point、Gradient 過小。
* 小 Gradient 造成 Loss 下降緩慢，訓練者誤以為已收斂而過早停止。
* Optimization 容易失敗，尤其在 Neural Network 中。

# 透過簡單模型建立基準
![image](https://hackmd.io/_uploads/Skt7xXS1-x.png)

* 建議先用 Linear Model 建立 Loss 基準（如 70）。
* 若更大模型的 Loss 反而高於基準，代表優化問題非模型容量問題。
* 小模型提供參考範圍，協助判斷大模型表現是否合理。

# 改進 Optimization

* 調整 hyperparameter（learning rate、epoch、batch size）。
* 經過多次調整後 Loss 從 80 降到 41，確認 Neural Network 可達更低 Loss。
* 模型學得非線性曲線，能表現頁數與時長的非線性關係。

# Feature 改良
![image](https://hackmd.io/_uploads/SkCrxQBJZe.png)

* 單一 feature（頁數）不足以準確預測課程時長。
* 加入總字數作為第二個 feature 效果有限，因頁數與總字數高度相關。
* 新增「每頁平均字數」作為 feature，Loss 從 41 降到 22，顯著改善。

# Overfitting 現象
![image](https://hackmd.io/_uploads/ByOUlQrJWx.png)
![image](https://hackmd.io/_uploads/HJGdgmHybg.png)
![image](https://hackmd.io/_uploads/H11KxXHJWe.png)

* Training Loss 22，Validation Loss 卻達 1300，出現嚴重 Overfitting。
* 模型在訓練資料上表現極好，但在未見資料上失效。
* 範圍越大越容易 Overfitting，模型可能只記住訓練資料。

# Overfitting 理解與例子

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

* 若模型能表達所有函數，會選出訓練 Loss 為零但無泛化能力的 Lazy 函數。
* Overfitting 意指訓練與驗證差距極大。
* 理論分析詳見機器學習 2022 課程內容。

# Overfitting 與駕訓班比喻
![messageImage_1762107562236](https://hackmd.io/_uploads/HJF3l7HJWx.jpg)


* 訓練過程如駕訓班練車，驗證如正式考試。
* 若依賴貼紙等輔助記號，只能在熟悉場地成功，換場地即失效。
* 對應到模型僅記得訓練樣本而無法泛化。

# Early Stopping
![image](https://hackmd.io/_uploads/r1F0lmrJ-x.png)
![image](https://hackmd.io/_uploads/B1h1-mrJ-l.png)

* 在訓練過程中同時計算 Validation Loss。
* Validation Loss 在約 20 個 Epoch 時最低，之後急劇上升。
* 提早停止訓練可防止 Overfitting，稱為 Early Stopping。

# 過度使用 Validation 的風險
![image](https://hackmd.io/_uploads/r1GWZXr1bx.png)

* 多次在 Validation Set 上調整模型，最終可能 Overfit 在 Validation Set。
* 若無限制地使用 Validation，模型可能僅在驗證資料上表現良好。

# Overfitting 到 Testing Set
![image](https://hackmd.io/_uploads/SkrMZ7Sk-e.png)

* 若不斷使用測試資料進行評估，也可能 Overfit 到 Testing Set。
* 模型最終只在該測試集上表現好，實際應用仍表現差。

# Benchmark 與 Overfitting
![image](https://hackmd.io/_uploads/BkbXZXHJZg.png)

* 長期重複測試導致模型在 Benchmark 上表現異常好。
* 例：2019 年 BERT 在 SQuAD 上超越人類表現，但實際能力不符。
* 因模型能無限調整參數反覆測試，而人類僅測一次。

# Public Set 與 Private Set 設計
![image](https://hackmd.io/_uploads/ryESW7S1Zx.png)

* 為防止 Overfitting，競賽資料分為 Public Set 與 Private Set。
* Public Set 可有限次上傳測試，Private Set 僅有一次機會。
* Public Set 相當於有限次驗證集，Private Set 才代表真實泛化能力。

# 訓練與驗證的循環

* 模型訓練需在三步驟與驗證間不斷往返調整。
* 不斷嘗試不同模型範圍、Hyperparameter、Early Stopping。
* 目標是在 Validation Set 上找到 Loss 也低的函式。

---
# 實作任務說明

* 目標：根據投影片資料（頁數、字數等）預測李宏毅老師上課時間。
* 資料來源：機器學習 2021、生成式 AI 導論 2024、生成式 AI 與機器學習導論 2025。
* 使用 2021 資料作訓練集，2025 資料作驗證集。
* 輸入變數 X_train、X_val，輸出變數 Y_train、Y_val。

# 步驟一：定義 Loss 函式

* 採用 Mean Squared Error（MSE）作為評估指標。
* 公式：Loss = mean((Y_predict − Y_true)²)。
* 當模型預測完全正確時 Loss = 0，隨機預測則會導致 Loss 極大。

# 步驟二：定義模型範圍
![image](https://hackmd.io/_uploads/Sy__-QBkZe.png)

* 使用線性模型 y = W₁x₁ + b。
* 改變 W₁ 與 b 可得到不同函式。
* 使用不同 W₁、b 的組合繪出多條直線，確認函式族為線性集合。

# 步驟三：尋找最佳參數（暴力搜尋）
![messageImage_1762107777992](https://hackmd.io/_uploads/HkW5W7S1-l.jpg)
![messageImage_1762107797768](https://hackmd.io/_uploads/SyVs-QSkWe.jpg)


* 設定 W₁ ∈ [0, 3]、b ∈ [0, 20]，分別取多個點組合暴力搜尋。
* 計算每組參數對應的 Loss，繪出 Error Surface。
* 找出 Loss 最小點：W₁ = 1.67、b = 4.88，Loss ≈ 240。
* 可從 3D 圖與等高線圖觀察峽谷狀 Loss Surface，最低點即最佳解。

# 使用 Gradient Descent 優化

* 初始化參數：W₁=1、b=15。
* 建立 W₁_history、b_history、Loss_history 追蹤訓練過程。
* 設定 hyperparameter：learning rate = 0.0018、epoch = 100。
* 依公式計算梯度：
  ∂Loss/∂W₁ = (2/n) Σ (Y_pred − Y_true)X₁
  ∂Loss/∂b = (2/n) Σ (Y_pred − Y_true)
* 更新參數：
  W₁ ← W₁ − lr × ∂Loss/∂W₁
  b ← b − lr × ∂Loss/∂b。

# 結果與觀察

* Learning rate = 0.01 時數值爆炸，Loss 無限大。
* Learning rate = 0.0001 時訓練穩定，Loss ≈ 263。
* 窮舉法最佳 Loss 為 240，Gradient Descent 接近但未達最佳值。
* 增加 epoch（1 萬次）後 Loss 降至 249，下降速度極慢。
* Learning rate 太小導致收斂慢，太大則發散。
* 結論：Gradient Descent 成功但效率低，下週將改進優化方法。

---
# 實作階段：從線性模型到神經網路

* 目標：根據投影片資料（頁數、字數、平均字數）預測李宏毅老師上課時間。
* 資料來源：ML 2021（訓練）、生成式 AI 導論 2024（替代訓練）、生成式 AI 與機器學習導論 2025（驗證與測試）。

# Batch Size 與訓練流程
![image](https://hackmd.io/_uploads/H1yCZmrJZg.png)

* Gradient 計算時原本對所有資料求和（Full Batch）。
* 若資料量龐大，訓練時間會過長。
* 改為使用 Batch，每看一部分資料就更新一次參數。
* Epoch：完整看完所有資料一次。
* 例：20 筆資料，Batch Size = 5 → 每個 Epoch 有 4 個 Batch。
* 每個 Epoch 前先 Shuffle 資料，確保每個 Batch 組合不同。

# Batch 訓練效果

* Batch Size = 20：等同 Full Batch，僅一次更新，Loss 約 450。
* Batch Size = 5：每 Epoch 更新 4 次，Loss 降到 100 以下。
* Batch Size = 1（SGD）：更新頻繁但方向不穩，路徑「歪歪斜斜」。
* 實務中需平衡更新穩定性與速度，Batch Size 是超參數。

# 模型驗證與資料匹配

* 使用 ML 2021 訓練、2025 驗證時，Validation Loss ≈ 1000，模型失敗。
* 原因：訓練與驗證資料分布不同。
* 改用 2024 資料訓練後，Training Loss = 78，Validation Loss = 350。
* 模型泛化能力改善，但仍未理想。

# 擴充模型輸入

* 原始輸入：頁數（x₁）。
* 新增輸入：總字數（x₂）。
* 模型改為 y = w₁x₁ + w₂x₂ + b。
* 增加輸入後 Loss 從 77 降至 69。

# 特徵工程改良

* 總字數與頁數高度相關，造成梯度比例懸殊、訓練困難。
* 將總字數除以頁數，改用平均字數作為第二個特徵。
* 模型更穩定、Loss 降至 65。
* Validation Loss 從 350 降至 124，預測誤差約 11 分鐘。

# 擴大模型範圍：Neural Network

* 使用兩個輸入特徵（頁數與平均字數）。
* 結構：輸入層 → 隱藏層（100 neurons, ReLU）→ 輸出層。
* 參數：W、B、W'、B' 隨機初始化。
* ReLU 定義：x < 0 → 0；x ≥ 0 → x。
* 預測函式：y = W'·ReLU(Wx + b) + B'。

# 類神經網路訓練

* Learning Rate = 0.0001、Epoch = 10000。
* 使用 Backpropagation 計算梯度。
* 多次訓練結果差異大：Loss 介於 85~200。
* 原因：初始化不同導致收斂至不同區域。
* 類神經網路極度依賴初始參數與優化策略。

# 改用 Adam 優化

* Adam 採動態 Learning Rate，每個參數自動調整步伐。
* 配合適當初始化後，Loss 降至 21。
* 在 Training Set 上收斂良好。

# Validation 與 Early Stopping

* 同時計算 Training Loss 與 Validation Loss。
* Validation Loss 先降後升，在第 23 Epoch 最低（約 11）。
* 提前停止訓練（Early Stopping）以避免 Overfitting。

# 測試階段

* 驗證模型於實際課程表現。
* 今日課程共 84 頁投影片，總字數 3388。
* 真實講課時間：107 分鐘。
* 模型預測結果：**107 分鐘（完全一致）**。
* 結論：模型表現極佳，雖然結果可能有運氣成分，但驗證流程完整。

# 總結

* Batch 訓練提升效率與泛化能力。
* Feature 選擇影響模型可訓練性。
* Neural Network 能逼近更複雜關係，但需良好初始化與優化方法。
* Validation Loss 是防止 Overfitting 的關鍵監控指標。
* Early Stopping 與 Adam 是實務上常用且有效的技巧。


---
# Terminology
* 機器學習（Machine Learning）：利用資料自動找出函式的技術，用以預測或分類。
* 深度學習（Deep Learning）：以多層神經網路為基礎的機器學習方法，能自動學習特徵。
* 生成式人工智慧（Generative AI）：能根據輸入自動生成文字、影像或音訊的人工智慧系統。
* 函式（Function）：輸入變數後輸出結果的數學映射關係。
* Token（詞元）：自然語言中最小的語意單位，如字、詞或符號。
* 語言模型（Language Model）：根據前文預測下一個詞元的機器學習模型。
* 輸入（Input）：函式或模型接收的資料或特徵。
* 輸出（Output）：模型根據輸入所產生的結果。
* 參數（Parameter）：模型中可調整的數值，用於描述函式行為。
* 訓練（Training）：透過資料調整模型參數以最小化誤差的過程。
* 評估（Evaluation）：測量模型表現好壞的過程。
* 損失函數（Loss Function）：衡量預測與真實答案差距的函式。
* 目標函數（Objective Function）：學習過程中要最大化或最小化的數值函式。
* 回歸（Regression）：輸出為連續數值的預測任務。
* 分類（Classification）：輸出為離散類別的預測任務。
* 均方誤差（Mean Squared Error, MSE）：預測值與真實值差距平方的平均，用於回歸。
* 評估指標（Evaluation Metric）：用以量化模型表現的數值指標。
* 訓練資料（Training Data）：用於訓練模型的已知輸入與輸出資料。
* 驗證資料（Validation Data）：用於調整模型參數的資料集。
* 測試資料（Test Data）：用於最終評估模型泛化能力的資料。
* 特徵（Feature）：輸入資料的數值化表示，用於模型計算。
* 權重（Weight）：特徵對輸出影響的數值，為模型參數之一。
* 偏差（Bias）：模型中加上的常數項，用於調整整體輸出。
* 線性回歸（Linear Regression）：輸出為輸入線性組合的回歸模型。
* 模型（Model）：表示輸入與輸出關係的數學結構或函式集合。
* 假設空間（Hypothesis Space）：所有可能模型函式的集合。
* 損失最小化（Loss Minimization）：尋找使損失函數最小的參數。
* 代價函數（Cost Function）：與損失函數同義，用於衡量模型誤差。
* 參數估計（Parameter Estimation）：從資料中推算模型參數的過程。
* 優化（Optimization）：透過演算法尋找最佳參數以最小化損失。
* 梯度下降（Gradient Descent）：利用梯度方向更新參數的優化方法。
* 過擬合（Overfitting）：模型過度學習訓練資料，導致泛化能力下降。
* 欠擬合（Underfitting）：模型過於簡單，無法捕捉資料結構。
* 泛化能力（Generalization Ability）：模型對未知資料維持良好表現的能力。
* 特徵工程（Feature Engineering）：設計與選擇有助模型學習的特徵。
* 標籤（Label）：訓練資料中對應輸出的真實值。
* 資料集（Dataset）：包含輸入與輸出樣本的集合。
* 模型訓練流程（Training Pipeline）：從資料處理到模型訓練的完整過程。
* 評估函數（Evaluation Function）：計算模型效能的函式。
* 誤差平方和（Sum of Squared Errors, SSE）：各預測誤差平方的總和。
* 參數空間（Parameter Space）：模型參數所有可能取值的集合。
* 內插（Interpolation）：在訓練資料範圍內預測。
* 外推（Extrapolation）：在訓練資料範圍外預測。
* 非線性模型（Nonlinear Model）：輸入與輸出間關係非線性的模型。
* 正則化（Regularization）：防止過擬合的技術，限制參數大小。
* 超參數（Hyperparameter）：控制模型結構與學習行為的設定值。
* 隨機梯度下降（Stochastic Gradient Descent, SGD）：使用隨機樣本估算梯度的優化方法。
* 目標函式優化（Objective Optimization）：調整模型參數以達最佳目標值的過程。
* 函式擬合（Function Approximation）：以數學函式逼近資料分布的過程。
* 領域知識（Domain Knowledge）：人類對任務特性的先驗理解，用於模型設計。
* 模型假設（Model Assumption）：對資料與輸出關係所做的數學假設。
* 最佳化（Optimization）：尋找讓目標函數達到最小或最大值的參數過程。
* 損失函數（Loss Function）：衡量模型預測與真實值差異的函式。
* 平均平方誤差（Mean Squared Error, MSE）：誤差平方的平均值，用於回歸任務。
* 線性回歸（Linear Regression）：假設輸出為輸入線性組合的模型。
* 參數（Parameter）：決定模型行為的可調整變數。
* 權重（Weight）：模型中乘於輸入特徵的參數。
* 偏差（Bias）：模型輸出中固定加上的常數項。
* 偏微分（Partial Derivative）：函數對某一變數的導數，用以衡量變化率。
* 梯度（Gradient）：所有參數偏微分組成的向量，表示函數變化方向。
* 梯度下降法（Gradient Descent）：根據梯度方向逐步調整參數以最小化損失的演算法。
* 學習率（Learning Rate）：控制每次參數更新步伐大小的超參數。
* 迭代（Iteration）：在訓練過程中每次更新參數的操作。
* 更新步驟（Update Step）：利用梯度與學習率修正參數的過程。
* 全域最小值（Global Minimum）：損失函數在整個參數空間中的最小值。
* 區域最小值（Local Minimum）：在局部區域內損失最低但非全域最小的點。
* 損失曲面（Loss Surface）：以顏色或高度顯示損失隨參數變化的圖像。
* 等高線圖（Contour Plot）：用顏色或曲線表示損失函數等值的二維圖。
* 暴力搜尋（Brute Force Search）：窮舉所有可能參數組合以找出最佳解的方法。
* 封閉形式解（Closed-form Solution）：能以代數公式直接求得的最佳解。
* 向量化參數（Vectorized Parameters）：將所有參數組成一個向量表示。
* 參數空間（Parameter Space）：所有可能參數取值的集合。
* 初始值（Initialization）：訓練開始前隨機設定參數的起始狀態。
* 學習率過大（Overstepping）：步伐過大導致錯過最小值或訓練不穩定。
* 學習率過小（Understepping）：步伐太小導致收斂速度緩慢。
* 收斂（Convergence）：訓練過程中損失不再顯著下降的狀態。
* 發散（Divergence）：因學習率過大導致損失爆炸或數值錯誤。
* NaN（Not a Number）：數值錯誤導致模型無法繼續運算的結果。
* 梯度消失（Vanishing Gradient）：梯度過小導致學習停滯的問題。
* 梯度爆炸（Exploding Gradient）：梯度過大導致參數劇烈變化的問題。
* 偏導數（Partial Derivative Term）：單一參數對損失影響的數值表達。
* 微分（Differentiation）：計算函數變化率的數學操作。
* 自動微分（Automatic Differentiation）：深度學習框架自動計算梯度的技術。
* PyTorch：常用的深度學習框架，支援自動微分與 GPU 加速。
* TensorFlow：Google 開發的深度學習框架，支援分散式訓練。
* 參數更新公式（Parameter Update Rule）：每次根據梯度與學習率修正參數的數學表示。
* 目標函數（Objective Function）：需要最小化或最大化的函數（通常為損失）。
* 模型參數向量（Model Parameter Vector）：所有權重與偏差組成的高維向量。
* 梯度符號（Nabla Symbol, ∇）：表示對所有參數取偏微分的運算符號。
* 梯度向量（Gradient Vector）：由所有偏微分組成的方向向量。
* 更新規則（Update Rule）：描述如何根據梯度調整參數的方程式。
* 收斂條件（Convergence Criterion）：停止訓練的數值或梯度閾值。
* 局部最小陷阱（Local Minima Trap）：模型困在非全域最小點無法繼續下降的現象。
* 平滑曲面（Smooth Surface）：梯度連續變化、便於優化的損失曲面特性。
* 學習速率（Learning Speed）：訓練過程中損失下降的速度。
* 超參數（Hyperparameter）：需手動設定的模型控制參數，如學習率。
* 更新迭代次數（Number of Updates）：訓練過程中執行的總更新步數。
* 調參（Hyperparameter Tuning）：嘗試不同超參數組合以優化訓練表現的過程。
* 模型訓練穩定性（Training Stability）：模型在訓練過程中避免發散的能力。
* 最佳化路徑（Optimization Path）：參數在訓練過程中於參數空間移動的軌跡。
* 學習率衰減（Learning Rate Decay）：隨著訓練逐步減小學習率以穩定收斂的技巧。
* 迷你批次（Mini-batch）：將整個訓練資料集分割成多個小批次以加速運算。
* 批次大小（Batch Size）：每次用於計算梯度的資料樣本數。
* 批次（Batch）：一次訓練中使用的小型資料子集。
* 全批次（Full Batch）：每次訓練都使用整個資料集來計算梯度。
* 隨機梯度下降（Stochastic Gradient Descent, SGD）：每次僅用單筆資料更新參數的梯度下降法。
* 批次梯度下降（Batch Gradient Descent）：使用部分資料（批次）估算梯度的訓練方式。
* 大批次訓練（Large Batch Training）：使用大量資料於每次更新以提高穩定性。
* 小批次訓練（Small Batch Training）：使用少量資料更新以增加更新頻率但波動較大。
* 模型擺盪（Parameter Oscillation）：參數在訓練過程中因梯度不穩定而劇烈變化。
* 訓練穩定性（Training Stability）：模型在更新過程中保持平滑與可控的能力。
* 更新頻率（Update Frequency）：每個 epoch 中參數被更新的次數。
* 資料掃描（Data Pass）：訓練中完整看過所有資料一次的過程。
* Epoch（訓練輪次）：所有訓練資料被模型完整看過一次的單位。
* 訓練週期（Training Cycle）：模型從一輪資料學習到更新的過程。
* 小批次更新（Mini-batch Update）：基於部分資料的梯度更新操作。
* 梯度估計（Gradient Estimation）：利用批次資料近似整體梯度的過程。
* 批次損失（Batch Loss）：在單一批次資料上計算的平均損失。
* 全域損失（Global Loss）：基於所有資料的平均損失。
* 抽樣誤差（Sampling Error）：由於僅取部分資料導致的梯度偏差。
* 擬合穩定性（Fit Stability）：模型在多批次間保持一致性的能力。
* 批次隨機化（Batch Shuffling）：在每個 epoch 重新打亂資料以避免模式重複。
* 資料打亂（Data Shuffle）：隨機排列樣本順序以提升模型泛化性。
* 超參數（Hyperparameter）：需手動設定的訓練控制變數。
* 超參數調整（Hyperparameter Tuning）：調整 learning rate、batch size 等以優化結果。
* 學習率（Learning Rate）：控制每次梯度更新步長的參數。
* 更新步伐（Step Size）：每次參數調整的實際變動量。
* 計算效率（Computational Efficiency）：演算法在資源使用上的效率。
* 計算負擔（Computation Cost）：模型訓練所需的時間與資源開銷。
* 訓練加速（Training Acceleration）：透過批次或硬體優化加快學習過程。
* 震盪現象（Training Oscillation）：模型在最小值附近不穩定震動的現象。
* 隨機性（Stochasticity）：由隨機取樣產生的不確定性特性。
* 泛化誤差（Generalization Error）：模型在未知資料上的預測誤差。
* 驗證資料集（Validation Set）：用於調整模型與檢查過擬合的資料。
* 測試資料集（Test Set）：最終評估模型表現的資料。
* 驗證階段（Validation Phase）：評估訓練中模型性能的步驟。
* 驗證誤差（Validation Loss）：模型在驗證資料上的損失值。
* 模型驗證（Model Validation）：透過驗證資料檢查模型泛化能力的過程。
* 評估指標（Evaluation Metric）：用於衡量模型表現的量化標準。
* 均方誤差（Mean Squared Error, MSE）：預測與真值差的平方平均。
* 模型高估（Overestimation）：模型預測值系統性偏高的現象。
* 模型低估（Underestimation）：模型預測值系統性偏低的現象。
* 訓練誤差（Training Loss）：模型在訓練資料上的平均損失。
* 模型誤差分析（Error Analysis）：檢查模型預測錯誤來源的過程。
* 模型泛化（Model Generalization）：模型適用於新資料的能力。
* 模擬考（Mock Evaluation）：以驗證集模擬真實測試的檢驗方法。
* 真實測試（Final Testing）：模型完成後在新資料上的最終評估。
* 訓練流程（Training Pipeline）：從資料處理到模型驗證的完整步驟。
* 過擬合檢測（Overfitting Detection）：透過驗證結果監測模型是否記憶訓練資料。
* 模型重新訓練（Retraining）：根據驗證結果調整模型與超參數後再訓練。
* 誤差爆增（Error Spike）：模型在驗證集上損失劇增的情況。
* 資料分佈（Data Distribution）：訓練與驗證資料中樣本的統計分佈。
* 資料偏移（Data Shift）：訓練資料與實際應用資料分佈不同導致模型表現下降的現象。
* 訓練資料選擇（Training Data Selection）：挑選能代表實際應用情境的資料以提升泛化能力。
* 導論課程（Introductory Course）：內容偏淺但概念需講清楚，通常需要較多投影片。
* 模型錯置（Model Misalignment）：訓練目標與真實應用目標不一致造成效能不佳。
* 重新訓練（Retraining）：更換資料或設定後重新訓練模型的過程。
* 模型調整（Model Adjustment）：修改訓練資料、模型結構或超參數以改善表現。
* 函式空間（Function Space）：模型可表達的所有函式集合。
* 線性模型（Linear Model）：模型假設輸入與輸出間為線性關係。
* 非線性關係（Nonlinear Relationship）：輸入與輸出間存在曲線或複雜關聯。
* 函式逼近（Function Approximation）：用模型近似任意目標函式的能力。
* 分段線性函式（Piecewise Linear Function）：由多個線段組成的曲線函式。
* 分段線性逼近（Piecewise Linear Approximation）：用多段直線近似任意曲線的方法。
* 山坡函式（Hill Function）：具有單一轉折的分段線性函式。
* 組合函式（Compositional Function）：多個基礎函式線性組合成複雜曲線。
* 常數項（Constant Term）：函式中的固定偏移值。
* 激活函式（Activation Function）：在神經網路中引入非線性的函式。
* ReLU（Rectified Linear Unit）：常用的激活函式，定義為 max(0, x)。
* 參數 C、W、b：分別控制輸出縮放、輸入斜率及偏移。
* 神經元（Neuron）：輸入經權重加總後通過激活函式產生輸出的單位。
* 層（Layer）：由多個神經元組成的運算單元集合。
* 隱藏層（Hidden Layer）：輸入層與輸出層之間的中間層，用於特徵轉換。
* 深度學習（Deep Learning）：含多層神經網路的學習方法。
* 神經網路（Neural Network）：由多層神經元組成的可學習映射系統。
* 向量（Vector）：一組有序數值，用於表示輸入或輸出。
* 矩陣（Matrix）：用於描述多個神經元權重關係的數學結構。
* 向量運算（Vectorized Operation）：以矩陣乘法方式同時計算多個輸入輸出。
* 前向傳播（Forward Propagation）：資料自輸入經各層傳遞至輸出的過程。
* 反向傳播（Backpropagation）：根據誤差計算梯度並更新參數的演算法。
* 參數共享（Parameter Sharing）：多個輸入共享相同權重的設計方式。
* 權重矩陣（Weight Matrix）：連接前後層神經元的權重集合。
* 偏置向量（Bias Vector）：為每個神經元提供偏移值的向量。
* 輸出層（Output Layer）：產生最終預測結果的網路層。
* 隱藏表示（Hidden Representation）：網路中間層對輸入的內部表徵。
* 激活值（Activation Value）：經激活函式後輸出的數值。
* 非線性轉換（Nonlinear Transformation）：引入非線性以提升模型表達能力的過程。
* 通用近似定理（Universal Approximation Theorem）：有限神經元的神經網路可逼近任意連續函數。
* 模型容量（Model Capacity）：模型可擬合複雜函數的能力。
* 過度擬合（Overfitting）：模型在訓練資料上表現過好而無法泛化的現象。
* 權重參數（Weight Parameters）：控制輸入特徵對輸出的影響程度。
* 偏差參數（Bias Parameters）：調整神經元輸出基準的參數。
* 向量轉置（Vector Transpose）：將列向量與行向量互換的運算。
* 前饋神經網路（Feedforward Neural Network）：資料只沿一方向流動的網路結構。
* 特徵選擇（Feature Selection）：挑選對模型預測最有用的輸入變數。
* 特徵向量（Feature Vector）：用於描述樣本的多維輸入資料。
* 線性組合（Linear Combination）：多個輸入經加權求和後的結果。
* 激活函式符號 σ（Sigma）：常用來表示 ReLU 或其他非線性函式。
* 多層感知器（Multilayer Perceptron, MLP）：含多層全連接神經元的前饋網路。
* 網路深度（Network Depth）：神經網路的層數。
* 網路寬度（Network Width）：單層中神經元的數量。
* 函式逼近能力（Function Approximation Power）：模型能模擬不同函數形狀的程度。
* 參數更新（Parameter Update）：依據梯度與學習率調整權重與偏差的過程。
* 損失梯度（Loss Gradient）：損失對模型參數的偏微分。
* 高維參數空間（High-dimensional Parameter Space）：神經網路中大量參數構成的空間。
* 自動微分（Automatic Differentiation）：框架自動計算梯度的技術（如 PyTorch、TensorFlow）。
* 訓練框架（Deep Learning Framework）：用於構建與訓練神經網路的工具庫。
* 反向傳播實作（Backprop Implementation）：框架內部自動進行梯度傳遞與參數更新的機制。
* 全批次訓練（Full-batch Training）：一次使用所有訓練資料更新參數的方法。
* 損失曲線（Loss Curve）：顯示訓練過程中損失值隨 epoch 變化的圖表。
* 訓練損失（Training Loss）：模型在訓練資料上計算的誤差值。
* 驗證損失（Validation Loss）：模型在驗證資料上計算的誤差值。
* 全域最小值（Global Minimum）：損失函數在參數空間中的最低點。
* 區域最小值（Local Minimum）：損失函數在某局部區域的最低點。
* 鞍點（Saddle Point）：梯度為零但不是最小值的平坦區域。
* 梯度（Gradient）：損失對模型參數的偏導數，用於指示下降方向。
* 梯度消失（Gradient Vanishing）：梯度變得極小導致訓練停滯的問題。
* 優化（Optimization）：尋找最佳參數以最小化損失函數的過程。
* 最佳化方法（Optimization Method）：用於更新模型參數的演算法。
* 學習率（Learning Rate）：控制參數更新步伐大小的超參數。
* 超參數（Hyperparameter）：訓練前設定、不可透過學習自動獲得的參數。
* 迭代次數（Epochs）：模型完整看過所有訓練資料的次數。
* 梯度下降（Gradient Descent）：根據梯度方向更新參數的基本優化演算法。
* 隨機梯度下降（Stochastic Gradient Descent, SGD）：每次用部分資料更新參數的演算法。
* 早停（Early Stopping）：當驗證損失不再改善時提前停止訓練的方法。
* 損失函數（Loss Function）：評估模型預測與實際值差距的函數。
* 訓練收斂（Training Convergence）：損失值不再明顯下降的狀態。
* 過度擬合（Overfitting）：模型過度學習訓練資料導致泛化能力下降的現象。
* 欠擬合（Underfitting）：模型無法充分學習資料模式的現象。
* 模型容量（Model Capacity）：模型能表示函數複雜度的能力。
* 泛化能力（Generalization Ability）：模型在未見資料上維持表現的能力。
* 函式空間（Function Space）：模型可表達的函數集合。
* 應用範圍（Hypothesis Space）：模型假設可涵蓋的函式範圍。
* 測試資料（Test Set）：最終評估模型效能的資料集。
* 驗證資料（Validation Set）：用於調整超參數與監控過擬合的資料集。
* 公開測試集（Public Set）：競賽中可重複測試的資料子集。
* 私有測試集（Private Set）：最終評分使用的隱藏測試資料集。
* 基準測試（Benchmark）：用於比較模型效能的標準資料集。
* 準確率（Accuracy）：正確預測數量佔總預測數量的比例。
* 精確匹配率（Exact Match, EM）：模型輸出與正確答案完全相符的比例。
* 過度測試（Over-testing）：頻繁使用測試集導致模型對測試資料過擬合。
* 訓練循環（Training Loop）：執行前向傳播、損失計算與參數更新的迴圈。
* 反向傳播（Backpropagation）：計算梯度並更新參數的演算法。
* 深度學習（Deep Learning）：含多層神經網路的學習方法。
* 神經網路（Neural Network）：由神經元組成的非線性函數模型。
* 隱藏層（Hidden Layer）：輸入與輸出之間進行特徵轉換的層。
* 激活函數（Activation Function）：為網路引入非線性的函數。
* ReLU 函數（Rectified Linear Unit）：輸出 max(0, x) 的常見激活函數。
* 模型初始化（Model Initialization）：設定權重與偏置的初始值過程。
* 梯度爆炸（Gradient Explosion）：梯度過大導致參數發散的現象。
* 批次大小（Batch Size）：每次更新使用的訓練樣本數。
* 參數更新（Parameter Update）：根據梯度與學習率調整權重的步驟。
* 訓練曲線（Training Curve）：顯示訓練過程中損失或準確率變化的圖。
* 特徵工程（Feature Engineering）：設計輸入變數以提升模型效能的過程。
* 特徵選擇（Feature Selection）：挑選對預測最有幫助的輸入特徵。
* 平均字數特徵（Average Words per Slide Feature）：每頁投影片平均字數的輸入特徵。
* 函式擬合（Function Fitting）：用模型近似資料分佈或函式關係的過程。
* 模型比較（Model Comparison）：對不同模型效能進行量化評估的過程。
* 均方誤差（Mean Squared Error, MSE）：預測值與真實值差的平方平均，用於衡量模型準確度。
* 損失函數（Loss Function）：量化模型預測誤差的函數。
* 線性模型（Linear Model）：輸出為輸入變數線性組合的模型。
* 權重（Weight, W）：控制輸入特徵影響力的參數。
* 偏置（Bias, B）：調整模型輸出的常數項。
* 預測值（Prediction, Ŷ）：模型根據輸入計算的輸出結果。
* 真實值（True Value, Y）：實際的正確答案。
* 暴力搜尋（Brute Force Search）：枚舉所有可能參數組合以尋找最佳解的方式。
* 誤差平面（Error Surface）：以參數為軸、損失為高度的函數圖。
* 等高線圖（Contour Plot）：顯示損失平面的等值線圖形。
* 參數空間（Parameter Space）：模型參數可能取值的範圍。
* 全域最小值（Global Minimum）：損失函數的最小可能值。
* 局部最小值（Local Minimum）：局部範圍內的最小損失值。
* 梯度下降（Gradient Descent）：根據梯度方向更新參數以最小化損失的演算法。
* 偏微分（Partial Derivative）：對單一參數求導以獲得梯度分量的運算。
* 梯度（Gradient）：損失對參數的偏導數集合。
* 學習率（Learning Rate）：控制參數更新步伐大小的超參數。
* 超參數（Hyperparameter）：需手動設定、影響訓練過程的控制參數。
* 迭代次數（Epochs）：完整訓練集被模型看過一次的訓練輪數。
* 訓練資料（Training Data）：用於學習模型參數的資料集。
* 驗證資料（Validation Data）：用於調整模型參數與監控過擬合的資料集。
* 測試資料（Test Data）：最終評估模型效能的資料集。
* 模型初始化（Model Initialization）：設定模型權重與偏置初始值的過程。
* 參數更新（Parameter Update）：根據梯度調整權重與偏置的步驟。
* 學習曲線（Learning Curve）：顯示損失或準確率隨訓練輪數變化的圖形。
* 訓練收斂（Training Convergence）：損失不再顯著下降的狀態。
* 過擬合（Overfitting）：模型在訓練集上表現良好但泛化能力差的現象。
* 欠擬合（Underfitting）：模型無法充分擬合訓練資料的情況。
* 泛化能力（Generalization Ability）：模型在未見資料上保持效能的能力。
* 誤差下降（Loss Reduction）：訓練過程中損失逐步降低的現象。
* 學習率爆炸（Learning Rate Explosion）：學習率過大導致損失劇烈增長的問題。
* 收斂速度（Convergence Speed）：模型訓練接近最優解的速度。
* 數值穩定性（Numerical Stability）：演算法在計算過程中避免溢出或不穩定的能力。
* 特徵（Feature）：作為模型輸入的可觀測變數。
* 標籤（Label）：對應於輸入特徵的真實輸出值。
* 函式擬合（Function Fitting）：以數學模型逼近資料中關係的過程。
* 最佳化問題（Optimization Problem）：尋找最小化損失的參數組合的數學問題。
* 平方誤差（Squared Error）：預測值與真實值差的平方。
* 平均值運算（Mean Operation）：對多筆樣本的誤差取平均。
* 權重梯度（Weight Gradient）：損失對權重的偏導數。
* 偏置梯度（Bias Gradient）：損失對偏置的偏導數。
* 隨機初始化（Random Initialization）：以亂數設定初始權重值的方法。
* 誤差分析（Error Analysis）：檢視損失來源與模型缺陷的過程。
* 超參數調整（Hyperparameter Tuning）：嘗試不同參數組合以改善模型效能。
* 學習率衰減（Learning Rate Decay）：隨訓練進程逐步減小學習率的方法。
* 模型可視化（Model Visualization）：用圖形方式呈現模型行為與訓練過程。
* 直線回歸（Linear Regression）：透過線性關係預測連續目標變數的模型。
* 訓練歷史（Training History）：訓練過程中記錄的損失與參數變化資料。
* 最小平方解（Least Squares Solution）：以最小平方誤差為目標的最佳參數組合。
* 演算法收斂（Algorithm Convergence）：訓練過程趨於穩定並接近最優解的狀態。
* 批次大小（Batch Size）：每次參數更新時所使用的訓練樣本數量。
* 隨機梯度下降（Stochastic Gradient Descent, SGD）：每次使用單一樣本進行參數更新的演算法。
* 小批次梯度下降（Mini-Batch Gradient Descent）：使用多筆樣本組成的批次進行參數更新的方法。
* 全批次梯度下降（Full-Batch Gradient Descent）：使用所有訓練資料一次性更新參數的方式。
* 隨機洗牌（Random Shuffle）：在每個訓練週期開始前隨機打亂資料順序的過程。
* 前向傳播（Forward Pass）：從輸入經過網路層層計算輸出預測的過程。
* 反向傳播（Backward Pass）：計算損失對每個參數的梯度並反向傳遞的過程。
* 反向傳播演算法（Backpropagation）：計算神經網路梯度的核心演算法。
* ReLU 函數（Rectified Linear Unit）：非線性激活函數，將負值輸出為 0，正值保持不變。
* 激活函數（Activation Function）：為模型引入非線性特性的函數。
* 隱藏層（Hidden Layer）：輸入與輸出層之間的中間神經層。
* 神經元（Neuron）：神經網路中的基本計算單元。
* 權重矩陣（Weight Matrix）：連接不同層神經元之間的可學習參數。
* 偏置向量（Bias Vector）：調整神經元輸出的偏移量。
* 向量化運算（Vectorized Computation）：使用矩陣運算加速模型訓練的技術。
* 矩陣相乘（Matrix Multiplication）：神經網路層間資料傳遞的基本運算。
* 前饋神經網路（Feedforward Neural Network）：資料僅從輸入流向輸出的神經網路。
* 參數初始化（Parameter Initialization）：為權重與偏置設定初始值的過程。
* Xavier 初始化（Xavier Initialization）：一種保持層間輸出方差穩定的初始化方法。
* He 初始化（He Initialization）：適用於 ReLU 激活函數的初始化策略。
* 過擬合（Overfitting）：模型過度學習訓練資料細節導致泛化能力下降的現象。
* 欠擬合（Underfitting）：模型未能充分學習資料模式的情況。
* 驗證集（Validation Set）：用於調整模型超參數與監控過擬合的資料集。
* 測試集（Test Set）：用於評估最終模型泛化能力的資料集。
* 訓練輪數（Epoch）：模型完整看過一次訓練資料的次數。
* 動態學習率（Adaptive Learning Rate）：根據訓練狀況自動調整學習率的策略。
* Adam 優化器（Adam Optimizer）：一種結合動量與自適應學習率的參數更新方法。
* 動量法（Momentum）：使用過去梯度加速收斂的最佳化技巧。
* 學習率衰減（Learning Rate Decay）：隨訓練進程逐步減小學習率的策略。
* 梯度爆炸（Gradient Explosion）：梯度值過大導致訓練不穩定的現象。
* 梯度消失（Gradient Vanishing）：梯度過小導致參數無法有效更新的問題。
* 損失函數（Loss Function）：衡量模型預測與真實值差異的函數。
* 均方誤差（Mean Squared Error, MSE）：誤差平方的平均值，用於迴歸問題。
* 正規化（Regularization）：防止模型過擬合的技術。
* L2 正規化（L2 Regularization）：在損失函數中加入權重平方懲罰項。
* 批次歸一化（Batch Normalization）：對每個批次的輸入進行標準化以穩定訓練。
* 激活圖（Activation Map）：隱藏層輸出的可視化表示。
* 誤差曲面（Error Surface）：參數與損失函數之間關係的多維空間圖。
* 損失收斂（Loss Convergence）：損失值逐漸穩定於最小值的過程。
* 泛化能力（Generalization Ability）：模型在未見資料上的表現能力。
* 超參數（Hyperparameter）：需人工設定、影響訓練過程的參數。
* 模型選擇（Model Selection）：選擇最佳模型與超參數組合的過程。
* 過程記錄（Training History）：記錄訓練過程中損失與準確度變化的資料。
* 驗證曲線（Validation Curve）：顯示不同超參數設定下模型效能的圖。
* 早停法（Early Stopping）：在驗證集損失惡化前停止訓練的策略。
* 特徵縮放（Feature Scaling）：將不同特徵值範圍調整至相似尺度的處理。
* 資料標準化（Data Normalization）：對輸入資料進行均值為零、方差為一的轉換。
* 隨機初始化種子（Random Seed）：控制隨機數生成結果可重現的設定。
* 模型穩定性（Model Stability）：模型在不同初始化與資料擾動下結果的一致性。
* 泛化誤差（Generalization Error）：模型在未知資料上預測的誤差。
