交叉熵損失函數
熵的本質是香濃信息量\(\log(\frac{1}{p})\)的期望
既然熵的本質是香濃信息量\(\log(\frac{1}{p})\)的期望,那么便有
一個時間結果的出現概率越低,對其編碼的bit的長度就越長。熵的本質的另一個解釋是編碼方案完美時,最短平均編碼長度的是多少
現在關於樣本集的2個概率分布\(p\)和\(q\),其中\(p\)為真實分布,\(q\)為非真實分布,通常是預測結果,比如在深度學習的分類中,像手寫數字識別,會有10個類別,那么對於一個給定的圖片\(x\),那么經過深度模型預測得到的結果應該是一個分布,比如\(q(0)=0.0,q(1) = 0.1,q(2) = 0.1, q(3) = 0.8,q(4)=0,\dots\),這就是一個分布,最后肯定會選擇概率最大的3作為輸出。但是這是預測的概率分布,實際的分布應該是\(p(0)=0,p(1)=0,p(2)=0,p(3)=1,p(4)=0,\dots\)。於是,我們想做的就是讓q的分布與\(p\)的分布一樣。
在概率論或信息論中,KL散度( Kullback–Leibler divergence),又稱相對熵(relative entropy),是描述兩個概率分布P和Q差異的一種方法。它是非對稱的,這意味着D(P||Q) ≠ D(Q||P)。特別的,在信息論中,D(P||Q)表示當用概率分布Q來擬合真實分布P時,產生的信息損耗,其中P表示真實分布,Q表示P的擬合分布。簡單的說,KL散度或者相對熵它是用來度量兩個分布\(P,Q\)之間的距離的,也就是說,距離越大,兩個分布差距最大。於是。在我們的模型訓練中, 我們要做的就是不斷的調整參數,使得預測得到的分布與真實分布盡可能的一致。那么,這與交叉熵有什么關系呢?
相對熵的數學定義如下
展開后有
我們暫且表示為
而\(H(p_i)\)是一個真實分布的期望,因此與訓練無關,是一個常數項。於是,最小化相對熵便轉為最小化\(H(p_i,q_i)=-\sum_i p(i)\log q(i)\)
這個就是交叉熵。
一句話說,就是,最小化誤差可以通過最小化相對熵(KL散度)來實現,而最小化相對熵,則可以通過最小化交叉熵來實現,所以,交叉熵損失函數就這么來了。。。。。。。。。