1. 开场白好久不见,我是所长大白。 无论是做研究还是实际工作,都需要经过长期的积累,才能深刻理解存在的问题、解决方法、瓶颈所在、突破方向等等。 今天和大家聊一下压缩算法相关的知识点,废话不说,马上开始阅读之旅吧! 2.压缩算法的理论基础任何适用于工程的算法都有它的数学和信息学理论基础。 就如同我们写论文要先做仿真,理论给实践提供了一定的方向和依据。 对于压缩算法来说,我们肯定会问:这是压缩极限了吗?还有提升空间吗? 2.1 信息学之父聊到这里,不得不提到信息学之父克劳德·艾尔伍德·香农,来简单看下他的履历简介:
看完这段介绍,我感觉自己被秒成了粉末了,只能默默打开了网抑云,生而为人,我很遗憾。 2.3 信息熵entropy熵本身是一个热力学范畴的概念,描述了一种混乱程度和无序性。 这是个特别有用的概念,因为自然界的本质就是无序和混乱。 举个不恰当的例子,我们经常看娱乐圈八卦新闻的时候,会说信息量很大,上热搜了等等,那么我们该如何去度量信息量呢? 前面提到的信息学之父香农就解决了信息的度量问题,让一种无序不确定的状态有了数学语言的描述。 在1948年的论文《A Mathematical Theory of Communication》中作者将Entropy与Uncertainty等价使用的。 文中提出了信息熵是信息的不确定性(Uncertainty)的度量,不确定性越大,信息熵越大。
在论文的第6章给出信息熵的几个属性以及信息熵和不确定性之间的联系: 简单翻译一下:
我们假设一个事件有多种可能的选择,每个选择的概率分别记为p1,p2....pn,文章进一步给出了概率和信息熵的公式: 其中k为一个正常量。 经过前面的一些分析,我们基本上快懵圈了,太难了。 所以,我们暂且记住一个结论:信息是可度量的,并且和概率分布有直接联系。 3. 数据压缩的本质既然有了理论的支持,那么我们来想一想 如何进行数据压缩呢? 数据压缩可以分为:无损压缩和有损压缩。
3.1 数据压缩的定义压缩的前提是冗余的存在,消除冗余就是压缩,用更少的信息来完整表达信息,来看下百科的定义:
举几个简单的例子:
在上述文本中'北京交通大学'可以用'北交'代替,'交通信息工程及控制专业'可以用'交控专业'代替。
在上述文本中有比较明显的局部重复,比如a出现了8次,z出现了10次,如果我们在分析了输入字符的分布规律之后,确定了'重复次数+字符'的规则,就可以进行替换了。 3.2 概率分布和数据编码本质上来说,数据压缩就是找到待压缩内容的概率分布,再按照一定的编码算法,将那些出现概率高的部分代替成更短的形式。 所以输入内容重复的部分越多,就可以压缩地越小,压缩率越高,如果内容几乎没有重复完全随机,就很难压缩。 这个和我们平时优化代码性能的思路非常相似,热点代码的优化才能带来更大的收益。 3.3 数据压缩极限前面提到了,用较短的字符串来替换较长的字符串就实现了压缩,那么如果对每次替换都使用最短的字符串,应该就可以认为是最优压缩了。 所以我们需要找到理论上的最短替换串的长度,换到二进制来说就是二进制的长度,这样就可以接近压缩极限了。 我们来分析一下:
假定内容由n个部分组成,每个部分出现概率分别为p1、p2、...pn,那么替代符号占据的二进制最少为:
可能的情况越多,需要的二进制长度可能就越长,对于n相等的两个文件,概率p决定了这个式子的大小:
举例:有一个文件包含A, B, C个三种不同的字符,50%是A,30%是B,20%是C,文件总共包含1024个字符,每个字符所占用的二进制位的数学期望为:
求得压缩后每个字符平均占用1.49个二进制位,理论上最少需要1.49*1024=1526个二进制位,约0.1863KB,最终的压缩比接近于18.63%。 4. 霍夫曼编码简介
霍夫曼编码使用变长编码表对源符号进行编码,其中变长编码表是通过评估源符号出现的几率得到的。 出现几率高的字母使用较短的编码,出现几率低的字母使用较长的编码,这使得编码之后字符串的总长度降低。 4.1 前缀编码霍夫曼编码除了使用变长码之外,还使用前缀编码来确保解码时的唯一性,举个例子:
霍夫曼树中叶子节点之间不存在父子关系,所以每个叶子节点的编码就不可能是其它叶子节点编码的前缀,这是非常重要的。 4.2 霍夫曼树简单构造霍夫曼树是霍夫曼编码的重要组成部分,我们拿一个具体的例子来看下霍夫曼树的一点特性。
霍夫曼编码的原理和实现还是比较复杂的,篇幅有限,后面单独写一篇文章详细介绍。 5. 本文小结本文对数据压缩进行了简要的介绍,说明了数据压缩的本质和算法的基本原理,以及霍夫曼树的一些原理。 数据压缩和分析内容的概率分布以及编码有直接的关系,但是各个场景下输入内容的侧重点会有所不同,利用机器学习来处理数据压缩也是当前的一个热门话题。 篇幅有限,后续会重点展开一些细节,这篇就算抛砖引玉开头篇了。 我们下期见。 |
|
来自: taotao_2016 > 《概率》