重新理解熵编码

重新理解熵编码

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

熵的理解

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

(1)I(xi)=log21P(xi)

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

(2)H(X)=E[log21P(xi)]=i=1qP(xi)log2P(xi)

编码理解

熵与编码码长

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

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

(3)log2N=log21N=log2P

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

(4)Entropy=iP(i)log2P(i)=ExP[log2P(x)]

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

交叉熵

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

(5)DKL(P||Q)=i=1nP(xi)log(P(xi)Q(xi))

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

(6)DKL(P||Q)=i=1nP(xi)log(P(xi))i=1nP(xi)log(Q(xi))(7)=H(P(x))i=1nP(xi)log(Q(xi))

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

(8)CrossEntropy=i=1nP(xi)log(Q(xi))=H(P)+D(P||Q)(9)=ExP[log2Q(x)]

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

posted @   winkom  阅读(164)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· 刚刚!百度搜索“换脑”引爆AI圈,正式接入DeepSeek R1满血版
点击右上角即可分享
微信分享提示