1. 程式人生 > >交叉熵以及為什麼用交叉熵作為代價函式

交叉熵以及為什麼用交叉熵作為代價函式

作者:知乎使用者來源:知乎著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。熵的本質是夏農資訊量()的期望。現有關於樣本集的2個概率分佈p和q,其中p為真實分佈,q非真實分佈。按照真實分佈p來衡量識別一個樣本的所需要的編碼長度的期望(即平均編碼長度)為:H(p)=。如果使用錯誤分佈q來表示來自真實分佈p的平均編碼長度,則應該是:H(p,q)=。因為用q來編碼的樣本來自分佈p,所以期望H(p,q)中概率是p(i)。H(p,q)我們稱之為“交叉熵”。比如含有4個字母(A,B,C,D)的資料集中,真實分佈p=(1/2, 1/2, 0, 0),即A和B出現的概率均為1/2,C和D出現的概率都為0。計算H(p)為1,即只需要1位編碼即可識別A和B。如果使用分佈Q=(1/4, 1/4, 1/4, 1/4)來編碼則得到H(p,q)=2,即需要2位編碼來識別A和B(當然還有C和D,儘管C和D並不會出現,因為真實分佈p中C和D出現的概率為0,這裡就欽定概率為0的事件不會發生啦)。
可以看到上例中根據非真實分佈q得到的平均編碼長度H(p,q)大於根據真實分佈p得到的平均編碼長度H(p)。事實上,根據Gibbs' inequality可知,H(p,q)>=H(p)恆成立,當q為真實分佈p時取等號。我們將由q得到的平均編碼長度比由p得到的平均編碼長度多出的bit數稱為“相對熵”:D(p||q)=H(p,q)-H(p)=,其又被稱為KL散度(Kullback–Leibler divergence,KLD) Kullback–Leibler divergence。它表示2個函式或概率分佈的差異性:差異越大則相對熵越大,差異越小則相對熵越小,特別地,若2者相同則熵為0。注意,KL散度的非對稱性。
比如TD-IDF演算法就可以理解為相對熵的應用:詞頻在整個語料庫的分佈與詞頻在具體文件中分佈之間的差異性。交叉熵可在神經網路(機器學習)中作為損失函式,p表示真實標記的分佈,q則為訓練後的模型的預測標記分佈,交叉熵損失函式可以衡量p與q的相似性。交叉熵作為損失函式還有一個好處是使用sigmoid函式在梯度下降時能避免均方誤差損失函式學習速率降低的問題,因為學習速率可以被輸出的誤差所控制。PS:通常“相對熵”也可稱為“交叉熵”,因為真實分佈p是固定的,D(p||q)由H(p,q)決定。當然也有特殊情況,彼時2者須區別對待。

為什麼用交叉熵作為代價函式

1.從方差代價函式說起

代價函式經常用方差代價函式(即採用均方誤差MSE),比如對於一個神經元(單輸入單輸出,sigmoid函式),定義其代價函式為:
其中y是我們期望的輸出,a為神經元的實際輸出【 a=σ(z), where z=wx+b 】。在訓練神經網路過程中,我們通過梯度下降演算法來更新w和b,因此需要計算代價函式對w和b的導數:然後更新w、b:w <—— w - η* ∂C/∂w = w - η * a *σ′(z)b <—— b - η* ∂C/∂b = b - η * a * σ′(z)因為sigmoid函式的性質,導致σ′(z)在z取大部分值時會很小(如下圖標出來的兩端,幾近於平坦),這樣會使得w和b更新非常慢(因為η * a * σ′(z)這一項接近於0)。

2.交叉熵代價函式(cross-entropy cost function)

為了克服這個缺點,引入了交叉熵代價函式(下面的公式對應一個神經元,多輸入單輸出):其中y為期望的輸出,a為神經元實際輸出【a=σ(z), where z=∑Wj*Xj+b】與方差代價函式一樣,交叉熵代價函式同樣有兩個性質
  • 非負性。(所以我們的目標就是最小化代價函式)
  • 當真實輸出a與期望輸出y接近的時候,代價函式接近於0.(比如y=0,a~0;y=1,a~1時,代價函式都接近0)。
