1. 程式人生 > >理解交叉熵損失(Cross-Entropy)

理解交叉熵損失(Cross-Entropy)

理解交叉熵損失

字符集編碼

字符集編碼的意義在於將資料集進行有效壓縮。
假設在一個文件中只出現了a、b、c、d、e 5種字元,其佔比如下表:

字元 a b c d e
佔比 0.1 0.1 0.2 0.2 0.4

最容易想到的編碼方式,5個字元,需要3個bit位,故:

字元 a b c d e 單個字元編碼長度期望值
編碼 000 001 010 011 100 3

但是這並不是最優的編碼方式,例如:

字元 a b c d e 單個字元編碼長度期望值
編碼 1111 1110 110 10 0 2.2

這種編碼方式的特點就在於,佔比高的字元編碼長度儘可能短,同時要滿足不能出現歧義的限制條件。
那麼給定一個數據集之後,究竟每個字元編碼是什麼,編碼應該多長呢?
給定字符集X={x}, 滿足p(x)的概率分佈,設字元x的最優編碼長度為l(x),設H(X)為字元編碼長度期望,則根據夏農資訊理論,最優編碼情況下有以下結論:

l(x)=log1p(x)
H(X)=xp(x)log1p(x)
字符集編碼先介紹這麼多,一會兒會用到。

相對熵

相對熵是一種用來評價兩種概率分佈差異程度的方法。
給定字符集X

={x},你通過某種方法預測其概率分佈為q(x),但是其真實的概率分佈為p(x),那麼怎麼評價二者的差異呢?如何評價q(x)偏離真實分佈p(x)的程度呢?
可以通過字符集編碼長度與最優編碼方案下的編碼長度的差來度量。
最優編碼方案下的字元編碼長度為:

l(x)=log1p(x)
根據預測概率分佈q(x)進行編碼,字元編碼長度為:
l(x)=log1q(x)
最優編碼方案下字元編碼長度期望為:
H(X)=xp(x)log1p(x)
根據預測概率分佈q(x)進行編碼,實際獲得的編碼長度期望為:
H(X)=xp(x)log1q(x)
很顯然:
H(X)>H(X)
因為最優編碼是編碼長度期望最短的;
定義:
D
KL
(P||Q)=H(X)H(X)

可得:
DKL(P||Q)=xp(x)log(p(x))xp(x)log(q(x))
DKL(P||Q)就是相對熵,從公式可以看出,相對熵是不對稱的。

交叉熵

交叉熵是從相對熵而來的。
在機器學習領域,多分類問題很常見,在很多深度學習模型當中,網路的輸出層就是一個softmax層,對於N分類問題,輸出是一個N維的向量,向量元素介於[0,1]之間,且元素累加和為1(這是softmax性質所決定的);
softmax層輸出向量視為預測類別的概率分佈q(x),用真實類別標籤構造真實的類別概率分佈p(x)(例如,令真實類別概率為1,其餘類別概率為0),那麼相對熵DKL(P||Q)就可以評價預測結果q(x)的好壞了,我們只需要最小化它就好了。
既然可以用相對熵作為代價函式,那為什麼還要引出交叉熵?
因為在DKL(P||Q)的公式中:

DKL(P||Q)=xp(x)log(p(x))xp(x)log(q(x))
xp(x)log(p(x))不涉及預測結果q(x),是一個常數項,可以把這一項去掉簡化模型。
於是只剩下:

相關推薦

理解交叉損失Cross-Entropy

理解交叉熵損失 字符集編碼 字符集編碼的意義在於將資料集進行有效壓縮。 假設在一個文件中只出現了a、b、c、d、e 5種字元,其佔比如下表: 字元 a b c d e 佔比 0.1 0.1 0.2

【聯絡】二項分佈的對數似然函式與交叉cross entropy損失函式

