白话文看信息论

来源:互联网 发布:货物记账软件 编辑:程序博客网 时间:2024/05/01 07:06

最近在看吴军博士写的《数学之美》,里面大量的提到了信息论。我记得本科时,学习通信原理,上的是朦朦胧胧,模模糊糊的,不能说不会,因为公式都很简单,前前后后翻了三遍都不知道香农老人家想说啥。看《数学之美》时,好像多多少少有点感觉,但是还是抓不住核心思想。故希望用我自己的语言来阐述一下信息论。首先我先要说明,信息论的内容博大精深,本文并没有涉及到,实际上,我也不懂。本文希望阐释这样几个内容:什么是信息,信息的定义与度量以及数据压缩。

什么是信息

可汗学院有个《信息论基础》的公开视频,里面很有意思的粗略的解释了信息的内容,建议读者可以去看看。香农在《通信的数学理论》中对通信系统的结构描述如下:通信系统结构

这张图很有意思,很多书籍上将通信系统描述为三部分:信源、信道、信宿。其实我觉得是错误的。为啥香浓的系统更准确呢?**因为信源是产生信息的,而信宿是接收信息的!**so what ?这个的意义就在于信息不依赖于任何媒介存在,信息不是实体,信息就是类似于人类的认知(mind),当我们希望分享我们的idea时,就需要传播信息。但是信息在传播过程中是需要媒介的。就像水需要在管道里传输、火车需要在铁道上行驶,声音需要大气、固体和液体作为媒介一样。但是没有管道、没有铁道、没有大气,水还是水、火车还是火车、声音还是声音。
信息传播的媒介也有很多,可以用声音喊、可以用文字写(传纸条)、可以打电话、可以发Email等等等。但是无论哪种,transmitter的作用就是做适配,将信息转成不同的传播形式,比如,用声音喊,我们的喉结震动发出声波;打电话时,我们的声音被转化成电信号在电线(无线)中传输;文字更是用大家约定俗成的符号表示信息(日月星辰、天地万物、人类情感)。
但是不管用什么媒介来传输信息,信息量都是一样的。我说“我爱你”和我写在纸上“我爱你”和我说“I love you”或者什么“愛してる”又或者“Je t’aime / Je t’adore”,信息量没有什么区别,除了用外语感觉更洋气点外。在可汗学院的《信息论基础》视频里面,它假设存在一个称量信息量的称,那么比如一本书翻译成的多种书籍,虽然他们的字数会差很多,它们的形式也不同,厚薄也不同,但是信息量是一样的。
大家有没有觉得特别玄乎,反正我是觉得特别玄。那知道了信息的概念之后,我们如何严格的用数学去定义它呢?这个问题在过去2000多年时间里都没有解决,直到出现了香浓。

信息的定义与度量

香浓对信息的理解为:信息是用来消除不确定性的东西,因此,通信后接收者获取的信息在数量上等于通信前后“不确定性”的消除量。香浓认为人类只有在两种情况下需要通信:1、自己有某种形式的消息要告诉对方,而对方可能不知道。2、自己有某种疑问要询问对方,而估计对方能作出一定回答。不管怎么样,都是某一方有一些不确定性,经过通信之后,不确定性减少,我们说接收者获取了信息。当然了,香浓的这套解释是从通信系统模型中引申出来的。
不确定性(可能性)在数学中用概率来描述,香浓认为一个信息量的多少和出现的概率成反比,想想也是有道理的,如果一个人每天都跟每个女生说“我爱你”,那当他再说这句话的时候信息量就基本为0。如果你觉得很难理解,那么不妨记住吧,当信源发出一个消息x时,它的信息量由x的先验概率唯一决定,事实上,信源的概率空间是信息论的基石,只有信源产生信息包含不确定性时,才可能会含有信息。
I(x) = -logP(x);
上面公式中隐含的是以2为底的,以2为底得出的数据的信息量单位称为bit(比特),有没有觉得很奇怪,香浓为啥给信息量的单位叫bit,它跟计算机里面每一个位的bit有啥关系?事实上,比如x的信息量为2bit,意思就是至少需要2个bit的计算机存储空间才能存储该信息,如果小于2bit,那么就不可能存储完整的信息。特别地,我们说1bit的信息,我们知道计算机的1位代表是和否,或者真和假。那信息论里面也是一样的。当我们说信息量为1bit时,是指发生真假的概略相等。我们后面会谈数据压缩,特别的要好好聊聊霍夫曼编码。

信源的信息量

