什麼是 交叉熵損失(Cross-entropy)?
交叉熵損失是一種衡量兩個機率分佈之間差異的損失函數,常用於分類任務中評估模型預測結果與真實標籤的差距。
核心概念
交叉熵損失的核心概念是基於資訊理論中的熵(Entropy)和交叉熵(Cross-entropy)。
熵 (Entropy): 熵衡量的是一個隨機變數的不確定性。對於一個離散型隨機變數 X,其熵定義為:
H(X) = - Σ p(x) log p(x)其中 p(x) 是 X 取值為 x 的機率。熵越大,表示隨機變數的不確定性越高。交叉熵 (Cross-entropy): 交叉熵衡量的是使用一個分佈 q(x) 來近似另一個分佈 p(x) 時,所需的平均訊息量。其定義為:
H(p, q) = - Σ p(x) log q(x)在機器學習中,p(x) 通常代表真實標籤的機率分佈,而 q(x) 代表模型預測的機率分佈。交叉熵損失的目標是最小化 H(p, q),使 q(x) 盡可能接近 p(x)。
對於二元分類問題,交叉熵損失函數(也稱為對數損失)的公式如下:
Loss = - [y * log(p) + (1 - y) * log(1 - p)]
其中:
y是真實標籤(0 或 1)。p是模型預測為正例的機率。
對於多元分類問題,交叉熵損失函數的公式如下:
Loss = - Σ y_i * log(p_i)
其中:
y_i是真實標籤的 one-hot 編碼向量。p_i是模型預測的機率分佈。
運作原理
交叉熵損失的運作原理是通過比較模型預測的機率分佈與真實標籤的機率分佈,計算它們之間的差異。這個差異被用作損失值,用於指導模型的訓練過程。
在訓練過程中,模型會不斷調整其參數,以最小化交叉熵損失。這意味著模型會努力使預測的機率分佈更接近真實標籤的機率分佈。梯度下降等最佳化算法會利用交叉熵損失的梯度來更新模型參數。
具體來說,對於二元分類問題,如果真實標籤是 1,模型預測的機率 p 越接近 1,損失越小;反之,如果真實標籤是 0,模型預測的機率 p 越接近 0,損失越小。對於多元分類問題,模型會努力使預測的機率分佈在正確的類別上具有更高的機率。
實際應用
交叉熵損失廣泛應用於各種機器學習任務中,特別是分類問題:
圖像分類: 在圖像分類任務中,交叉熵損失用於衡量模型預測的圖像類別與真實類別之間的差異。例如,在訓練一個用於識別貓和狗的圖像分類器時,交叉熵損失會衡量模型預測的圖像屬於貓或狗的機率與真實標籤之間的差距。
自然語言處理: 在自然語言處理任務中,交叉熵損失用於訓練語言模型、文本分類器等。例如,在訓練一個語言模型時,交叉熵損失會衡量模型預測的下一個詞的機率與真實詞之間的差距。
語音辨識: 在語音辨識任務中,交叉熵損失用於訓練聲學模型,衡量模型預測的音素或單詞的機率與真實標籤之間的差距。
推薦系統: 在推薦系統中,交叉熵損失可以用於訓練模型,預測用戶可能點擊或購買的商品。例如,模型可以預測用戶點擊某個商品的機率,並使用交叉熵損失來衡量預測結果與真實點擊行為之間的差距。
生成式AI: 在生成式AI模型(如GANs)中,交叉熵損失也扮演重要角色,用於衡量生成器生成的樣本與真實樣本之間的差異,引導生成器生成更逼真的樣本。
常見誤區
與均方誤差 (MSE) 的比較: 交叉熵損失通常比均方誤差更適合分類問題。這是因為交叉熵損失對機率預測的微小變化更敏感,能夠提供更有效的梯度信息,加速模型訓練。均方誤差在分類問題中可能導致梯度消失問題。
適用範圍: 交叉熵損失主要用於分類問題,不適用於迴歸問題。對於迴歸問題,通常使用均方誤差或平均絕對誤差等損失函數。
機率分佈的要求: 交叉熵損失要求模型的輸出是機率分佈,即所有類別的機率之和必須為 1。因此,在應用交叉熵損失之前,通常需要使用 softmax 函數將模型的輸出轉換為機率分佈。
樣本不平衡問題: 在處理樣本不平衡的分類問題時,直接使用交叉熵損失可能會導致模型偏向於多數類別。為了解決這個問題,可以使用加權交叉熵損失,為少數類別賦予更高的權重。
過度自信的問題: 模型有時會過度自信地預測某些類別,導致交叉熵損失很高。可以使用標籤平滑 (Label Smoothing) 等技術來緩解這個問題,讓模型在訓練過程中不要過於相信訓練數據的標籤。
相關術語
常見問題
延伸學習
想看 交叉熵損失 的完整影片教學?前往 美第奇 AI 學院