1. 二項分佈 二項分佈也叫 0-1 分佈,如隨機變數 x 服從二項分佈,關於引數 μ(0≤μ≤1),其值取 1 和取 0 的概率如下: {p(x=1|μ)=μp(x=0|μ)=1−μ 則在 x

二項分佈的對數似然函式與交叉cross entropy損失函式的聯絡

       今天覆習Logistic迴歸的時候涉及到二項分佈的求最大似然解,突然發現這個對數似然函式熟悉,似曾相識,不就是交叉熵損失函式麼,難道這僅僅是巧合,不能夠。先看下這個推導。 1. 二項分佈(0-1分佈): 2. 最大似然估計法: 3.

Tensorflow中的交叉Cross Entropy

Tensorflow中的交叉熵(Cross Entropy) Cross Entropy (Sigmoid) 適用於二分類,輸入函式的logits和labels應當是一維的。如果輸入One-Hot過的logits,會被當做多個一維分別計算。注意不要將已經通過sigmoid計算得到的數

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

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

交叉代價函式cross-entropy cost function

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

【Kaggle-MNIST之路】CNN結構再改進+交叉損失函式

簡述 這裡再添加了一個卷積層。用一個kernal=4的卷積層做一個卷積之後,再做對映。 基於之前的一個版本 【Kaggle-MNIST之路】CNN結構改進+改進過的損失函式(五) 成績:0.9898 排名:1000+ 程式碼 注意

深度學習基礎系列| 深入理解交叉函式及其在tensorflow和keras中的實現

  在統計學中,損失函式是一種衡量損失和錯誤(這種損失與“錯誤地”估計有關,如費用或者裝置的損失)程度的函式。假設某樣本的實際輸出為a,而預計的輸出為y,則y與a之間存在偏差,深度學習的目的即是通過不斷地訓練迭代,使得a越來越接近y,即 a - y →0,而訓練的本質就是尋找損失函式最小值的過程。   常見的

softmax + cross-entropy交叉損失函式詳解及反向傳播中的梯度求導

相關 正文 在大多數教程中, softmax 和 cross-entropy 總是一起出現, 求梯度的時候也是一起考慮. 我們來看看為什麼. 關於 softmax 和 cross-entropy 的梯度的求導過程, 已經在上面的兩篇文章中分別給出, 這裡

Python和PyTorch對比實現多標籤softmax + cross-entropy交叉損失及反向傳播

相關 關於 softmax + cross-entropy 的詳細介紹, 請參考 : BrightLamp. 多標籤softmax + cross-entropy交叉熵損失函式詳解及反向傳播中的梯度求導[EB/OL]. https://blog.csdn.net

《TensorFlow實戰Google深度學習框架》——4.2.1 經典損失函式交叉、均方差

目錄 1、交叉熵 1、交叉熵 交叉熵是分類問題中使用比較廣的一種損失函式,刻畫了兩個概率分佈之間的距離。 給定兩個概率分佈p和q,通過q來表示p的交叉熵為: 交叉熵刻畫的是兩個概率分佈之間的距離,然而神經網路的輸出卻不一定是一個概率分佈。Softmax迴歸就

2線性分類器基本原理-2.3線性分類器之SoftMax和交叉損失(Cross-Entropy)

影象分類器模型的整體結構: 交叉熵(Cross-Entropy)損失 和 SoftMax SVM是最常用的兩個分類器之一,而另一個就是Softmax分類器,它的損失函式與SVM損失函式不同。對於學習過二元邏輯迴歸分類器的讀者來說,SoftMax分類器就可

瑞麗renyi entropy

分布 math ice 離散 fcc end 推廣 ati 技術 在信息論中,Rényi熵是Hartley熵,Shannon熵,碰撞熵和最小熵的推廣。熵能量化了系統的多樣性,不確定性或隨機性。Rényi熵以AlfrédRényi命名。在分形維數估計的背景下,Rényi熵構成

關於對比損失contrasive loss理解相似度越大越相似的情況

def contro_loss(self): ''' 總結下來對比損失的特點:首先看標籤,然後標籤為1是正對,負對部分損失為0,最小化總損失就是最小化類內損失(within_loss)部分, 讓s逼近margin的過程,是個增大的過程;標籤為0

【尋優演算法】交叉驗證Cross Validation引數尋優的python實現:多引數尋優

【尋優演算法】交叉驗證(Cross Validation)引數尋優的python實現:多引數尋優 一、網格搜尋原理 二、網格搜尋+交叉驗證用於多引數尋優的python實現 1、訓練模型及待尋優引數 2、直接迴圈巢狀實現網格搜尋 + cros

【尋優演算法】交叉驗證Cross Validation引數尋優的python實現:單一引數尋優

【尋優演算法】交叉驗證(Cross Validation)引數尋優的python實現:單一引數尋優 一、交叉驗證的意義 二、常用的交叉驗證方法 1、Hold one method 2、K-flod CV 3、Leave-One-Ou

交叉驗證Cross-validation

AI---訓練集(train set) 驗證集(validation set) 測試集(test set) 在有監督(supervise)的機器學習中,資料集常被分成2~3個即: 訓練集(train set) 驗證集(validation set) 測試集(test set

【機器學習】交叉驗證cross-validation

1、什麼是交叉驗證  交叉驗證(Cross validation),交叉驗證用於防止模型過於複雜而引起的過擬合。有時亦稱迴圈估計, 是一種統計學上將資料樣本切割成較小子集的實用方法。於是可以先在一個子集上做分析, 而其它子集則用來做後續對此分析的確認及驗證。 一開始的子集被稱

[轉載] 交叉驗證Cross Validation簡介

一、訓練集 vs. 測試集 在模式識別(pattern recognition)與機器學習(machine learning)的相關研究中,經常會將資料集(dataset)分為訓練集(training set)跟測試集(testing set)這兩個子集,前者用以建立

模型評估和超引數調整——交叉驗證 cross validation

讀《python machine learning》chapt 6 Learning Best Practices for Model Evaluation and Hyperparameter Tuning【主要內容】(1)獲得對模型評估的無偏估計(2)診斷機器學習演算法的