機器學習中的信息熵 、交叉熵 、 相對熵 、KL散度 、 Wasserstein距離【收藏】

學習更多機器學習深度學習內容見 望江智庫 yuanxiaosc.github.io/git

概念

自信息:符合分佈 P 的某一事件 x 出現,傳達這條信息所需的最小信息長度爲自信息,表達式爲:github

I(x)=log\frac{1}{p(x)}

熵:從分佈 P 中隨機抽選一個事件,傳達這條信息所需的最優平均信息長度爲香農熵,表達式爲:算法

H(P)=\sum_xP(x)log{\frac{1}{P(x)}}

交叉熵:用分佈 P 的最佳信息傳遞方式來傳遞分佈 Q 中隨機抽選的一個事件,所需的平均信息長度爲交叉熵,表達式爲:網絡

H_p(Q)=\sum_xQ(x)log\frac{1}{P(x)}

KL 散度,用分佈 P 的最佳信息傳遞方式來傳達分佈 Q,比用分佈 Q 本身的最佳信息傳遞方式來傳達分佈 Q,平均多耗費的信息長度爲 KL 散度,表達爲 D_p(Q)KL(Q||P),KL 散度衡量了兩個分佈之間的差別。app

D_p(Q)=KL(Q||P)=\sum_xQ(x)log\frac{1}{P(x)}-\sum_xQ(x)log\frac{1}{Q(x)}=\sum_xQ(x)log\frac{Q(x)}{P(x)}

D_p(Q)KL(Q||P) 涉及兩個分佈:機器學習

  • 要傳達的信息來自哪一個分佈,答案是 Q
  • 信息傳遞的方式由哪一個分佈決定,答案是 P

KL 散度概念解讀

由 KL 散度的公式可知,分佈 Q 裏可能性越大的事件,對 D_P(Q) 影響力越大。若是想讓 D_P(Q) 儘可能小,就要優先關注分佈 Q 裏的常見事件(假設爲 x),確保它們在分佈 P 裏不是特別罕見。函數

由於一旦事件 x 在分佈 P 裏罕見,意味着在設計分佈 P 的信息傳遞方式時,沒有着重優化傳遞 x 的成本,傳達事件 x 所需的成本,log(1/P(x)) 會特別大。因此,當這一套傳遞方式被用於傳達分佈 Q 的時候,咱們會發現,傳達常見事件須要的成本特別大,總體成本也就特別大。性能

相似地,想讓 D_Q(P) 特別小,就要優先考慮分佈 P 裏那些常見的事件們了。這時,分佈 Q 裏的常見事件,就再也不是咱們的關注重點。學習

信息熵

熵是傳輸一個隨機變量狀態值所需的比特位的下界測試

信息論之父 C. E. Shannon 在 1948 年發表的論文「通訊的數學理論( A Mathematical Theory of Communication )」中, Shannon 指出,任何信息都存在冗餘,冗餘大小與信息中每一個符號(數字、字母或單詞)的出現機率或者說不肯定性有關。 Shannon 借鑑了熱力學的概念,把信息中排除了冗餘後的平均信息量稱爲「信息熵」,並給出了計算信息熵的數學表達式。

信息熵基本內容

一般,一個信源發送出什麼符號是不肯定的,衡量它能夠根據其出現的機率來度量。機率大,出現機會多,不肯定性小;反之就大。 不肯定性函數 f 是機率 P 的單調遞降函數;兩個獨立符號所產生的不肯定性應等於各自不肯定性之和,即f(P1,P2)=f(P1)+ f(P2),這稱爲可加性。同時知足這兩個條件的函數f是對數函數,即 f(P)=log(\dfrac{1}{p})=-log(p)

在信源中,考慮的不是某一單個符號發生的不肯定性,而是要考慮這個信源全部可能發生狀況的平均不肯定性。若信源符號有n種取值:U1…Ui…Un,對應機率爲:P1…Pi…Pn,且各類符號的出現彼此獨立。這時,信源的平均不肯定性應當爲單個符號不肯定性-logPi的統計平均值(E),可稱爲信息熵,即 H(U)=E[-logp_i]=-\sum_{i=1}^N p_ilogp_i,式中對數通常取2爲底,單位爲比特。

