Cross-Entropy Loss/zh

    From Marovi AI
    This page is a translated version of the page Cross-Entropy Loss and the translation is 100% complete.
    Other languages:
    Article
    Topic area Machine Learning
    Difficulty Intermediate
    Prerequisites Loss Functions, Softmax Function

    交叉熵損失(也稱為對數損失)是機器學習分類任務中使用最廣泛的損失函數。它根植於信息論,衡量真實標籤分布與模型預測概率分布之間的差異,提供一個平滑、可微的目標,驅動概率分類器做出自信且正確的預測。

    信息論基礎

    離散概率分布 $ p $量化其不確定性:

    $ H(p) = -\sum_{k=1}^{K} p_k \log p_k $

    對於確定性分布(獨熱標籤),$ H(p) = 0 $。當所有結果等概率時,熵達到最大。

    KL 散度

    Kullback-Leibler 散度衡量一個分布 $ q $ 與參考分布 $ p $ 之間的差異:

    $ D_{\mathrm{KL}}(p \,\|\, q) = \sum_{k=1}^{K} p_k \log \frac{p_k}{q_k} $

    KL 散度是非負的,並且當且僅當 $ p = q $ 時等於零。

    交叉熵

    分布 $ p $(真實)與 $ q $(預測)之間的交叉熵為:

    $ H(p, q) = -\sum_{k=1}^{K} p_k \log q_k = H(p) + D_{\mathrm{KL}}(p \,\|\, q) $

    由於 $ H(p) $ 相對於模型參數是常數,最小化交叉熵等價於最小化 KL 散度——即使預測分布 $ q $ 儘可能接近真實分布 $ p $

    二元交叉熵

    對於二元分類,真實標籤 $ y \in \{0, 1\} $,預測概率 $ \hat{y} = \sigma(z) $(其中 $ \sigma $sigmoid 函數):

    $ \mathcal{L}_{\mathrm{BCE}} = -\bigl[y \log \hat{y} + (1 - y) \log(1 - \hat{y})\bigr] $

    在包含 $ N $ 個樣本的數據集上:

    $ \mathcal{L} = -\frac{1}{N} \sum_{i=1}^{N} \bigl[y_i \log \hat{y}_i + (1 - y_i) \log(1 - \hat{y}_i)\bigr] $

    關於logit $ z $的梯度具有優雅簡潔的形式 $ \hat{y} - y $,既直觀又計算高效。

    分類交叉熵

    對於具有$ K $個類別的多分類問題,真實標籤通常是一個獨熱向量$ \mathbf{y} $,其中正確類別$ c $對應$ y_c = 1 $。預測概率$ \hat{\mathbf{y}} $通過Softmax Function獲得:

    $ \mathcal{L}_{\mathrm{CE}} = -\sum_{k=1}^{K} y_k \log \hat{y}_k = -\log \hat{y}_c $

    這簡化為正確類別的負對數概率,這就是為什麼在此情境下分類交叉熵也被稱為負對數似然(negative log-likelihood)。

    數值穩定性

    Log-Sum-Exp 技巧

    直接計算$ \log(\mathrm{softmax}(z_k)) $需要對可能較大的logits取指數,導致數值上溢。log-sum-exp技巧可以避免此問題:

    $ \log \hat{y}_k = z_k - \log \sum_{j=1}^{K} e^{z_j} = z_k - \left(m + \log \sum_{j=1}^{K} e^{z_j - m}\right) $

    其中$ m = \max_j z_j $。減去最大logit可確保最大指數為零,從而防止上溢。所有主流的深度學習框架都實現了這一融合操作(例如,PyTorch的CrossEntropyLoss接受原始logits)。

    截斷(Clamping)

    預測概率應當從精確的 0 和 1 處截斷開,以避免 $ \log(0) = -\infty $。通常使用一個較小的 epsilon(例如 $ 10^{-7} $)。

    標籤平滑

    標籤平滑(Szegedy 等人,2016)將硬獨熱目標替換為軟分布:

    $ y_k^{\mathrm{smooth}} = (1 - \alpha)\, y_k + \frac{\alpha}{K} $

    其中$ \alpha $是一個小常數(通常為0.1)。這可防止模型過度自信,改善校準,通常能帶來更好的泛化能力。在訓練大型圖像分類器和transformer模型時已是標準做法。

    與其他損失函數的比較

    損失 公式 典型用途
    交叉熵 $ -\sum y_k \log \hat{y}_k $ 分類
    均方誤差 $ \frac{1}{K}\sum(y_k - \hat{y}_k)^2 $ 回歸(不適用於分類)
    Hinge loss $ \max(0, 1 - y \cdot z) $ SVM 類型的分類
    Focal loss $ -(1-\hat{y}_c)^\gamma \log \hat{y}_c $ 不平衡分類

    當預測自信地出錯時,交叉熵的梯度比 MSE 更陡峭,從而能夠更快地糾正較大的錯誤。

    參見

    參考文獻

    • Shannon, C. E. (1948). "A Mathematical Theory of Communication". Bell System Technical Journal.
    • Goodfellow, I., Bengio, Y. and Courville, A. (2016). Deep Learning. MIT Press, 第6章.
    • Szegedy, C. et al. (2016). "Rethinking the Inception Architecture for Computer Vision". CVPR.
    • Lin, T.-Y. et al. (2017). "Focal Loss for Dense Object Detection". ICCV.