另外,它可以克服方差代價函式更新權重過慢的問題。我們同樣看看它的導數:可以看到,導數中沒有σ′(z)這一項,權重的更新是受σ(z)−y這一項影響,即受誤差的影響。所以當誤差大的時候,權重更新就快,當誤差小的時候,權重的更新就慢。這是一個很好的性質。

3.總結

  • 當我們用sigmoid函式作為神經元的啟用函式時,最好使用交叉熵代價函式來替代方差代價函式,以避免訓練過程太慢。
  • 不過,你也許會問,為什麼是交叉熵函式?導數中不帶σ′(z)項的函式有無數種,怎麼就想到用交叉熵函式?這自然是有來頭的,更深入的討論就不寫了,少年請自行了解。
  • 另外,交叉熵函式的形式是−[ylna+(1−y)ln(1−a)]而不是 −[alny+(1−a)ln(1−y)],為什麼?因為當期望輸出的y=0時,lny沒有意義;當期望y=1時,ln(1-y)沒有意義。而因為a是sigmoid函式的實際輸出,永遠不會等於0或1,只會無限接近於0或者1,因此不存在這個問題。

4.還要說說:log-likelihood cost

對數似然函式也常用來作為softmax迴歸的代價函式,在上面的討論中,我們最後一層(也就是輸出)是通過sigmoid函式,因此採用了交叉熵代價函式。而深度學習中更普遍的做法是將softmax作為最後一層,此時常用的是代價函式是log-likelihood cost。
In fact, it’s useful to think of a softmax output layer with log-likelihood cost as being quite similar to a sigmoid output layer with cross-entropy cost。
其實這兩者是一致的,logistic迴歸用的就是sigmoid函式,softmax迴歸是logistic迴歸的多類別推廣。log-likelihood代價函式在二類別時就可以化簡為交叉熵代價函式的形式。具體可以參考UFLDL教程

相關推薦

交叉以及為什麼交叉作為代價函式