當全部的 p(x_i) 值都相等,且值爲 p(x_i)=\dfrac{1}{N} 時,熵取得最大值。H(U) = log(N)

交叉熵

交叉熵(Cross Entropy)是Shannon信息論中一個重要概念,主要用於度量兩個機率分佈間的差別性信息。語言模型的性能一般用交叉熵和複雜度(perplexity)來衡量。交叉熵的意義是用該模型對文本識別的難度,或者從壓縮的角度來看,每一個詞平均要用幾個位來編碼。複雜度的意義是用該模型表示這一文本平均的分支數,其倒數可視爲每一個詞的平均機率。

交叉熵的介紹

在信息論中,交叉熵是表示兩個機率分佈p,q,其中p表示真實分佈,q表示非真實分佈,在相同的一組事件中,其中,用非真實分佈q來表示某個事件發生所須要的平均比特數。從這個定義中,咱們很難理解交叉熵的定義。下面舉個例子來描述一下: 假設如今有一個樣本集中兩個機率分佈p,q,其中p爲真實分佈,q爲非真實分佈。假如,按照真實分佈p來衡量識別一個樣本所須要的編碼長度的指望爲:

H(p)=\sum_i{p(i)}log(\dfrac{1}{p(i)})

可是,若是採用錯誤的分佈q來表示來自真實分佈p的平均編碼長度,則應該是:

H(p,q)=\sum_i{p(i)}log(\dfrac{1}{q(i)})

此時就將H(p,q)稱之爲交叉熵。交叉熵的計算方式以下:

對於離散變量採用如下的方式計算:H(p,q)=\sum_x p(x)log(\dfrac{1}{q(x)})

對於連續變量採用如下的方式計算:-\int _XP(x)logQ(x)dx=E_p[-logQ]

注意:$$E_{x\sim p(x)}[f(x)]=\int{f(x)p(x)}dx \approx \dfrac{1}{n}\sum_{i=1}^nf(x_i), x_i \sim p(x) $$

交叉熵的應用

  1. 交叉熵可在神經網絡(機器學習)中做爲損失函數,p表示真實標記的分佈,q則爲訓練後的模型的預測標記分佈,交叉熵損失函數能夠衡量p與q的類似性。交叉熵做爲損失函數還有一個好處是使用sigmoid函數在梯度降低時能避免均方偏差損失函數學習速率下降的問題,由於學習速率能夠被輸出的偏差所控制。
  2. 在特徵工程中,能夠用來衡量兩個隨機變量之間的類似度。
  3. 在語言模型中(NLP)中,因爲真實的分佈p是未知的,在語言模型中,模型是經過訓練集獲得的,交叉熵就是衡量這個模型在測試集上的正確率。

相對熵

相對熵,又稱KL散度( Kullback–Leibler divergence),是描述兩個機率分佈P和Q差別的一種方法。它是非對稱的,這意味着D(P||Q) ≠ D(Q||P)。特別的,在信息論中,D(P||Q)表示當用機率分佈Q來擬合真實分佈P時,產生的信息損耗,其中P表示真實分佈,Q表示P的擬合分佈。 有人將KL散度稱爲KL距離,但事實上,KL散度並不知足距離的概念,由於:(1)KL散度不是對稱的;(2)KL散度不知足三角不等式。

相對熵的定義

對熵(relative entropy)又稱爲KL散度(Kullback–Leibler divergence,簡稱KLD),信息散度(information divergence)。 設 P(x)Q(x) 是兩個取值的兩個離散機率分佈,則 PQ 的相對熵爲:

D(P||Q)=\sum P(x)log(\dfrac{P(x)}{Q(x)})

對於連續的隨機變量,定義爲:

D(P||Q)=\int P(x)log(\dfrac{P(x)}{Q(x)})dx

相對熵是兩個機率分佈 P(x)Q(x) 差異的非對稱性的度量。

相對熵物理意義

