損失函數 是什麼?

Loss Function:損失函數 的完整解釋

損失函數衡量模型預測與實際值之間的差異,數值越小代表模型預測越準確,是模型訓練中優化目標的關鍵組成部分。

容易混淆

損失函數 vs 代價函數 損失函數看單筆樣本,代價函數看整體平均。 一個是單題成績,一個是總平均。

損失函數 vs 評估指標 損失函數是訓練用的方向盤,評估指標是驗證用的成績表。 模型優化時看前者,上線比較時常看後者。

最關鍵的區別: 訓練時看它,評分時不一定只看它。

記住這句就好

分數越低,代表模型越接近答案。

實際案例

影像分類訓練 每張圖都會算出一個誤差,損失函數把這些誤差變成可優化的方向。

推薦排序 排序模型常用不同的損失函數去拉開好結果和壞結果的差距。

算法與應用

不同任務會用不同損失,例如分類常見交叉熵,回歸常見均方誤差。 訓練演算法就是在最小化這個函數,讓預測越來越接近真實值。 如果損失設計不對,模型很可能學偏。

中英對照與常見說法

說法 出現場合
損失函數 台灣正式用語
损失函数 簡體寫法
Loss Function 英文原名
代價函數(Cost Function) 嚴格說指整個資料集的平均損失,實務上常混用
目標函數(Objective Function) 涵蓋範圍更廣,最小化或最大化的對象都算
誤差函數 口語說法

三個詞的嚴謹區分是:損失函數算單一樣本的誤差,代價函數算整個批次或資料集的平均,目標函數是最終要最佳化的東西(常常是代價函數加上正則化項)。日常對話裡三個混用不會造成誤解,寫論文時要注意。

常見損失函數與適用任務

損失函數 任務 特性
均方誤差(MSE) 迴歸 對離群值敏感,因為誤差取平方
平均絕對誤差(MAE) 迴歸 對離群值穩健,但在 0 點不可微
Huber 損失 迴歸 小誤差用平方、大誤差用絕對值,兼顧兩者
二元交叉熵 二分類 搭配 sigmoid 使用
類別交叉熵 多分類 搭配 softmax 使用
Focal Loss 極度不平衡的分類 降低容易樣本的權重,讓模型專注在難樣本
Hinge Loss 支援向量機 只要分對且超過邊界就沒有損失
對比損失、三元組損失 表示學習 拉近同類、推遠異類

選擇與實務上的坑

分類任務為什麼不用 MSE。 交叉熵搭配 softmax 時梯度形式簡潔(預測值減真實值),MSE 搭配 sigmoid 則在預測極度錯誤時梯度反而趨近 0,導致學不動。這叫做梯度飽和。

損失函數要跟業務指標對齊。 這是實務上最常被忽略的一點。詐欺偵測裡漏掉一筆詐欺的代價遠高於誤判一筆正常交易,用未加權的交叉熵等於假設兩種錯誤一樣貴。對策是加類別權重,或直接設計符合成本結構的自訂損失。

不可微的指標不能直接當損失。 準確率、F1、AUC 都是不可微的,不能直接做梯度下降。標準做法是訓練時用可微的代理損失(交叉熵),評估時看真正在意的指標,兩者不一致是正常的。

多個損失相加時要注意尺度。 兩個損失量級差一百倍,相加等於只在訓練其中一個。加權係數要調,或用自動平衡的方法。

損失下降不代表模型變好。 訓練損失一直降但驗證損失開始上升,就是過度擬合的標準訊號,這時候該停了。

情境判斷

Q1(直覺題): 模型訓練時一直在優化的核心數字是什麼?

→ 就是損失函數,它告訴模型現在離答案有多遠。

Q2(判斷題): 只要損失函數下降,模型就一定能在真實世界表現很好嗎?

→ 不一定,還要看資料品質、過擬合和評估指標。

相關術語

常見問題

損失函數和代價函數可以互換嗎?

很多時候可以口語互說,但嚴格來看,代價函數更偏整體平均。

損失函數一定要可微分嗎?

大多數基於梯度的方法都需要可微分,這樣才方便更新參數。

損失函數是不是越小越好?

在訓練集上通常是,但還要看驗證集表現,不能只追訓練分數。