💡一句話定義
損失函數(Loss Function)= 量化「一筆預測與真實答案差多少」的一把尺。把所有樣本的損失加總/平均,就是模型的總損失;訓練=調整參數讓總損失最小。它決定了模型往哪個方向學。
先有損失函數,梯度下降才知道「往哪走能變更好」。所以選對損失,等於幫模型定義了正確的目標。
📝用「扣分表」來想
🎮互動:MSE 與交叉熵
切換兩種損失。MSE:拖動斜率/截距,看紅色方塊(誤差平方)總面積怎麼變。交叉熵:把真實標籤設成正類、再把預測機率拉向 0,看損失如何急速飆高(有信心卻答錯 → 重罰)。
損失函數 (Loss Functions) 互動演示
當前損失值 Loss = 0.00
📊常見損失函數對照表
| 損失 | 任務 | 公式(概念) | 特性 |
|---|---|---|---|
| MSE 均方誤差 | 迴歸 | 平均 (y−ŷ)² | 平滑可微、好優化;對離群值敏感(平方放大大誤差) |
| MAE 平均絕對誤差 | 迴歸 | 平均 |y−ŷ| | 對離群值穩健;但在 0 點不可微、優化較不平滑 |
| Huber | 迴歸 | 小誤差像 MSE、大誤差像 MAE | 兩者折衷:既平滑又對離群穩健 |
| 二元交叉熵 BCE | 二分類 | −[y·log p +(1−y)·log(1−p)] | 配 Sigmoid;對「有信心卻錯」重罰 |
| 類別交叉熵 CCE | 多分類 | −Σ yₖ·log pₖ | 配 Softmax;ImageNet 等多類分類標配 |
選型:迴歸先想 MSE(怕離群值換 Huber/MAE);分類用交叉熵(二分類 BCE、多分類 CCE)。
⚠️為什麼分類不用 MSE?(必考)
分類問題若硬用 MSE 搭配 Sigmoid/Softmax,會有兩個麻煩:
🪫梯度消失
Sigmoid 飽和區導數趨近 0,MSE 讓梯度更小,前期幾乎學不動。
Sigmoid 飽和區導數趨近 0,MSE 讓梯度更小,前期幾乎學不動。
🌀非凸難優化
MSE+Sigmoid 的損失面不是漂亮的碗形,容易卡局部極小。
MSE+Sigmoid 的損失面不是漂亮的碗形,容易卡局部極小。
🎯交叉熵更貼合
交叉熵梯度性質好、收斂快,且直接對應「機率」輸出。
交叉熵梯度性質好、收斂快,且直接對應「機率」輸出。
結論:分類用交叉熵,不用 MSE——這是考試最愛的判斷題。
🔍損失函數 ≠ 評估指標
兩者容易混淆:損失函數是「訓練時要最小化的目標」,必須可微才能梯度下降(如交叉熵、MSE);評估指標是「拿給人看、判斷好壞」的分數,重可解讀但不一定可微(如準確率、精確率、召回率、F1)。訓練用損失、驗收看指標,常常是不同的兩個東西。
✅自我檢測
Q1. 訓練跟損失函數是什麼關係?
損失函數量化「預測與真實差多少」,訓練就是調整模型參數讓總損失最小。它決定了模型優化的方向與目標。
Q2. 迴歸和分類各用什麼損失?
迴歸常用 MSE(怕離群值可換 MAE、Huber);分類用交叉熵(二分類 BCE、多分類 CCE)。任務不同、損失不同。
Q3. 為什麼分類不建議用 MSE?
MSE 搭配 Sigmoid/Softmax 容易梯度消失、損失面非凸難優化。交叉熵梯度性質好、收斂快,又直接對應機率輸出,因此是分類標配。
Q4. MSE 為什麼對離群值敏感?Huber 怎麼改善?
MSE 對誤差取平方,離群點的大誤差被平方後暴增,強烈拉動模型去遷就它。Huber 對小誤差像 MSE(平滑)、大誤差像 MAE(線性),因此兼顧可微與對離群穩健。
🎯重點整理
- 是什麼:量化預測與真實差距的函數,訓練=最小化總損失。
- 迴歸:MSE(敏感於離群)、MAE(穩健)、Huber(折衷)。
- 分類:交叉熵——二分類 BCE、多分類 CCE。
- 易錯:分類別用 MSE(梯度消失、非凸);用交叉熵。
- 分清:損失(可微、拿來優化)≠ 評估指標(可解讀、拿來驗收)。