AI時代系列(2) 機器學習三部曲: 🔹 第二部:《深度學習 —— 神經網路的革命》
6/100 第一週:深度學習基礎入門
6.損失函數與優化器概念 📉 幫助模型走向正確方向的指南針!
幫助模型走向正確方向的指南針!
________________________________________
✅ 核心概念:
在深度學習中,模型的任務是「預測」,而學習的目標是讓預測越來越準確。這就需要兩個關鍵角色:
• 損失函數(Loss Function): 損失函數就是用來告訴模型「你預測得有多差」的一個分數。
它會計算「模型預測值」和「正確答案」之間的差距,這個差距越小,代表模型學得越好;差距越大,代表模型還需要再學習。
• 優化器(Optimizer): 根據損失的大小,調整網路中的參數,像是修正方向的駕駛員。
📌 一句話總結:
損失函數決定學習目標,優化器決定走哪條路抵達目標。
________________________________________
✅ 損失函數是什麼?
損失函數(Loss Function)會輸出一個數值,代表模型目前的預測錯誤程度,這個值越小代表模型越準確。
類型 常見損失函數 適用場景
迴歸 MSE(均方誤差) 預測房價 銷售量等連續值
二分類 Binary Cross Entropy 是/否、0/1 任務
多分類 Categorical Cross Entropy 類別標籤輸出(貓/狗/鳥)
語意生成 Kullback-Leibler Divergence 預測機率分佈
________________________________________
✅ 常見損失函數簡介:
1. MSE L = (1/n) Σ(y - ŷ)² 👉 測量預測值和真實值的距離,差距越大懲罰越重,適合用來訓練精準度要求高的迴歸模型。
2. MAE `L = (1/n) Σ y - ŷ 👉 直接看預測值和真實值的距離有多遠,不誇大大誤差,比較穩定,適合用在誤差容忍範圍大的情境。
3. Binary Cross Entropy - [y log(ŷ) + (1-y) log(1-ŷ)] 👉 判斷模型預測「對與錯」的信心程度,預測越準(機率越接近真實標籤)損失越小,是二分類的標準公式。
4. Categorical Cross Entropy -Σ yᵢ log(ŷᵢ) 👉 看模型是否把最高的預測機率給了正確的類別,越準損失越低,是多分類常見用法。
________________________________________
✅ 優化器是什麼?
優化器(Optimizer)根據損失函數的結果「反向調整」每個神經元的參數(權重與偏差),讓模型一步步朝正確方向前進。
________________________________________
✅ 常見優化器比較
- SGD(Stochastic Gradient Descent)
- 特點:最基本的隨機梯度下降法
- 優點:簡單、直觀
- 缺點:收斂慢、易受局部極小影響
- 是否常用:⚠️ 需搭配學習率調整、Momentum 等技巧使用
- Momentum
- 特點:在 SGD 基礎上加入慣性項
- 優點:加速收斂、減少震盪
- 缺點:需手動調整動量參數
- 是否常用:✅ 常用於提升訓練穩定性
- RMSProp
- 特點:根據參數變化自動調整學習率
- 優點:適合非平穩目標函數(如 RNN)
- 缺點:對超參數敏感
- 是否常用:✅ 對於時序資料訓練效果佳
- Adam(Adaptive Moment Estimation)
- 特點:融合 Momentum 與 RMSProp
- 優點:收斂快、穩定性高、自動調整學習率
- 缺點:參數複雜,可能導致過擬合
- 是否常用:✅✅✅ 深度學習預設首選,泛用性極強
- Adagrad
- 特點:對出現頻率高的參數自動降低學習率
- 優點:適合處理稀疏特徵(如 NLP)
- 缺點:學習率遞減過快,易過早停止學習
- 是否常用:⚠️ 特定場景適用,不適合長期訓練
________________________________________
✅ Adam 優化器特點(深度學習首選):
1️⃣ 自動調整每個參數的學習率
2️⃣ 適合大多數情境與資料類型
3️⃣ 收斂速度快,穩定性高
4️⃣ 為預設選項(TensorFlow / PyTorch)
________________________________________
✅ PyTorch 實作小範例:
python
import torch.nn as nn
import torch.optim as optim
model = nn.Sequential(
nn.Linear(10, 5),
nn.ReLU(),
nn.Linear(5, 1),
nn.Sigmoid()
)
# 損失函數
criterion = nn.BCELoss()
# 優化器
optimizer = optim.Adam(model.parameters(), lr=0.001)
這段 Python 程式碼使用 PyTorch 建立了一個用於二分類任務的簡單神經網路模型。模型透過 nn.Sequential 串接層級,包括兩層全連接層(Linear)、ReLU 激活函數,以及 Sigmoid 函數將輸出壓縮為 0~1 的機率值,適合預測「是或否」的問題(如是否購買、是否為垃圾郵件)。損失函數採用 BCELoss(二元交叉熵),用來衡量預測機率與實際標籤的差距,越準損失越小;優化器則使用 Adam,會自動調整模型參數以降低損失。整體架構簡單清晰,適合作為初學者實作二分類問題的範例。
________________________________________
✅ 小結與啟示 💡
✅ 損失函數 = 模型走錯路的評分機制
✅ 優化器 = 根據評分修正方向的控制系統
✅ 搭配合理的學習率與初始化策略,能讓深度學習真正「學得會」!
✅ 沒有這兩者,就像沒有指南針和方向盤的自駕車:跑不了遠、走不穩定!