交叉熵和KL散度有什麼區別?
交叉熵和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就可以確定。然而,該事件 III will die within 50 years比事件更不確定 I ,因此需要更多信息來消除不確定性。這裡熵可以用來量化分佈的不確定性When will I die?,可以看作是對單個事件的不確定性的期望,例如 I 和 II .現在看看分佈 A 和 B 之間的 KL 散度的定義 DKL(A∥B)=∑ipA(vi)logpA(vi)−pA(vi)logpB(vi),
其中右側的第一項是分佈 A 的熵,第二項可以解釋為分佈 B 對 A 的期望。 DKL 從A的角度描述了B與A的不同之處。值得注意的是 A 通常代表數據,即測量的分佈,以及 B 是理論或假設分佈。這意味著,你總是從你所觀察到的開始。為了將交叉熵與熵和 KL 散度聯繫起來,我們根據分佈形式化了交叉熵 A 和 B 作為 H(A,B)=−∑ipA(vi)logpB(vi).
從定義中,我們很容易看出 H(A,B)=DKL(A∥B)+SA.如果 SA 是一個常數,然後最小化 H(A,B) 相當於最小化 DKL(A∥B) .另一個問題自然是熵如何成為常數。在機器學習任務中,我們從一個數據集(表示為 P(D) ) 表示要解決的問題,學習的目的是使模型估計分佈(記為 P(model) ) 盡可能接近問題的真實分佈(表示為 P(truth) ). P(truth) 是未知的,由 P(D) . 因此,在理想世界中,我們期望 P(model)≈P(D)≈P(truth)
並最小化 DKL(P(D)∥P(model)) . 幸運的是,在實踐中 D 是給定的,這意味著它的熵 S(D) 固定為常數。