Entropy

交叉熵和KL散度有什麼區別?

  • July 19, 2018

交叉熵和KL散度都是衡量兩個概率分佈之間距離的工具,但它們之間有什麼區別呢?

H(P,Q)=xP(x)logQ(x)

KL(P|Q)=xP(x)logP(x)Q(x)

此外,事實證明,KL散度的最小化等價於交叉熵的最小化。

我想本能地了解他們。

您將需要一些條件來聲明最小化交叉熵和最小化 KL 散度之間的等價性。我會將您的問題放在使用交叉熵作為損失函數的分類問題的背景下。

讓我們首先回顧一下,熵用於衡量系統的不確定性,其定義為 S(v)=ip(vi)logp(vi),

為了 p(vi) 作為不同狀態的概率 vi 系統的。從信息論的角度來看, S(v) 是消除不確定性所需的信息量。

例如,事件 I I will die within 200 years幾乎是確定的(我們可以解決“幾乎”這個詞的老化問題),因此它的不確定性很低,只需要 的信息the aging problem cannot be solved就可以確定。然而,該事件 II I will die within 50 years比事件更不確定 I ,因此需要更多信息來消除不確定性。這裡熵可以用來量化分佈的不確定性When will I die?,可以看作是對單個事件的不確定性的期望,例如 III .

現在看看分佈 A 和 B 之間的 KL 散度的定義 DKL(AB)=ipA(vi)logpA(vi)pA(vi)logpB(vi),

其中右側的第一項是分佈 A 的熵,第二項可以解釋為分佈 B 對 A 的期望。 DKL 從A的角度描述了B與A的不同之處。值得注意的是 A 通常代表數據,即測量的分佈,以及 B 是理論或假設分佈。這意味著,你總是從你所觀察到的開始。

為了將交叉熵與熵和 KL 散度聯繫起來,我們根據分佈形式化了交叉熵 AB 作為 H(A,B)=ipA(vi)logpB(vi).

從定義中,我們很容易看出 H(A,B)=DKL(AB)+SA.
如果 SA 是一個常數,然後最小化 H(A,B) 相當於最小化 DKL(AB) .

另一個問題自然是熵如何成為常數。在機器學習任務中,我們從一個數據集(表示為 P(D) ) 表示要解決的問題,學習的目的是使模型估計分佈(記為 P(model) ) 盡可能接近問題的真實分佈(表示為 P(truth) ). P(truth) 是未知的,由 P(D) . 因此,在理想世界中,我們期望 P(model)P(D)P(truth)

並最小化 DKL(P(D)P(model)) . 幸運的是,在實踐中 D 是給定的,這意味著它的熵 S(D) 固定為常數。

引用自:https://stats.stackexchange.com/questions/357963