相對熵是用來度量使用基於 Q 的編碼來編碼來自 P 的樣本平均所需的額外的比特個數。 典型狀況下,P 表示數據的真實分佈,Q 表示數據的理論分佈,模型分佈,或 P 的近似分佈。 根據shannon的信息論,給定一個字符集的機率分佈,咱們能夠設計一種編碼,使得表示該字符集組成的字符串平均須要的比特數最少。假設這個字符集是 X ,對 x \in X ,其出現機率爲 P,那麼其最優編碼平均須要的比特數等於這個字符集的熵:

H(p)=\sum_{x \in X}{P(x)}log(\dfrac{1}{P(x)})

在一樣的字符集上,假設存在另外一個機率分佈 Q,若是用機率分佈 P 的最優編碼(即字符 x 的編碼長度等於 log(\dfrac{1}{p(x)})),來爲符合分佈 Q 的字符編碼,那麼表示這些字符就會比理想狀況多用一些比特數。相對熵就是用來衡量這種狀況下平均每一個字符多用的比特數,所以能夠用來衡量兩個分佈的距離,即:

D_{KL}(P||Q)=-\sum_{x \in X}{P(x)}log(\dfrac{1}{P(x)}) + \sum_{x \in X}{P(x)}log(\dfrac{1}{Q(x)})=\sum_{x\in X} P(x)log(\dfrac{P(x)}{Q(x)})

相對熵的性質

相對熵(KL散度)有兩個主要的性質,以下: (1)不對稱性 儘管KL散度從直觀上是個度量或距離函數,但它並非一個真正的度量或者距離,由於它不具備對稱性,即 (2)非負性 相對熵的值爲非負值,即 ,證實可用吉布斯不等式。

吉布斯不等式 若 \sum_{i=1}^{n}p_i=\sum_{i=1}^{n}q_i=1,且 p_i, q_i \in (0,1],則有: -\sum_{i=1}^{n}p_ilog(p_i)\leq -\sum_{i=1}^{n}p_ilog(q_i),等號當且僅當 \forall i, p_i=q_i

相對熵的應用

相對熵能夠衡量兩個隨機分佈之間的距離,當兩個隨機分佈相同時,它們的相對熵爲零,當兩個隨機分佈的差異增大時,它們的相對熵也會增大。因此相對熵(KL散度)能夠用於比較文本的類似度,先統計出詞的頻率,而後計算相對熵。另外,在多指標系統評估中,指標權重分配 [2] 是一個重點和難點,也經過相對熵能夠處理。

JS散度(Jensen–Shannon divergence)

JS散度度量了兩個機率分佈的類似度,基於KL散度的變體,解決了KL散度非對稱的問題。通常地,JS散度是對稱的,其取值是0到1之間。定義以下:

JSD(P_1||P_2)=\dfrac{1}{2}KL(P_1||\dfrac{P_1+P_2}{2})+\dfrac{1}{2}KL(P_2||\dfrac{P_1+P_2}{2})

KL散度和JS散度度量的時候有一個問題:若是兩個分配P,Q離得很遠,徹底沒有重疊的時候,那麼KL散度值是沒有意義的,而JS散度值是一個常數。這在學習算法中是比較致命的,這就意味這這一點的梯度爲0。梯度消失了。

Wasserstein距離


參考文獻

[1] ajiao_nihao. 交叉熵[DB/OL]. baike.baidu.com/item/交叉熵/89…, 2018-08-28.

[2] 蒙牛純爺們. 相對熵[DB/OL]. baike.baidu.com/item/相對熵, 2018-08-28.

[3] miaoweijun. 信息熵[DB/OL]. baike.baidu.com/item/信息熵, 2018-08-28.

[4] 維基百科. Jensen–Shannon divergence[DB/OL]. en.wikipedia.org/wiki/Jensen…, 2018-08-28.

[5] CodeTutor. 機率論——Wasserstein距離[DB/OL]. blog.csdn.net/victoriaw/a…, 2018-08-28.

[6] 邱陸陸. 如何理解KL散度的不對稱性[DB/OL]. www.jiqizhixin.com/articles/02…, 2018-11-21.

相關文章
相關標籤/搜索