重新理解熵编码

重新理解熵编码

仅作为个人笔记,描述不严谨,已经系统学习《信息论》,用于回顾以及记录一些以前忽略的看法。

熵的理解

\(I(x_{i})\)通常称为信源符号\(x_{i}\)的自信息,也可以理解为单个符号\(x_{i}\)符号熵,都是表示出现该符号的不确定性。自信息\(I(x_{i})\)定义为:

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

所有符号的符号熵求平均即为平均符号熵,也是信源的信息熵。信息熵\(H(X)\)从平均意义上度量的是总体的信息:

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

编码理解

熵与编码码长

熵是服从某一特定概率分布事件的理论最小平均编码长度

对于具有\(N\)种等可能性状态的信息,每种状态的可能性等概\(P = \frac{1}{N}\),则编码每种状态所需的最小编码长度公式与自信息类似:

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

因此,对于整个非等概信源来说,其平均码长计算公式与计算信息熵类似:

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

可以理解为如果比较大,意味着这一信息有较多的可能状态,相应的每个状态的可能性比较低,即平均编码长度较长;因此每当来了一个新的信息,我们很难对其作出准确预测,即有着比较大的混乱程度/不确定性/不可预测性。

交叉熵

当我们不知道事件的概率分布,又想计算熵,就需要对熵做一个估计,熵的估计的过程自然而然的引出了交叉熵。在深度学习中,\(P\)往往用来表示样本的真实分布\(Q\)用来表示模型预测分布。我们希望使用模型得到的预测分布越接近真实分布越好,衡量两个分布之间的距离常用\(Kullback-Leibler\, divergence\),即\(KL\)散度\(D(P||Q)\)

\[\begin{align} D_{K L}(P||Q)=\sum_{i=1}^{n}P(x_{i})l o g(\frac{P(x_{i})}{Q(x_{i})}) \end{align} \]

\(D(P||Q)\)越小表明分布\(P\)\(Q\)之间的距离越近,对公式变形可以得到:

\[\begin{align} D_{K L}(P||Q) &=\sum_{i=1}^{n}P(x_{i})log(P(x_{i}))-\sum_{i=1}^{n}P(x_{i})log(Q(x_{i}))\\ &=-H(P(x)) - \sum_{i=1}^{n}P(x_{i})l o g(Q(x_{i})) \end{align} \]

公式前部分为真实分布\(P\)的信息熵,则后半部分即定义为\(P\)\(Q\)的交叉熵:

\[\begin{align} CrossEntropy &=-\sum_{i=1}^{n}P(x_{i})l o g(Q(x_{i}))=H(P) +D(P||Q)\\ &=\mathbb{E}_{x\sim P}[-log_{2}Q(x)]\\ \end{align} \]

为了减小平均编码长度,一般情况下让交叉熵尽量小,当 \(𝐻(𝑃)=𝐶𝑟𝑜𝑠𝑠𝐸𝑛𝑡𝑟𝑜𝑝𝑦\) 时,交叉熵最小。可以得出,在编码问题中,交叉熵是码率的自然度量。

posted @ 2024-06-26 23:34  winkom  阅读(22)  评论(0编辑  收藏  举报