# 課程目標與範圍 ![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, Ŷ):模型根據輸入計算的輸出結果。 * 真實值(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):模型在未知資料上預測的誤差。