上面提到的是信源发出消息x时的信息量。因为x是随机变化的,是信源空间的一个小小的部分。那如何评价信源的信息量?这里好像变得抽象了,其实简单的说,就是比如习近平的信息量和我的信息量,一本书的信息或者一部电影的信息量。当然,习近平的信息量肯定会比我高了。因为他说一句话会消除很多事情的不确定性。
如何评价一本书的信息量?一本书是由词组构成的,这些词组构成了一个概率空间,因为每个词组都会以一定概率出现。有了概率就有了信息,因此这些词都会有一个信息量,于是很自然的得出,信源的信息量是每个词组信息量的加权平均,这个值我们称为信息熵。
信息熵的公式

这里,我希望强调一点,一条信息的信息量不能脱离信源存在,即我们不能单纯的说一条信息的信息量是多少?因为它的信息量是依赖于信源的概率空间的。比如说“是的”,有些人把这个词当口头禅讲,但是外交部发言人绝对不敢随便说这个词。还有比如说“中国科学院很牛叉!”,这句话我来说和习近平来说,信息量就天差地别了。
此外,由信息熵的公式可以很清楚的看到,当信源的概率空间均匀分布时,即对于每个消息的概率相等时,此时信息量达到了最大。这也就是为什么研究密码的人总是致力于每个符号出现的概率相等。

数据压缩

在《数学之美》这本书里,吴军博士讲述了一本《史记》的信息量有多少?下面是摘录原文:
一本50万字的中文书平均有多少信息量(这个问题好像已经篡改了..)我们知道,常用的汉字大约有7000字,假设每个字等概率,那么大约需要13比特表示一个汉字(log7000=12.77bit),但是汉字的使用是不平衡的。实际上,前10%的汉字占用常用文本的90%,因此,即使不考虑上下文的相关性,而只考虑每个汉字的独立概率,那么每个汉字的信息熵大约也只有8-9bit。若再考虑上下文的相关性,每个汉字的信息熵只有5bit左右。所以一本50万字的中文书,信息量大约是250万比特。如果用一个好的算法压缩一下,整本书可以存成一个320KB(250/8*10KB)的文件。而如果直接用两个字节的国标编码存储这本书,大约需要1MB大小,是压缩文件的3倍。这两个数量的差距,在信息论中称为“冗余度”。
这段话本身是正确的,但是如果将主语从“一本50万字的中文书”换成“史记”,笔者认为就不正确了,因为我们前面说过,信息量的大小是和信源密不可分的。当泛泛指50万字的一本书时,信源为全部的中文书,而指史记时,信息熵的大小就由史记中的概率空间决定。
但是不管怎样,吴军博士给我们展示了什么是信息的冗余量。这就为数据压缩提供了可运作的空间,也指明了无损数据压缩的极限就是320KB。
当笔者当前学到这里的时候总是好奇,这冗余的东西到底在哪?我怎么没感觉到冗余?那数据压缩到底压缩的是什么?压缩前后位置空间是否会发生变化?
实际上,所谓冗余的内容就是本来我只需要用较短的符号表示,但是却使用了较长的符号(当然较长符号使用是因为处于大家交流习惯的需要)。比如一篇文章中大量出现了“中国科学院大学”,那么我们说这个词汇的信息量就比较低,没有必要用7个词来表示,可以使用“科院”或者“国科大”表示。这就是一种压缩方法,只是刚巧,人们还认识压缩之后的字符,那比如将其压缩成“0101”呢,除了计算机没人认识,只有压缩的比特数大于等于信息量即可。那下个问题,压缩前后位置是否会发生变化?这个看具体的编码方法了,一般文本压缩是不变的,但是图像压缩或者视频压缩,会按照某种协议就行变化。

霍夫曼编码

这里我们特别拿出霍夫曼编码来提,是因为这个算法非常出名。(通信原理课程考试必考题目)。这个算法实际是数据压缩的典型实现,而且是无损压缩。霍夫曼编码的实现需要两个步骤:
1、扫描待压缩文件,找到每个词(或者字)的使用频率,然后建立一个表目(key,value),key为词组,value为词频(频数/总数)。
2、取出频率最低的两个词组,构成一个子树,然后将词组之和作为这两个词组的替代项添加到集合中,注意,频率顺序很重要(比如,频率小的位于左侧,频率大的位于右侧,或反之)。总之,一直迭代下去,将会构成一颗霍夫曼树,这是个二叉树。根据这个二叉树(定义左节点为0,右节点为1,或反之)。这样将每个词组编码成一个唯一的变长的01字符串。

可以证明,这是种最优的压缩算法,组成的霍夫曼树是带权路径最短的二叉树。实际上,数据压缩算法的核心就是将使用频率大的字符(或者什么东西)用较短的编码表示,频率小的用较长编码表示。

写到这里就结束了,由于这篇文章的大部分内容是自己的思考的想法,如果有不当之处,敬请指教。

0 0
原创粉丝点击