信息熵与二进制--信息论系列

晨曦之光 发布于 2012/04/10 15:01
阅读 249
收藏 1

为什么信息技术中要用二进制处理数据,难道仅仅是由于晶体管易于实现二进制吗?其实很多人都知道,在晶体管出现前很长时间,电报就是用的二进制,其实即使那不是真正的二进制,因为电报的二进制没有定义运算,即便如此,人们还是倾向于用两个符号来对大量的字符进行编码,这个意义上说,二进制只不过是这种双符号的电报(.和_)定义了运算的高级形式而已,不考虑运算只考虑编码,电报的双符号和现在二进制编码十分相似,这时就要问了,人们为何不用更多的符号进行编码,而只用两个符号,这就是信息熵的问题了。

用两个符号进行编码使得识别更加容易,如果把每一个数据位的可能值作为一种状态,那么十进制数的每一位就有十种状态,而二进制数据的每一位只有两种状态,初看起来,十进制的数据记载的信息量更大,可是正式由于这种很大的信息量导致十进制的数据更加不易识别,不易识别就是说需要我们付出更大的努力才能识别,用热力学的术语说就是信息的熵过大,举个例子说明为何信息量大的数据更加不易识别,如果是二进制的数,如果有一位丢失了或者写得不清,那么我们有百分之五十的几率可以猜中,但是如果一个十进制的数据位丢失了,那么我们只有百分之十的几率猜中它,这就是实质。信息熵代表的是一种无序度,无序度越大,它承载的信息越多,我们想理解它就需要更多的努力,这该作何理解呢?我们面对一个未知的事物时,我们说它是无序的,混乱的,你对它完全未知它就是完全混乱完全无序,你对它部分未知,那么它就是部分混乱部分无序,你理解它的过程就是你得到信息的过程,就是你将该事物一个个无序的状态变成有序的过程,最终一切都成了有序的,那么你对该事物就完全理解了,因此你就得到了信息,因此信息量是相对于你对该信息的无知而言的,你对它越无知,那么它就越无序,它对你来讲信息量越大,引用一句话“熵,是物理名字,在信息论里则叫信息量。从控制论的角度来看,应叫不确定性。当我们不知道某事物具体状态,却知道它有几种可能性时,显然,可能性种类愈多,不确定性愈大。不确定性愈大的事物,我们最后确定了、知道了,这就是说我们从中得到了愈多的信息,也就是信息量大。”其实这也是和热力学有关系的,因为在你理解信息的时候,你的大脑要耗氧,这时产生的热量还是增加了热力学的熵,你理解的信息越多也就是信息量越大信息熵越大,那么你的大脑耗氧将越多,产生的热量将越多,其实信息熵只是热力学熵的一个抽象投影而已。我们知道,理解二进制信息时我们付出的努力没有理解十进制时的多(我们猜对的几率大),因此二进制就成了信息系统的首选,但是这只是选用二进制的原因之一,这里还要说明的是,以上仅仅是理解的一种方式,其实不要忘了,虽然十进制数据误码率高,但是它确实可以承载更多的信息,比如一个数字9,用十进制一个位就可以,用二进制需要4个位,误码率乘以四不一定更低,幸运的是,信息论的主体不是人,而是机器,机器是善于按位运算的,而且,信息熵也是理解一位的信息熵,因此二进制在这个意义上是首选。况且二进制的数字更容易被分辨,分辨系统设计更加容易,只需要识别两种状态足矣,没有第三种状态来搅局。

信息量大即信息熵高难道不是好事吗?其实对于结果来说是好事,毕竟我们的世界现在已经严重依赖于信息,但是对于我们理解信息来说,我们需要付出的会更多,但是如果对于信息熵少的系统,想拥有同样的信息量的话,必然需要更多次的仲裁才可以,因此总体上二进制信息的熵值低并不是它被选中的理由,但是仅凭一次仲裁中,二进制信息更容易被识别,更不易出错,得到正确结果更容易这些原因,它就应该被选中,毕竟谁不是一步一步处理信息的呢?虽然处理信息的主体是机器,它也是一步一步处理信息的,单步的性能更加有意义,它直接关系到处理器的发热,因为,信息的获得将最终统一到热力学的热熵。

选用二进制的另一个原因就是,它确实占用了最少的状态,从而节省了硬件,因为机器要为每一个状态准备一个空间。如果我们将一个R进制数据的一个位上的所有的可能值设为一个状态,那么一个n位的R进制数一共需要n*R个状态,我们设S=n*R,现在我们就要求S的最小值,我们这个计算中仅凭这些量根本不够,这个方程中,我们有S为值,而n和R为自变量,我们必须限定一个值,在这个值上比较谁的S更小,因为我们将二进制的1000和十进制的10比较是没有意义的,因此,我们再设一个值M,这个值是n位R进制数所能表示的最大值,我们就在这个值上比较,在这个最小值求解的过程中,我们可以认为M是恒定的,由上述定义可以导出下面的等式:M=R^n(其中^为乘方),那么进一步就有n=logRM,带入S=n*R就有S=RlogRM,利用对数的换底公式有:S=RlnM/lnR,因此我们最终得到了一个基于自然对数e的方程,前面说过我们可以将M了看做常数,下面我们求S的极值,初看起来它并没有单调特征,那么我们可以通过导数来求极值,(R/lnR)'=lnR-1,从这个导数可以看出,当R e时,S'>0,S单调递增,因此当R=e时,S取得最小值,因此,理论上,e进制数对于节省状态是最优的,但是理论终究不是实际,自然状态下无理数没有什么不好,但是在涉及工程学时,就更加青睐整数了,整数是离散的,适合处理,记住,不管用几进制数,计算机处理都是基于编码的,前面说过,编码都是离散的,某种意义上,计算机处理就是用离散的编码来用自己的方式重现连续的真实世界,计算机的最强大之处在处理而不是存储,因此它没有必要记住整个世界,但是它需要迅速的处理这个世界,离散的方式就是计算机的方式。在e的两边有2和3,我们没有必要比较2和3下哪个S更小,这时结果已经很明了了,刚才是理论推算,它推算出了一个e,现在该让工程学的方式给出一个具体的整数了,这时就要遵循一个原则,就是以理论为指导,就是最终的结果不要偏离e太远就可以,那么只有到了这时晶体管的意义才凸显,晶体管的特性最终采用了二进制。


原文链接:http://blog.csdn.net/dog250/article/details/5303482
加载中
返回顶部
顶部