Posted on

交叉熵相關損失函數的比較

交叉熵(cross-entropy)是什麼

交叉熵是一種常用的測量兩個概率分布差異的度量。它可以用來衡量預測模型的輸出結果與真實標籤之間的差異,从而作為訓練模型的損失函數。

交叉熵的计算公式如下:

H(y, y_pred) = – ∑ y log(y_pred)

其中 y 和 y_pred 分别表示真實標籤的概率分布和預測模型的輸出概率分布。

交叉熵有一些特性,使它特别适用于衡量分類問題中模型的預測結果與真實標籤之間的差異:

交叉熵越小,預測模型的輸出結果就越接近真實標籤,模型的預測能力就越強。
当預測模型的輸出結果完全符合真實標籤時,交叉熵等于零。
交叉熵是一個非負數,且在模型預測結果與真實標籤完全不同時,交叉熵最大。

交叉熵相關損失函數

有以下兩種

  • categorical_crossentropy
  • sparse_categorical_crossentropy

兩者都是用於計算分類問題中模型預測結果與真實標籤之間的交叉熵的損失函數。但是它們有一些重要的區別。

1、在 “categorical_crossentropy” 中,標籤必須是一個 one-hot 編碼,即對每個類別都指定一個二元(0/1)標籤。
2、在 “sparse_categorical_crossentropy” 中,標籤可以是一個整數,表示每個類別的索引。在計算交叉熵損失時,會對這些整數標籤進行單熱編碼。

如果你的標籤已經是 one-hot 編碼,則應使用 “categorical_crossentropy”。如果你的標籤是整數,則應使用 “sparse_categorical_crossentropy”。

通常情況下,使用 “sparse_categorical_crossentropy” 可能比較方便,因為標籤可以直接表示為整數,而不需要先對它們進行 one-hot 編碼。但是,使用 “categorical_crossentropy” 也是可以的,只需要將標籤進行 one-hot 編碼即可。

單熱編碼(one-hot encoding)

單熱編碼(one-hot encoding)是一種將類別特徵轉化為向量的方法。

假設有一個有 N 個不同類別的特徵,那麼我们就可以將每個類別都表示為一個 N 维的二元向量,其中只有一個元素為 1,其余元素都為 0。例如,如果類別有 A、B、C 三個可能的取值,那麼我們就可以將它們分别表示為:

A: [1, 0, 0]
B: [0, 1, 0]
C: [0, 0, 1]

通常情况下,單熱編碼通常用於處理分類問題,並且可以用於訓練深度學習模型。它的主要作用是將類別特徵轉化為可以被訓練模型理解的數值型特徵,以便訓練模型。