交叉熵損失
交叉熵損失衡量一個預測機率分布與真實答案相距多遠,是分類的標準損失。直覺上它問:模型對正確類別給了多少機率?然後依該機率多低的比例懲罰模型。有信心地答對幾乎不付代價;有信心地答錯則代價很高。由於對真實類別給接近零機率的懲罰會無上限地增長(負的 log p 趨向無窮),交叉熵強烈地阻止模型「有信心地犯錯」。
對單一樣本,真實類別以 one-hot 向量 y 表示(正確位置為 1、其餘為 0),預測分布為 p,交叉熵是 H(y, p) = 對所有 k 的 y_k·log(p_k) 之總和取負號,化簡為 負 log(p_correct),即真實類別的負對數機率。它源自資訊理論(用為 p 最佳化的編碼去編碼來自 y 的樣本時,期望多花的位元數),且等於模型下標籤的負對數似然,所以最小化它就是最大似然估計。在資料集上取平均,它就是分類器的訓練目標。
交叉熵幾乎總是套用在 softmax 輸出上,而這對組合很特別:softmax-交叉熵對 logits 的梯度就是 p 減 y,即預測分布減去 one-hot 目標。這個簡潔形式沒有會消失的因子且數值穩定,這也是框架把兩者融合成單一運算(CrossEntropyLoss、softmax_cross_entropy_with_logits)並接受原始 logits 而非機率的原因。二元情形把 sigmoid 與二元交叉熵搭配,用於是非與多標籤任務。
交叉熵訓練了幾乎每個影像分類器(ImageNet 的 ResNet、ViT),逐像素套用則訓練語意分割網路。常見的精修:標籤平滑(label smoothing)以稍微柔化的目標取代硬性 one-hot,以抑制過度自信並改善校準;focal loss 重塑交叉熵,使其在偵測中聚焦於困難、稀有的樣本;類別加權則對抗不平衡。CLIP 中的對比目標本身就是一個在影像-文字相似度分數上的交叉熵。
三個類別,真實標籤 = 類別 1,預測 p=(0.7, 0.2, 0.1):損失 = 負 log(0.7) 約為 0.357。若模型較沒把握,p=(0.4, 0.3, 0.3):損失 = 負 log(0.4) 約為 0.916。有信心且正確比較便宜。
陷阱:餵給融合式交叉熵的是 logits、不是機率,且切勿事先套用 softmax(重複 softmax 會悄悄損害訓練)。也要提防 log(0):永遠在對數域中運算(log-softmax),而非對另外算好的 softmax 取對數,後者可能產生負無窮。