0. 總結 (本文目的是讨論理解一下相對熵(KL)與交叉熵(cross-entropy)的關系,以及相應的損失函數)
熵的本質: 信息量 log(1/p)的期望 的期望。
交叉熵:
物理意義: 用模拟分布Q去編碼真實分布P所需要的平均編碼長度(比特個數底數為2時
交叉熵損失函數:
(這裡的連加sigma 是把一個樣本分布的所有概率下的信息量進行的連加,例如我們就求一句話分類的損失, 假設類别有3個, 那麼就會連加3次,屬于第一個類别的概率。。 輸入第二個類别的概率 。。)
相對熵:
物理意義: 用模拟分布Q去編碼真實分布P所需要的額外比特個數。
熵的重要性質: (摘錄)
**單調性**,即發生概率越高的事件,其所攜帶的信息熵越低。極端案例就是“太陽從東方升起”,因為為确定事件,所以不攜帶任何信息量。從信息論的角度,認為這句話沒有消除任何不确定性。 **非負性**,即信息熵不能為負。這個很好理解,因為負的信息,即你得知了某個信息後,卻增加了不确定性是不合邏輯的。 **累加性**,即多随機事件同時發生存在的總不确定性的量度是可以表示為各事件不确定性的量度的和。
1.重點1. 信息熵 2. 交叉熵 3. 相對熵 4. 交叉熵與相對熵關系 5. 相對熵與交叉熵的損失函數
2. 自信息與信息熵:
信息熵:
(E表示期望)
物理意義: 編碼一個變量分布的最少比特數(期望比特數)。 實際意義: 事件發生的概率越高, 信息熵越小。例如 p(xi) 的概率是1,對于X的取值隻能是xi ,則H(x)=0.
為什麼是log?log的底應該是多少?
底為2, 因為計算機中是0,1編碼,但是底設置為多少都可以根據需求而定
例子:
投擲一次, 要确定是不是A需要詢問1次, 确定是不是B需要問2次(先問是不是A再問是不是B) 詢問C問3次,詢問D也是3次 所以編碼有 1*1/2 2*1/4 3/8 3/8 = 7/4 (該例子原理引用自知乎某文因為是之前看過記憶下來的沒有找到reference地址抱歉)
3.交叉熵
物理意義:
用模拟分布Q去編碼真實分布P所需要的平均編碼長度比特個數
例子:
假設 X~(A,B,C,D) 數據集,真實分布(1/2,1/2,0,0) 那麼 H(X)=1/2*log(1/0.5) 1/2*log(1/0.5)=1 如果我們模型預測的分布Q滿足 (1/4,1/4,1/4,1/4) ,用這個分布去模拟真實分布:
這裡是2其實我們自然希望我們的模型的分布去編碼真實分布時可以最小, 但是最小并不一定是0,在這個例子裡我們就希望最小為1(當然也不可能比1小). 那麼在很多時候交叉熵損失函數為什麼都要逼近0呢?那是因為在這時候我們的H(p)=0 例如P滿足分布(1,0,0)是一個3分類問題,這時候H(P)=(1*log(1/1) 0 0)=0。 可以看到上例中根據非真實分布q得到的平均編碼長度H(p,q)大于根據真實分布p得到的平均編碼長度H(p)。 那麼H(p,q)-H(p)的物理意義就是當用模拟分布預測的編碼長度減去真實編碼長度就是 相對熵。 (相對熵: 用錯誤分布去編碼真實分布所消耗的額外比特數)
3.1 交叉熵損失函數:
假如樣本用來描述積極與消極,p真實樣本符合(1,0)也就是p(積極)=1,p(消極=0) 模型預測分布時(0.6,0.4) q(積極)=0.6 q(消極)=0.4則有損失函數如下
其中 M:表示類别的數量。 p:表示真實樣本分布, q:表示模型預測分布。 上式中 p(x1) 表示當前樣本輸入第一個類目的概率, (例如判斷一句話是 積極,消極還是中性,那麼M就是3 表示每個樣本有3種分布) (注意發現有些同學誤以為這裡的sigma是把很多句話的損失連加起來,不是哈, 這裡連加是把一句話所屬的不同分布的信息熵連加得到了一句話的損失, 如果有很多句話,進來是一個矩陣,每一行代表一句話,出去應該是一個列向量, 每一個元素代表每一句話的損失,然後再求個平均損失即可。)
當然上面二分類問題的損失函數等同于下面多分類的損失函數,隻不過是把下面的$\Sigma$進行了展開。 例如判斷一句話:真實分布P X~{1,0} 而我們 預測分布Q X~{1/2,1/2}
當然了我們也可以 設置真實分布時P X~{1/2,1/2} 預測分布Q 是(1,0)帶入公式會得到 -log(0) 趨于無線大。
4.相對熵: Kullback-Leibler divergence,KLD KL散度
相對熵: 用錯誤分布(或者是模型分布)去編碼真實分布所消耗的額外比特數。 根據Gibbs' inequality可知,H(p,q)>=H(p)恒成立,當q為真實分布p時取等号。我們将由q得到的平均編碼長度比由p得到的平均編碼長度多出的bit數稱為 相對熵。 意義:它表示2個函數或概率分布的差異性:差異越大則相對熵越大,差異越小則相對熵越小,特别地,若2者相同則熵為0
相對熵的性質:
4.1. 相對熵損失函數:
為啥不常用呢?其實主要是因為很多時候我們的真實分布都是分類問題例如: p樣本符合分布(1,0,0,0) 4分類問題, 此時H(P)=0 所以相對熵損失函數在很多問題上 相對熵就是交叉熵損失函數。(大家可以想一想H(p)=0的場景)
5. 損失函數的應用例子:為了方便理解機器學習中損失函數輸入,輸出以及計算過程,這裡給出一個自己假設的案例。 場景: 我們要對句子進行情感分類, 一個句子可以分成3個不同類目:{積極,中性,消極} 一個batch有2個句子,matrix(batch,embedding)經過一系列網絡(例如lstm )再經過一個softmax之後得到如下矩陣:Q=
交叉熵損失函數:
相對熵損失函數:
結論:
其實我們用的是相對熵損失函數,隻不過在很多情況下,H(P)=0 簡化成了交叉熵。 但是理論上來看,我們更關注的是 模型分布編碼真實分布 與 真實分布編碼真實分布 的差距,這個差距是相對熵也就是KL div
由于匆忙尚有幾個問題沒有整理放出來:
歡迎讨論,指正,引用(請注明出處)。
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!