熵编码
详细梳理熵编码
熵编码即编码过程中按熵原理不丢失任何信息的无损编码方式,同时在有损编码中的出现,作为编码器的最后一个流程。
信息熵为信源的平均信息量(不确定性的度量)。常见的熵编码有:香农(Shannon)编码、哈夫曼(Huffman)编码,指数哥伦布编码(Exp-Golomb)和算术编码(arithmetic coding)。
熵编码利用信息论中的熵概念来设计编码方案,以实现更高效的数据表示。虽然深度学习在许多领域都取得了显著的成功,但在熵编码方面,目前并没有广泛采用深度学习的趋势。
原因在于:熵编码方法通常采用较简单的数学模型,例如霍夫曼编码、算术编码等。这些方法在理论上能够接近信息论的极限。
假设有一个随机变量x,它一共有八个可能取值,记为 。当需要将x的取值传输给其它人时,首先需要对x的取值进行二进制编码。例如,可以将这八个状态如下编码:
a:000 b:001 c:010 d:011
e:100 f:101 g:110 h:111
我们用3bits编码了x 的所有取值。这意味着当把x的任意取值发送给其它人时,每次需要3bits来储存信息。
如果x各值均匀分布,则x的熵为:
似乎很合理
但如果其概率分布不均匀呢?比如随机变量y的分布为:
那么发送一千次y,按照原始方法,还需要1000*3bits嘛?能否对数据进行压缩呢?
可以计算y的熵,H(y)=2
通过使用哈夫曼编码:
这样平均长度为:
通过哈夫曼编码 发送一千次y只需要2000bits。
此时哈夫曼编码的性能已交达到了理论极限。
我们所优化的中R一般也直接用熵来近似比特率。
当变换、量化操作结束时,得到的符号及其概率分布已经确定,其熵也确定了,那么它bits rate也确定了,影响损失函数的就只有重构效果(或者说取决于我们所提取的特征以及我们估计的概率分布)。
也就是说取决于 熵模型
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App