由香农定理看数据压缩的本质

        开门见山上结论:所谓的压缩就是在不损失信息量的前提下,用新的描述方式表示原有的数据,而这种方式占用的空间更少。

        先来个小例子:有一段文字“我我我我我我有点喜欢喜欢喜欢喜欢lxlxlxlxlxlxlx”一共14个汉字加上14个字符,现在采用某种压缩算法,将其压缩为这样一种形式“6个我1个有点4个喜欢7lx”一共9个汉字加上6个字符(包括数字跟字母),显然,总的空间变小了,这就是数据压缩。

        在这里我们只讨论无损压缩,先简单介绍一些有关香农定理的东西,香农这哥们研究的东西的确很有意义,我只能说他太有才了,想想我们随便说的一句话“明天我要发财了”,我想知道这句话到底包含多少信息量呢,在他之前没人搞出来这东西,他那一天才公式一下子解决了这个问题,用数学方法量化了信息量,具体是什么公式就不粘贴了,我们只需要知道根据相关概率可以计算出这句话的信息量,他称之为信息熵。

        下边来分析分析一个问题,有一段字符:aaabcdegxy,在理想情况下,每个字符都随机出现,那么单个字符的信息熵根据香农公式可以计算出来信息熵为4.7,这段10个字符总的信息量为47,但是,一般我们都知道,在人类的语言文字表达中,字符出现的概率并不是随机的,有的字符出现频率高,而有的低,下边的图有一些统计值,在这种情况下,每个字符的平均信息熵重新计算一下大约为2.6,远远小于完全随机的情况,这样10个字符总的信息量为26

                                          

        好了,有了上边的概念之后,假如我们想要用一段字符描述自己所要表达的信息,也就是说我们要保证总的信息量,定下这个总量,下一步,如果想要用最少的字符来完成任务,那么每个字符的平均信息熵就必须保证要取最大,但是根据上一段的事实,我们在平时的表达中每个字符的平均信息熵并未达到最理想的4.7,所以,要完成这个任务,我们需要用更多的字符来表示,即用增大字符数量来解决,导致了空间浪费,这就是数据冗余的源泉,有什么办法解决这个问题呢,数据压缩正式登场,数据压缩就是要用一种新的描述形式使得单个字符的平均信息熵更大,那么总的信息量不变的前提下,所需的字符总数就会变小,这样就压缩了空间。

        下边再想一个问题,利用压缩软件我们可以大大减小文件大小,那能不能一直压缩下去,将压缩文件继续压缩,使它越来越小,要是能这样该多好。这个问题仔细想想就是一个我们初中都学过的能量守恒原理,我们说这个文件的信息总量是不变的,无论你怎么压缩,由於单个字符的信息熵有极限值,所以压缩文件也必然有个极限,不可能一直压缩下去。

        最后介绍一个信息熵理论的应用,主要思想是香农公式:

                 

        某一次试验之前我们并不能确知试验的结果,那么这一试验可能获得的信息量的期望是香农公式(上边图,还是粘贴过来了)确定,由于这一公式的形式非常类似物理中“熵”的定义,香农把这一平均信息量称为“信息熵”。由函数的性质可知,当各种结果出现的概率均等时,此次试验能获得的信息量的期望最大。下边说说一个应用:有 100 个外表相同的球,已知其中有一个与其他球的质量不同。现要求用没有砝码的天平在最少次数中找出这个球,问怎样的称法才是最佳的?我们把每次称量都视为一次试验,试验结果有三种:天平偏向左边、天平偏向右边重或者相等,那么为获得最大的信息量,我们应该使三种情况出现的概率相等,即把小球平均分成 份进行称量,也就是一般答案中给出的最佳称量方法。使用信息论还可以计算出最少所需要的称量次数,因为100个小球中知道某球是假球且偏重或者偏轻这一信息所包含的信息量是 log 2 200,每次测量所能获得的信息是 log 2 3,那么需要测量的最小次数就是 次。然而具体到每次测量,由于不能保证将球平均分为 份,并不一定能有 log 2 3 的信息熵,所以这个 次只是测量的下界,具体能否达到还要看实际的步骤。

 

参考:http://www.zhihu.com/question/22539777

           http://www.zhihu.com/question/20207589

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章