作者:知乎使用者來源:知乎著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。熵的本質是夏農資訊量()的期望。現有關於樣本集的2個概率分佈p和q,其中p為真實分佈,q非真實分佈。按照真實分佈p來衡量識別一個樣本的所需要的編碼長度的期望(即平均編碼長度)為:H(

深度學習框架TensorFlow學習與應用(三)——使用交叉作為代價函式

二次代價函式(quadratic cost): 其中,C表示代價函式,x表示樣本,y表示實際值,a表示輸出值,n表示樣本的總數。 例如: 假如我們使用梯度下降法(Gradient descent)來調整權值引數的大小,權值w和偏置b的梯

使用交叉作為代價函式

二次代價函式(quadratic cost): 其中,C表示代價函式,x表示樣本,y表示實際值,a表示輸出值,n表示樣本的總數。 例如: 假如我們使用梯度下降法(Gradient descent)來調整權值引數的大小,權值w和偏置b的梯度推導如下:

為什麼交叉作為損失函式

交叉熵(cross entropy)經常用來做機器學習中的損失函式。 要講交叉熵就要從最基本的資訊熵說起。 1.資訊熵 資訊熵是消除不確定性所需資訊量的度量。(多看幾遍這句話) 資訊熵就是資訊的不確定程度,資訊熵越小,資訊越確定。 信息熵=∑x=1n(信息x發生

深度學習到的代價函式------交叉

交叉熵代價函式(Cross-entropy cost function)是用來衡量人工神經網路(ANN)的預測值與實際值的一種方式。與二次代價函式相比,它能更有效地促進ANN的訓練。在介紹交叉熵代價函式之前,本文先簡要介紹二次代價函式,以及其存在的不足。 1. 二次

機器學習基礎(六)—— 交叉代價函式(cross-entropy error)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

交叉代價函式(cross-entropy cost function)

1.從方差代價函式說起 代價函式經常用方差代價函式(即採用均方誤差MSE),比如對於一個神經元(單輸入單輸出,sigmoid函式),定義其代價函式為: 其中y是我們期望的輸出,a為神經元的實際輸出【 a=σ(z), where z=wx+b 】。 在訓練神經網路過程中,我

深度學習基礎--loss與啟用函式--sigmiod與softmax;對數損失函式交叉代價函式

sigmiod與softmax   sigmiod就是邏輯迴歸(解決二分類問題);softmax是多分類問題的邏輯迴歸   雖然邏輯迴歸能夠用於分類,不過其本質還是線性迴歸。它僅線上性迴歸的基礎上,在特徵到結果的對映中加入了一層sigmoid函式(非線性)對映,即先把特徵線性求和,然後使

深度學習框架tensorflow學習與應用5(softmax函式+交叉代價函式和二次代價函式的比較)

import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data # In[3]: #載入資料集 mnist = input_data.read_data_sets("MNIST_data",o

為何邏輯回歸的損失函式交叉而非均方誤差?

為何邏輯回歸的損失函式是用交叉熵而非均方誤差? 前言 邏輯回歸的損失函式推導 使用均方誤差,會出現多個區域性最小值? 圖形 CrossEntropyCost MeanSquareCost 其它例

神經網路代價函式交叉

在此我們以MSE作為代價函式:                        

資訊量,交叉,相對代價函式

1. 資訊量 資訊的量化計算: 解釋如下: 資訊量的大小應該可以衡量事件發生的“驚訝程度”或不確定性: 如果有⼈告訴我們⼀個相當不可能的事件發⽣了,我們收到的資訊要多於我們被告知某個很可能發⽣的事件發⽣時收到的資訊。如果我們知道某件事情⼀定會發⽣,那麼我們就不會接收到資訊。 也就是說,

交叉代價函式(作用及公式推導)

        交叉熵代價函式(Cross-entropy cost function)是用來衡量人工神經網路(ANN)的預測值與實際值的一種方式。與二次代價函式相比,它能更有效地促進ANN的訓練。

理解交叉作為損失函式在神經網路中的作用

交叉熵的作用 通過神經網路解決多分類問題時,最常用的一種方式就是在最後一層設定n個輸出節點,無論在淺層神經網路還是在CNN中都是如此,比如,在AlexNet中最後的輸出層有1000個節點: 而即便是ResNet取消了全連線層,也會在最後有一個1000個節

五、改進神經網路的學習方法(1):交叉代價函式

本部落格主要內容為圖書《神經網路與深度學習》和National Taiwan University (NTU)林軒田老師的《Machine Learning》的學習筆記,因此在全文中對它們多次引用。初出茅廬,學藝不精,有不足之處還望大家不吝賜教。

為什麼交叉可以作為損失函式

通俗的理解: 熵:可以表示一個事件A的自資訊量,就是A包含多少資訊。 KL散度:可以用來表示從事件A的角度來看,事件B有多大不同。 交叉熵:可以用來表示從事件A的角度來看,如何描述事件B。 熵的公式:

理解交叉(cross_entropy)作為損失函式在神經網路中的作用

交叉熵的作用通過神經網路解決多分類問題時,最常用的一種方式就是在最後一層設定n個輸出節點,無論在淺層神經網路還是在CNN中都是如此,比如,在AlexNet中最後的輸出層有1000個節點: 而即便是ResNet取消了全連線層,也會在最後有一個1000個節點的輸出層: 一般情況下

交叉H(p||q)代價函式

轉載地址:http://blog.csdn.net/u012162613/article/details/44239919 1.從方差代價函式說起 代價函式經常用方差代價函式(即採用均方誤差MSE),比如對於一個神經元(單輸入單輸出,sigmoid函式),定義

交叉代價函式(作用及公式推導

交叉熵代價函式(Cross-entropy cost function)是用來衡量人工神經網路(ANN)的預測值與實際值的一種方式。與二次代價函式相比,它能更有效地促進ANN的訓練。在介紹交叉熵代價函式之前,本文先簡要介紹二次代價函式,以及其存在的不足。 1. 二次

資訊(夏農),相對(KL散度), 交叉 三者的對比以及 吉布斯不等式

各種各樣資訊科學中,無論是通訊還是大資料處理,各種“熵”是非常重要的,因為它可以度量隨機變數不確定度,量化資訊量的大小。 資訊熵(夏農熵) 首先複習一下資訊熵(夏農熵),輔助我們對相對熵和交叉熵的理解。 對於一個隨機變數XX,其可能的取值分別為X={x