重新理解熵编码
重新理解熵编码
仅作为个人笔记,描述不严谨,已经系统学习《信息论》,用于回顾以及记录一些以前忽略的看法。
熵的理解
\(I(x_{i})\)通常称为信源符号\(x_{i}\)的自信息,也可以理解为单个符号\(x_{i}\)的符号熵,都是表示出现该符号的不确定性。自信息\(I(x_{i})\)定义为:
所有符号的符号熵求平均即为平均符号熵,也是信源的信息熵。信息熵\(H(X)\)从平均意义上度量的是总体的信息:
编码理解
熵与编码码长
熵是服从某一特定概率分布事件的理论最小平均编码长度
对于具有\(N\)种等可能性状态的信息,每种状态的可能性等概\(P = \frac{1}{N}\),则编码每种状态所需的最小编码长度公式与自信息类似:
因此,对于整个非等概信源来说,其平均码长计算公式与计算信息熵类似:
可以理解为如果熵比较大,意味着这一信息有较多的可能状态,相应的每个状态的可能性比较低,即平均编码长度较长;因此每当来了一个新的信息,我们很难对其作出准确预测,即有着比较大的混乱程度/不确定性/不可预测性。
交叉熵
当我们不知道事件的概率分布,又想计算熵,就需要对熵做一个估计,熵的估计的过程自然而然的引出了交叉熵。在深度学习中,\(P\)往往用来表示样本的真实分布。\(Q\)用来表示模型预测分布。我们希望使用模型得到的预测分布越接近真实分布越好,衡量两个分布之间的距离常用\(Kullback-Leibler\, divergence\),即\(KL\)散度\(D(P||Q)\):
\(D(P||Q)\)越小表明分布\(P\)和\(Q\)之间的距离越近,对公式变形可以得到:
公式前部分为真实分布\(P\)的信息熵,则后半部分即定义为\(P\)和\(Q\)的交叉熵:
为了减小平均编码长度,一般情况下让交叉熵尽量小,当 \(𝐻(𝑃)=𝐶𝑟𝑜𝑠𝑠𝐸𝑛𝑡𝑟𝑜𝑝𝑦\) 时,交叉熵最小。可以得出,在编码问题中,交叉熵是码率的自然度量。