重新理解熵編碼

winkom發表於2024-06-26

重新理解熵編碼

僅作為個人筆記,描述不嚴謹,已經系統學習《資訊理論》,用於回顧以及記錄一些以前忽略的看法。

熵的理解

\(I(x_{i})\)通常稱為信源符號\(x_{i}\)的自資訊,也可以理解為單個符號\(x_{i}\)符號熵,都是表示出現該符號的不確定性。自資訊\(I(x_{i})\)定義為:

\[I(x_{i})=log_{2}\,{\frac{1}{P(x_{i})}} \]

所有符號的符號熵求平均即為平均符號熵,也是信源的資訊熵。資訊熵\(H(X)\)從平均意義上度量的是總體的資訊:

\[H(X)=E[log_{2}\,\frac{1}{P(x_{i})}]=-\sum_{i=1}^{q}P(x_{i})log_{2}\,P(x_{i})​ \]

編碼理解

熵與編碼碼長

熵是服從某一特定機率分佈事件的理論最小平均編碼長度

對於具有\(N\)種等可能性狀態的資訊,每種狀態的可能性等概\(P = \frac{1}{N}\),則編碼每種狀態所需的最小編碼長度公式與自資訊類似:

\[l o g_{2}\:N=-l o g_{2}\:\frac{1}{N}=-l o g_{2}\:P \]

因此,對於整個非等概信源來說,其平均碼長計算公式與計算資訊熵類似:

\[Entropy=-\sum_{i}P(i)l o g_{2}\,P(i) = \mathbb{E}_{x\sim P}[-l o g_{2}\,P(x)] \]

可以理解為如果比較大,意味著這一資訊有較多的可能狀態,相應的每個狀態的可能性比較低,即平均編碼長度較長;因此每當來了一個新的資訊,我們很難對其作出準確預測,即有著比較大的混亂程度/不確定性/不可預測性。

交叉熵

當我們不知道事件的機率分佈,又想計算熵,就需要對熵做一個估計,熵的估計的過程自然而然的引出了交叉熵。在觀測之前,我們只有預估的機率分佈\(Q\),使用估計得到的機率分佈,可以計算估計的熵:

\[H(Q)=\mathbb{E}_{x\sim Q}[-l o g_{2}\;Q(x)] \]

當我們已知隨機變數的取值範圍時,就可以得到交叉熵:

\[C r o s s E n t r o p y=H(P||Q)=\mathbb{E}_{x\sim P}[-l o g_{2}\;Q(x)]=H(P) +D(P||Q) \]

\(D(P||Q)\)為P和Q之間的\(Kullback-Leibler\, divergence\),即\(KL\)散度。為了減小平均編碼長度,一般情況下讓交叉熵儘量小,當 \(𝐻(𝑃)=𝐶𝑟𝑜𝑠𝑠𝐸𝑛𝑡𝑟𝑜𝑝𝑦\) 時,交叉熵最小。可以得出,在編碼問題中,交叉熵是位元速率的自然度量。

相關文章