族谱网 头条 人物百科

熵编码法

2020-10-16
出处:族谱网
作者:阿族小谱
浏览:619
转发:0
评论:0
编码使用长度不同的比特串对字母进行编码有一定的困难。尤其是,几乎所有几率的熵都是一个有理数。使用整数比特(bit)霍夫曼编码建议了一种将比特进位成整数的算法,但这个算法在特定情况下无法达到最佳结果。为此有人加以改进,提供最佳整数比特数。这个算法使用二叉树来设立一个编码。这个二叉树的终端节点代表被编码的字母,根节点代表使用的比特。除这个对每个要编码的数据产生一个特别的表格的方法外还有使用固定的编码表的方法。比如加入要编码的数据中符号出现的概率匹配一定的规则的话就可以使用特别的变长编码表。这样的编码表具有一定的系数来使得它适应实际的字母出现概率。改进使用整数比特的方法往往无法获得使用熵计算的比特数,因此其压缩并非一定最佳。比如字母列由两个不同的字母组成,其中一个字母的可能性是p(A)=0.75{\displaystyle\mathrm{p}(A)=0{.}75},另一个字母的可能性是p(B)=...

编码

使用长度不同的比特串对字母进行编码有一定的困难。尤其是,几乎所有几率的熵都是一个有理数。

使用整数比特(bit)

霍夫曼编码建议了一种将比特进位成整数的算法,但这个算法在特定情况下无法达到最佳结果。为此有人加以改进,提供最佳整数比特数。这个算法使用二叉树来设立一个编码。这个二叉树的终端节点代表被编码的字母,根节点代表使用的比特。

除这个对每个要编码的数据产生一个特别的表格的方法外还有使用固定的编码表的方法。比如加入要编码的数据中符号出现的概率匹配一定的规则的话就可以使用特别的变长编码表。这样的编码表具有一定的系数来使得它适应实际的字母出现概率。

改进

使用整数比特的方法往往无法获得使用熵计算的比特数,因此其压缩并非一定最佳。

比如字母列由两个不同的字母组成,其中一个字母的可能性是 p ( A ) = 0 . 75 {\displaystyle \mathrm {p} (A)=0{.}75} ,另一个字母的可能性是 p ( B ) = 0 . 25 {\displaystyle \mathrm {p} (B)=0{.}25} 。以上算法的结果是每个字母应该用一个比特来代表,因此其结果的比特数与字母数相同。

但扩展取样位数可以稍微弥补该破绽:上例的 p ( A A ) = 0 . 5625 {\displaystyle \mathrm {p} (AA)=0{.}5625} 、 p ( A B ) = 0 . 1875 {\displaystyle \mathrm {p} (AB)=0{.}1875} 、 p ( B A ) = 0 . 1875 {\displaystyle \mathrm {p} (BA)=0{.}1875} 、 p ( B B ) = 0 . 0625 {\displaystyle \mathrm {p} (BB)=0{.}0625} ,以霍夫曼编码算法得结果为:每两个字母平均用 ( 0.5625 ∗ ∗ --> 1 + 0.1875 ∗ ∗ --> 2 + 0.1875 ∗ ∗ --> 3 + 0.0625 ∗ ∗ --> 3 ) = 1.6875 {\displaystyle (0.5625*1+0.1875*2+0.1875*3+0.0625*3)=1.6875} 个比特,即平均每个字母用0.84375个比特来代表,向最佳熵值踏近了一步。

最佳熵编码器应该为第一个字母使用 − − --> log 2 ⁡ ⁡ --> ( 0 . 75 ) ≈ ≈ --> 0 . 41 {\displaystyle -\log _{2}(0{.}75)\approx 0{.}41} 个比特,为第二个字母使用 − − --> log 2 ⁡ ⁡ --> ( 0 . 25 ) = 2 {\displaystyle -\log _{2}(0{.}25)=2} 个比特,因此整个结果是每个字母平均使用 − − --> 0 . 75 ∗ ∗ --> log 2 ⁡ ⁡ --> ( 0 . 75 ) − − --> 0 . 25 ∗ ∗ --> log 2 ⁡ ⁡ --> ( 0 . 25 ) ≈ ≈ --> 0.81 {\displaystyle -0{.}75*\log _{2}(0{.}75)-0{.}25*\log _{2}(0{.}25)\approx 0.81} 个比特。

使用算术编码可以改善这个结果,使得原信息按照熵最佳来编码。

模型

要确定每个字母的比特数算法需要尽可能精确地知道每个字母的出现概率。模型的任务是提供这个数据。模型的预言越好压缩的结果就越好。此外模型必须在压缩和恢复时提出同样的数据。在历史上有许多不同的模型。

静态模型

静态模型在压缩前对整个文字进行分析计算每个字母的概率。这个计算结果用于整个文字上。

优点

缺点

动态模型

在这个模型里概率随编码过程而不断变化。多种算法可以达到这个目的:

前向动态:概率按照已经被编码的字母来计算,每次一个字母被编码后它的概率就增高

反向动态:在编码前计算每个字母在剩下的还未编码的部分的概率。随着编码的进行最后越来越多的字母不再出现,它们的概率成为0,而剩下的字母的概率升高,为它们编码的比特数降低。压缩率不断增高,以至于最后一个字母只需要0比特来编码

优点

缺点

一般在动态模型中不使用概率,而使用每个字母出现的次数。

除上述的前向和反向模型外还有其它的动态模型计算方法。

比如在前向模型中可以不时减半出现过的字母的次数来降低一开始的字母的影响力。

对于尚未出现过的字母的处理方法也有许多不同的手段:比如假设每个字母正好出现一次,这样所有的字母均可被编码。

模型度

