AI時代系列(2) 機器學習三部曲: 🔹 第二部:《深度學習 —— 神經網路的革命》
16/100 第二週:多層感知器 MLP
16.批次訓練與迷你批次策略 📦 批次訓練讓模型更有效率!
________________________________________
✅ 核心概念:
神經網路訓練的本質是透過反覆讀資料 → 調整參數,而一次要餵多少筆資料給模型處理,會直接影響訓練速度、準確性與穩定性。
📌 批次訓練策略 = 決定「梯度下降時」處理多少資料量。
________________________________________
🧠 三種常見訓練方式比較:
三種常見的訓練方式各有優劣,主要差異在於每次更新所處理的資料量。
Batch Gradient Descent 一次使用全部訓練資料進行參數更新,雖然收斂穩定但資源消耗大,適合資料量小的情況;
Stochastic Gradient Descent (SGD) 每次只用一筆資料進行更新,計算快速但波動大,具有隨機性,適合線上學習或動態資料;
Mini-Batch Gradient Descent 則是折衷方案,一次處理少量樣本(如32或64筆),兼顧速度與穩定性,是目前實務中最常用的訓練策略。選擇合適的方法能有效提升訓練效率與模型表現。
________________________________________
📦 迷你批次(Mini-Batch)優勢
✅ GPU 加速訓練最適配
✅ 記憶體使用效率高
✅ 訓練收斂穩定,能快速迭代
✅ 支援並行運算與 Batch Normalization
________________________________________
🔁 搭配 Epoch 訓練說明:
• Epoch:所有資料都看過一次
• Batch size:每次訓練用幾筆資料
• Steps per epoch:= 總樣本數 / 批次大小
📌 例如:
• 總資料量:60,000 筆
• 批次大小(batch size):64
• 則每個 epoch 要跑約 937 次 mini-batch 更新
________________________________________
⚙️ TensorFlow 實作範例:
python
model.fit(x_train, y_train,
epochs=10,
batch_size=64, # 迷你批次大小
validation_split=0.2)
可選擇:
• batch_size=1 → 相當於 SGD
• batch_size=全體資料量 → 等同於 Batch GD
• batch_size=32 / 64 / 128 → Mini-batch(最推薦)
這段程式碼中 model.fit() 用來訓練模型,batch_size=64 表示採用 Mini-Batch Gradient Descent,每次更新使用 64 筆資料,是實務中兼顧效率與穩定性的主流做法。若設定 batch_size=1,則變成 Stochastic Gradient Descent(SGD),每筆資料即時更新參數,速度快但震盪大;若設為整體訓練資料數(如 batch_size=len(x_train)),則為 Batch Gradient Descent,雖然穩定但效能低且記憶體需求大。Mini-batch(如 32、64、128)則在訓練效率與收斂穩定性間取得最佳平衡,是大多數深度學習應用中最推薦的選擇。
________________________________________
📊 迷你批次策略的效能影響:
批次大小(batch size)對模型訓練影響深遠。若設為 1(SGD),雖然更新速度快,但因隨機性高,導致訓練過程極不穩定,準確率波動大,適合即時學習或線上更新場景;設為全部資料(Batch GD)則最穩定,但訓練速度極慢、效率低,僅適合小型資料集;最常見的做法是選擇 32~128 之間的 mini-batch,能兼顧訓練速度、穩定性與模型準確率,因此成為深度學習實務中的最佳策略。
________________________________________
💡 小提醒:大批次 ≠ 一定更好!
若使用過大批次(如 >1024),可能會造成:
• 訓練泛化能力下降(容易記住、難以抽象)
• GPU 記憶體超載
• 過快收斂到局部最佳解
________________________________________
🎯 小結與啟示:
✅ 迷你批次訓練 = 訓練效率與泛化能力的平衡點
✅ 批次大小是重要超參數,需根據資料集大小與設備性能調整
✅ 搭配 Batch Normalization 與適當學習率策略,效果更顯著!