熵 (entropy) 這一表述最先由熱力學主要奠定人、德國物理學家克勞修斯 (Rudolf Julius Emanuel Clausius) 提出,定義爲可逆過程當中輸入熱量相對於溫度的變化率,即
$$dS = \frac {dQ}{T}$$
上述表示形式與現在咱們所熟知的信息熵存在着較大差別,由於香農 (Claude E.Shannon) 在信息論中所定義的熵引自玻爾茲曼 (Ludwig E.Boltzmann) 所提出的熵的統計物理學解釋。玻爾茲曼創建了熵 S 和系統宏觀態所對應的可能的微觀態數目 W 的聯繫,即 $S\propto lnW$。然後普朗克 (Max Karl Ernst Ludwig Planck) 引入比例係數 $k_{B}$,獲得普朗克-玻爾茲曼公式
$$S = k_{B}\cdot lnW$$
上述公式的等價表述形式爲
$$S=k_{B}\sum_{i}p_{i}ln{\frac{1}{p_{i}}}$$
其中 i 標記了全部可能出現的微觀態,$p_{i}$ 表示可能微觀態出現的機率。從上述公式能夠看出,此處用機率的倒數,即 $\frac{1}{p_{i}}$,表示對應的可能的微觀態數目。一種不太嚴謹可是直觀的解釋是對於一個出現機率爲$p_{i}$的微觀態,能夠認爲其包含的微觀態數目是$\frac{1}{p_{i}}$。由此咱們能夠引出信息論當中的香農熵
$$S=k\cdot\sum_{i=1}^{n}p_{i}log_{2}\frac{1}{p_{i}}$$算法
至於此處爲什麼對數底數從 e 變成了 2,從數學角度來看區別甚微,但香農是基於另外一種視角在這裏定義了一種度量,用擲硬幣來類比即微觀態數目 $\frac{1}{p_{i}}$ 所對應的硬幣的數量。具體地,若微觀態數量爲 $2^{3}$, 則對應 3 枚硬幣(每一枚硬幣都有正反兩種可能,共可有序給出 8 種組合),所對應硬幣數量越多,則熵越大,所以能夠理解爲將「硬幣」做爲熵的度量。事實上,這枚「硬幣」的單位被稱比特 (bit),而之因此取以 2 爲底的對數,是由於計算機當中的信息存儲方式是「0」和「1」,3 bit的信息意味着須要 3 位二進制數才能徹底肯定。以漢字爲例,整個漢語體系共包含經常使用字7000字左右,若全部經常使用字的使用是等機率的,則 $s=log_{2}7000\approx 13$,這意味着整個漢字體系包含約 13 bits的信息量。但7000字等頻率出現是假設中的狀況,生活中高頻使用的漢字僅佔百分之十左右,所以漢字的比特數通常只有 5 bits左右。即一部十萬字的小說,包含信息約 500000 bits,也就是 0.0625 MB。(可是文件的實際大小視具體壓縮算法而定,差別可能很大)。網絡
對於帶約束函數 $y=\sum_{i=1}^{n}p_{i}log_{2}\frac{1}{p_{i}},s.t. \sum_{i=1}^{n}p_{i}=1$,構造拉格朗日函數 $L(p_{1},p_{2},...,p_{n},\lambda)=\sum_{i=1}^{n}p_{i}log_{2}\frac{1}{p_{i}}-\lambda(\sum_{i=1}^{n}p_{i}-1)$ 並求其知足 KKT 條件的解
$$\left\{\begin{matrix} \frac{\partial L}{\partial p_{i}}=log_{2}\frac{1}{p_{i}}-\frac{1}{ln2}-\lambda=0 (i=1,2...,n) \\\frac{\partial L}{\partial \lambda}=\sum_{i=1}^{n}p_{i}-1=0 \end{matrix} \right.$$
由上述方程組易知 $p_{1}=p_{2}=...=p_{n}=\frac{1}{n}$ 是其中的一組解,進一步,根據二階條件 $d^{T}\triangledown_{x}^{2}Ld\leq 0$ 對於全部可行方向 d 均成立知上述解是帶約束函數極大值。app
所以,當全部樣本等機率出現時,系統的熵達到最大值;同時在全部樣本等機率出現的狀況下,樣本數越多熵越大 ($S=k\cdot log_{2}n$)。這意味着,一個系統越有序,其熵越低,若系統變量時徹底肯定的,即 $p=1$ 時,S=0,此時熵值達到最小值;一個系統不肯定性越高,則熵值越高。機器學習
回到最本質的問題上,到底什麼是信息熵 (香農熵),或者信息熵這樣一個概念有什麼感性的解釋?咱們能夠狹義的認爲信息熵是一個事件信息量的度量。當一個事件的不肯定性越大,咱們想要獲得確切的答案所須要的信息越多,即該事件的信息量與其不肯定性直接相關。信息熵和信息量在數值上一致,獲取信息的目的在於下降不肯定性,即下降事件的熵,事件自己的信息熵越大,下降不肯定性所須要的信息就越多。函數
相對熵學習
由熵的基本概念,在此引出相對熵。相對熵 (Relative Entropy) 也叫KL散度 (Kullback-Leibler divergence),用以衡量兩分佈間的差別。字體
設$p(x)$和$q(x)$是離散隨機變量$X$的兩個機率分佈,則p對q的相對熵爲
$$D_{KL}(p||q)=\sum_{x}p(x)log_2\frac{p(x)}{q(x)}=\mathbb{E}_{x\sim p}(log_2p(x)-log_2q(x))$$事件
值得注意的是相對熵並不具備對稱性,即通常狀況下 $D_{KL}(p||q)=D_{KL}(q||p)$ 並不成立。深度學習
交叉熵數學
交叉熵旨在衡量真實分佈和模擬分佈的近似程度,經常使用做機器學習、深度學習中做爲分割等任務的損失函數。設 $p(x)$ 是真實數據分佈,$q(x)$ 是模擬數據分佈,則交叉熵爲
$$S_{CE}=\sum_{x}p(x)log_2\frac{1}{q(x)}$$
當模擬數據分佈愈來愈近似真實分佈時,交叉熵數值將逐漸減少,當$q(x)=p(x)$時取得最小值。具體到深度學習中的多類別語義分割應用時,對於某像素,設置其真實類別爲標籤值爲 1,其餘類別爲0;網絡在輸出結果時經 softmax 歸一化輸出 N 張結果圖,當標籤對應 map 相同位置處爲 1 時交叉熵損失取得最小值爲 0,即 $Loss=-log\frac{e^{x_{label}}}{\sum_{i=1}^{N}e^{x_{i}}}=0$。
同時咱們注意到,熵 $S$、相對熵 $D_{KL}$ 以及交叉熵 $S_{CE}$ 間存在關係 $$D_{KL}=S_{CE}-S$$ 所以咱們能夠看到在深度學習相關任務中使用相對熵 $D_{KL}$ 和交叉熵 $S_{CE}$ 作損失函數沒有本質區別。