模型度说明模型顾及历史上多少个字母。比如模型度0说明模型顾及整个原文。模型度1说明模型顾及原文中的上一个字母并不断改变其概率。模型度可以无限高,但是对于大的原文来说模型度越高其需要的计算内存也越多。

熵作为相似性的量度

除了使用熵编码作为压缩数字数据一种方法外,熵编码器也可以用来测量数据流和已经存在的类的数据之间的相似程度。这是通过对每类数据产生一个熵编码器/压缩器;通过将未压缩的数据提供给每个压缩机,据该压缩机产生的最佳压缩分类。具有最佳压缩率的编码器可能是用与未知数据最相似的数据训练的编码器。


免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。

——— 没有了 ———
编辑:阿族小谱
发表评论
写好了,提交
{{item.label}}
{{commentTotal}}条评论
{{item.userName}}
发布时间:{{item.time}}
{{item.content}}
回复
举报
点击加载更多
打赏作者
“感谢您的打赏,我会更努力的创作”
— 请选择您要打赏的金额 —
{{item.label}}
{{item.label}}
打赏成功!
“感谢您的打赏,我会更努力的创作”
返回

更多文章

更多精彩文章
打赏
私信

推荐阅读

· 熵
简介熵的概念最早起源于物理学,用于度量一个热力学系统的无序程度。在信息论里面,熵是对不确定性的测量。但是在信息世界,熵越高,则能传输越多的信息,熵越低,则意味着传输的信息越少。英语文本数据流的熵比较低,因为英语很容易读懂,也就是说很容易被预测。即便我们不知道下一段英语文字是什么内容,但是我们能很容易地预测,比如,字母e总是比字母z多,或者qu字母组合的可能性总是超过q与任何其它字母的组合。如果未经压缩,一段英文文本的每个字母需要8个比特来编码,但是实际上英文文本的熵大概只有4.7比特。如果压缩是无损的,即通过解压缩可以百分之百地恢复初始的消息内容,那么压缩后的消息携带的信息和未压缩的原始消息是一样的多。而压缩后的消息可以通过较少的比特传递,因此压缩消息的每个比特能携带更多的信息,也就是说压缩信息的熵更加高。熵更高意味着比较难于预测压缩消息携带的信息,原因在于压缩消息里面没有冗余,即每个比特...
· 熵
熵的热力学定义鲁道夫·克劳修斯——最早提出“熵”这个概念的物理学家熵的概念是由德国物理学家克劳修斯于1865年所提出。克氏定义一个热力学系统中熵的增减:在一个可逆过程里,被用在恒温的热的总数(σσ-->Q{\displaystyle\sigmaQ}),并可以公式表示为:克劳修斯对S予以“熵”(希腊语:εντροπια,entropia,德语:Entropie,英语:entropy)一名,希腊语源意为“内向”,亦即“一个系统不受外部干扰时往内部最稳定状态发展的特性”。与熵相反的概念为“反熵”(希腊语:εκτροπια,ektropia,源意“外向性”;德语:Ektropie;英语ectropy)。1923年,德国科学家普朗克来中国讲学用到entropy这个词,胡刚复教授翻译时灵机一动,把“商”字加火旁来意译“entropy”这个字,创造了“熵”字,(音读:商),因为熵是Q除以T(温度)的商数...
· 余熵
历史美国化学家莱纳斯·鲍林是第一个以余熵这一概念来描述水所结成冰块的人,特别是六方晶系的冰。在水状态下,每一个氧原子与两个氢原子结合在一起。但是当水结成冰时则会变成四方结构,每一个氧原子周围会有四个氢原子(因为周围会有相邻的水分子)。氧原子周围的氢原子也有一定范围的自由活动空间,只要每一个氧原子“附近”保持有两个氢原子,那么就仍然保持有其传统的水分子构成H2O。但事实证明,在这类有大量水分子的情况下,氢原子很有可能会遵循一种两进两出的原则(每一个氧原子必须有两个氢原子在其“附近”,另外两个氢原子距其较“远”)。氢原子的这种自由活动只存在于绝对零度下,因此以前也被视为绝无仅有的一种情况。存在有多种这样的匹配情况来满足绝对零度时的无序性,换言之,即满足绝对零度时的熵。水所结成的冰是第一个用来说明余熵概念的例子,然而一般情况下很难提取纯净且毫无缺陷的冰晶来进行研究。因此有大量研究都试图通过其他热...
· 熵力
实例布朗运动布朗运动的熵方法最初是被RM纽曼提出的。.疏水力水珠在疏水性的草表面。熵力的另一个例子是疏水力。在室温下,当它们与溶解物质分子相互作用时,它部分地起源是由水分子的三维网络中熵的损失。
· 编码
扩展定义对于特定的上下文,编码有一些更具体的意义。编码(Encoding)在认知上是解释传入的刺激的一种基本知觉的过程。技术上来说,这是一个复杂的、多阶段的转换过程,从较为客观的感觉输入(例如光、声)到主观上有意义的体验。字符编码(Characterencoding)是一套法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其他东西的一个集合(如号码或电脉冲)进行配对。文字编码(Textencoding)使用一种标记语言来标记一篇文字的结构和其他特征,以方便计算机进行处理。语义编码(Semanticsencoding),以正式语言乙对正式语言甲进行语义编码,即是使用语言乙表达语言甲所有的词汇(如程序或说明)的一种方法。电子编码(Electronicencoding)是将一个信号转换成为一个代码,这种代码是被优化过的以利于传输或存储。转换工作通常由一个编解码器完成。神经编码...

关于我们

关注族谱网 微信公众号,每日及时查看相关推荐,订阅互动等。

APP下载

下载族谱APP 微信公众号,每日及时查看
扫一扫添加客服微信