熵的概念最早起源于物理学,用于度量一个热力学系统的无序程度。
在信息论里则叫信息量,即熵是对不确定性的度量。信息论的创始人香农在其著作《通信的数学理论》中提出了建立在概率统计模型上的信息度量。他把信息定义为“用来消除不确定性的东西”。在信息世界,熵越高,则能传输越多的信息,熵越低,则意味着传输的信息越少。
当我们不知道某事物具体状态,却知道它有几种可能性时,显然,可能性种类愈多,不确定性愈大。不确定性愈大的事物,我们最后确定了、知道了,这就是说我们从中得到了愈多的信息,也就是信息量大。所以,熵、不确定性、信息量,这三者是同一个数值。
两种可能性:最简单的是只有两种可能性,非此即彼,我们就以这种事物的信息量为单位,叫1比特(bit)。
如果可能性数目有2的n次方(N=2^n):那就是n比特,即信息量等于可能性数目N的‘以2为底的对数’:H=㏒2(N)=㏒(N)/㏒(2)。后一个等号说明,以2为底的对数㏒2可用普通对数㏒(以10为底)来计算,即用N的普通对数除2的普通对数。N=3种可能性时,信息量H=㏒(3)/㏒(2)=1.585。只要有函数型计算器,我们就可以进行以下简单实例的验算。
我们现在不是讨论事物本身的信息量,而是讨论描述事物的文字符号包含的信息量。先讨论比较简单的数字符号。
二进制数:二进制数只有2个符号:0和1。一位二进制数有2种可能性,其信息量是1比特。n位二进制数可记N=2^n个不相等的数,含有n比特信息,所以每位数字的信息量还是1。
十进制数:十进制数字有10个,每位数字的信息量是㏒(10)/ ㏒(2)=1/0.301=3.32。不难验证所有十进制数,每位数字的信息量都是3.32,例如3位数共1000个,信息量是㏒(1000)/ ㏒(2)=3*3.32。而十六进制的每位数字的信息量是4。
事情好像很简单,其实不然。试考虑还没有发明数字的远古人,他用刻画来记数,用刻n画的方法记数目n。10以内的数平均每个数要刻(1+10)/2=5.5画,每画的平均信息量是3.32/5.5=0.604,而100以内的数平均每个数(1+100)/2=50.5画,每画的平均信息量只有6.64/50. 5=0.132。因为古人刻的每一画是没有次序或位置的区别的,所以每一画的信息量变化很大,数值则很小。次序或位置非常重要,罗马字和我国古代的数码,也是短画,但要讲究位置组合,每画所含的信息量就大大提高了。注意,我们以后讨论的文字信号,都是有次序的。
这样,文字信号的信息量H是信号个数n的以2为底的对数: H=㏒(n)/ ㏒(2)。英文有 26个字母,每个字母的信息量H=㏒(26)/ ㏒(2)=4.700。汉字个数不定,算1000个时等于3*3.32=9.96,算作一万、十万时则分别为13.28、16.60。我们能随意增加大量一辈子也用不到的汉字,来无限地增加每个汉字的信息量?这当然不合理。原来信息量不能无条件地按符号的个数来计算,只有各符号的可能性一样,都等于1/n时才行。数字符号就满足这样的条件。事实上信息量应按符号的可能性(数学上叫概率大小)来计算,它是概率的负对数。对于二进制数,每个符号的概率都等于1/2,按负对数计算:-㏒(1/n)=-(㏒(1)- ㏒(n))=-(0-㏒(n))=㏒(n)。这就是我们前面使用的公式的来源。如果符号i的概率pi不等于1/n,则Hi=-㏒(pi)。因为各个符号的概率pi不相等,对于总体来说,平均信息量就是它们的加权平均H=-∑pi㏒(pi),这里累加符号∑表示对所有 i 进行累计。(以上式子除以㏒(2),就可化为以比特为单位了)。
如果有一枚理想的硬币,其出现正面和反面的机会相等,则抛硬币事件的熵等于其能够达到的最大值。我们无法知道下一个硬币抛掷的结果是什么,因此每一次抛硬币都是不可预测的。因此,使用一枚正常硬币进行若干次抛掷,这个事件的熵是一比特,因为结果不外乎两个——正面或者反面,可以表示为0, 1编码,而且两个结果彼此之间相互独立。若进行n次独立实验,则熵为n,因为可以用长度为n的比特流表示。[1]但是如果一枚硬币的两面完全相同,那个这个系列抛硬币事件的熵等于零,因为结果能被准确预测。现实世界里,我们收集到的数据的熵介于上面两种情况之间。
另一个稍微复杂的例子是假设一个随机变量X,取三种可能值
因此熵实际是对随机变量的比特量和顺次发生概率相乘再总和的数学期望。
信源的不确定性:信源发出的消息不肯定性越大,收信者获取的信息量就越大。如果信源发送的消息是确切的,则对收信者来说没有任何价值(没有信息量)。衡量不确定性的方法就是考察信源X的概率空间。X包含的状态越多,状态Xi的概率pi越小,则不确定性越大,所含有的信息量越大。
不确定程度用H(X)表示,简称不确定度, 用概率的倒数的对数来度量不肯定程度。一般写成H(X) = log(1/p) = -log(p).
自信息量:一个事件(消息)本身所包含的信息量,由事件的不确定性决定的。
即随机事件Xi发生概率为P(xi),则随机事件的自信息量定义为:
表示事件Xi发生后能提供的信息量。事件不同,则他的信息量也不同,所以自信息量是一个随机变量。不能用来表征整个信源的不肯定性。可以用平均自信息量来表征整个信源的不肯定性。
定义信息量为概率的负对数,是很合理的。试考虑一个两种可能性的事物,仅当可能性相等时,不确定性最大,最后我们知道了某一可能性确实发生了,也得到最大的信息量。如果其中某一个可能性很大(另一个必然很小),不确定性就很小。如果可能性大到1,也就是必然要发生的,因为1的对数为0,我们从知道它的发生这件事得到的信息也为0。
信息熵:随机变量自信息量I(xi)的数学期望(平均自信息量),用H(X)表示,即为熵的定义:
即一个值域为{x1, ..., xn}的随机变量 X 的熵值 H 定义为:
其中,E 代表了期望函数,而 I(X) 是 X 的信息量(又称为信息本体)。I(X) 本身是个随机变量。如果 p 代表了 X 的机率质量函数(probability mass function),则熵的公式可以表示为:
在这里 b 是对数所使用的底,通常是 2, 自然常数 e,或是10。当b = 2,熵的单位是bit;当b = e,熵的单位是 nat;而当 b = 10,熵的单位是 dit。
pi = 0时,对于一些i值,对应的被加数0 logb 0的值将会是0,这与极限一致。
如果有一个系统S内存在多个事件S = {E1,...,En},每个事件的机率分布 P = {p1, ..., pn},则每个事件本身的信息量为:
(对数以2为底,单位是比特(bit))
为底,单位是纳特/nats)
如英语有26个字母,假如每个字母在文章中出现次数平均的话,每个字母的讯息量为:
而汉字常用的有2500个,假如每个汉字在文章中出现次数平均的话,每个汉字的信息量为:
实际上每个字母和每个汉字在文章中出现的次数并不平均,比方说较少见字母(如z)和罕用汉字就具有相对高的信息量。但上述计算提供了以下概念:使用书写单元越多的文字,每个单元所包含的讯息量越大。
这个平均消息量就是消息熵。因为和热力学中描述热力学熵的玻耳兹曼公式形式一样,所以也称为“熵”。
英语文本数据流的熵比较低,因为英语很容易读懂,也就是说很容易被预测。即便我们不知道下一段英语文字是什么内容,但是我们能很容易地预测,比如,字母e总是比字母z多,或者qu字母组合的可能性总是超过q与任何其它字母的组合。如果未经压缩,一段英文文本的每个字母需要8个比特来编码,但是实际上英文文本的熵大概只有4.7比特。如果压缩是无损的,即通过解压缩可以百分之百地恢复初始的消息内容,那么压缩后的消息携带的信息和未压缩的原始消息是一样的多。而压缩后的消息可以通过较少的比特传递,因此压缩消息的每个比特能携带更多的信息,也就是说压缩信息的熵更加高。熵更高意味着比较难于预测压缩消息携带的信息,原因在于压缩消息里面没有冗余,即每个比特的消息携带了一个比特的信息。香农的信息理论揭示了,任何无损压缩技术不可能让一比特的消息携带超过一比特的信息。消息的熵乘以消息的长度决定了消息可以携带多少信息。
如果两个系统具有同样大的消息量,如一篇用不同文字写的同一文章,由于是所有元素消息量的加和,那么中文文章应用的汉字就比英文文章使用的字母要少。所以汉字印刷的文章要比其他应用总体数量少的字母印刷的文章要短。即使一个汉字占用两个字母的空间,汉字印刷的文章也要比英文字母印刷的用纸少。
已经有了熵作为衡量训练样例集合纯度的标准,现在可以定义属性分类训练数据的效力的度量标准。这个标准被称为“信息增益(information gain)”。简单的说,一个属性的信息增益就是由于使用这个属性分割样例而导致的期望熵降低(或者说,样本按照某属性划分时造成熵减少的期望)。在信息增益中,衡量标准是看特征能够为分类系统带来多少信息,带来的信息越多,该特征越重要。对一个特征而言,系统有它和没它时信息量将发生变化,而前后信息量的差值就是这个特征给系统带来的信息量
更精确地讲,一个属性A相对样例集合S的信息增益Gain(S,A)被定义为:
。当且仅当p1=p2=...=pn时,等号成立,此时系统S的熵最大。
3、联合熵:
4、条件熵:
抛硬币的熵H(X)(即期望自信息),以比特度量,与之相对的是硬币的公正度 Pr(X=1).
注意图的最大值取决于分布;在这里,要传达一个公正的抛硬币结果至多需要1比特,但要传达一个公正的抛骰子结果至多需要log2(6)比特。
掷骰子例子太简单,一点也不“高大上”,但也能说明不少问题。如果要精确计算像小妹读书例子中一句语言包括的信息量就要复杂多了。句子中的每一个字出现的概率有所不同,一句话中所有字的概率以一定方式组合起来,决定了这一句话出现的概率。于是,香农给出公式(2),不仅仅针对语言句子,而是针对一般的所谓“信息源”,用随机变量中所有可能事件信息量的平均值,来度量这个随机变量“信源”之信息,称之为“信息熵”,也叫信源熵,自信息熵等。前面计算而得的S匀称硬币和S匀称骰子,都是信息熵。
计算信息熵的公式(2)可以推广到连续取值的随机变量,只需将(2)中的求和符号代之以积分即可。用p(x)取代pi,函数p(x)是信源的事件样本的概率分布。
所谓通讯,就是信息的传输过程,简单地说包括信源(发出)、信道(传送)、信宿(接收)三个要素。比如说,老林收到小张一条微信消息,小张发出的消息可看作是信源,微信是信道,老林接收到消息是信宿。香农的信息熵,不仅可以描述信源,也能描述信道的容量,即传输能力,香农的理论将通信问题从经验转变为科学。
对上面我们所举的“小妹读书”的语言例子,容易使人从“语义”上来理解传递的信息量。这种理解基于人们的经验,或许与信息量有点关系,但完全不能等同于通信工程方面所说的信息量,就科学而言,上例中每句话的信息熵是可以从每个字的信息量严格用公式计算出来的,与那几句话仅仅就语义而作出的判断完全是两码事。比如说,工程上计算中文英文信息熵的方法便与日常所谓的“语义”无关,英语计算中不是用单词,而用字母,虽然单个汉字有字义,一个英文字母没有任何语义。
英语有26个字母(没计算空格),假如每个字母使用时出现的几率相同的话,每个字母的信息量应该为:
信息量(1个英语字母) = (-log2(p英文)) = -log2(1/26) = 4.7bit。
而汉字的数目大多了,常用的就有2千多个(约2500个),假如每个汉字出现几率相同的话,每个汉字的信息量为:
信息量(1个汉字) = (-log2(p汉字)) = -log2(1/2500) = 11.3bit。
刚才计算的英文字母信息量和汉字信息量都是假设所有元素出现几率相同的情况,但这点完全不符合事实,英文中26个字母各有各的概率,中文的几千上万个字出现概率也大不相同。所以,如果想要计算一段话的信息熵,就必须知道其中每个字的概率后再来计算。尽管不知道“小妹读书”例子中每个汉字的概率,但后面的每一句话都包含了前一句话中的所有的“字”,从这一点起码可以判定,那5句话的信息熵,的确是一个比一个大。
从上面的计算可知,对平均概率分布而言,英文字母的信息量为4.7bit,一个中文字的信息量11.3bit,这是什么意思呢?设想有一本书,分别有英文版和中文版,再进一步设想两个版本都没有废话,表达的信息总量完全相等。那么,显然地,中文版的汉字数应该要少于英文版的英语字母数,不知道这算不算汉字的优点,但却显然是我们观察到的事实:从英文翻译而来的中文书,页数要少多了。
香农的理论以概率论为工具,所以信息熵更是概率论意义上的熵。统计力学也用概率论,在描述不确定性这一点上是一致的,但统计和热力学的熵更强调宏观的微观解释,以及熵表达的时间不可逆等等物理意义。统计物理中的熵是系统的状态量,大多数情况下不用作传递量,信息论中很多情况将熵也用作传递量,似乎更容易混淆。实际上,不知道是否真的有那么多的场合,难道都必须要使用“熵”这个名词吗?
香农根据概率取对数后的平均值定义信息熵。如果只有一个随机变量,比如一个信息源,定义的是源的自信息熵。如果有多个随机变量,可以定义它们的条件概率、联合概率等,相对应地,也就有了条件熵、联合熵、互信息等等,它们之间的关系如下面左图所示。
比如说,最简单的情况,只有两个随机变量X和Y。如果它们互相独立的话,那就只是将它们看成两个互相不影响的随机变量而已,在那种情形,上面图1左图中的两个圆圈没有交集,变量X和Y分别有自己的自信息熵H(X)和H(Y)。如果两个变量互相关联,则两个圆圈交叉的情况可以描述关联程度的多少。图1中的条件熵H(X|Y)表示的是,在给定随机变量Y的条件下X的平均信息量;相类似地,条件熵H(Y|X)是随机变量X被给定的条件下Y的平均信息量。联合熵H(X,Y),则是两个变量X,Y同时出现(比如同时丢硬币和骰子)的信息熵,也就是描述这一对随机变量同时发生平均所需要的信息量。图1中两个圆的交叉部分I(X;Y)被称为互信息,是两个变量互相依赖程度的量度,或者可看作是两个随机变量共享的信息量。
信息论中的熵通常用大写字母H表示,如图中的H(X)、H(Y)、H(X|Y)、H (Y|X)等,但互信息通常被表示为I(X;Y),不用字母H。其原因是因为它不是直接从概率函数的平均值所导出,而是首先被表示为“概率比值”的平均值。从图1右边的公式可见,联合熵是联合概率的平均值,条件熵是条件概率的平均值,互信息则是“联合概率除以两个边缘概率”的平均值。
直观地说,熵是随机变量不确定度的量度,条件熵 H(X|Y)是给定Y之后X的剩余不确定度的量度。联合熵是X和Y一起出现时不确定度的量度。互信息I(X;Y)是给定Y之后X不确定性减少的程度。
互信息的概念在信息论中占有核心的地位,可以用于衡量信道的传输能力。
如图2所示,信源(左)发出的信息通过信道(中)传给信宿(右)。信源发出的信号,和信宿收到的信号,是两个不同的随机变量,分别记作X和Y。信宿收到的Y与信源发出的X之间的关系不外乎两种可能:独立或相关。如果Y和X独立,说明由于信道中外界因素的干扰而造成信息完全损失了,这时候的互信息I(X;Y)=0,通信中最糟糕的情况。如果互信息I(X;Y)不等于0,如图中所示的橘色重叠部分,表明不确定性减少了。图中两个圆重叠部分越大,互信息越大,信息丢失得越少。如果Y和X完全相互依赖,它们的互信息最大,等于它们各自的自信息熵。
互信息在本质上也是一种熵,可以表示为两个随机变量X 和 Y相对于它们的联合熵的相对熵。相对熵又被称为互熵、交叉熵、KL散度、等。
首先,对一个随机变量X,如果有两个概率函数p(x), q(x),相对熵被定义为:
在互信息的情形,如图1右下方的I(X;Y) 表达式,被两个随机变量X和Y定义,也可看成是相对熵,在一定程度上,可以看成是两个随机变量距离的度量。
两个随机变量的互信息不同于概率论中常用的相关系数(correlation)。相关系数表示两个随机变量的线性依赖关系,而互信息描述一般的依赖关系。相关系数一般只用于数值变量,互信息可用于更广泛的包括以符号表示的随机变量。
热力学和统计物理中有热力学第二定律,即熵增加原理,信息论中则有最大熵原理。
我们在日常生活中经常碰到随机变量,也就是说,结果不确定的事件。诸如旋转硬币掷骰子,都是例子。还有比如说,球队A要与球队B进行一场球赛,结果或输或赢;明天的天气,或晴或雨或多云;股市中15个大公司的股价,半年后有可能是某个范围之内的任何数值……但是,在大多数情况下,人们并不知道随机变量的概率分布,或者说,只知道某个未知事件的部分知识而非全部,有时候往往需要根据这些片面的已知条件来猜测事件发生的概率。有时猜得准,有时猜不准,猜不准损失一点点,猜准了可能赚大钱。事件发生的随机性及不可知性,就是支持赌城的机器不停运转的赌徒心态的根源。
人们猜测事件发生的概率,多少带有一定的主观性,每个人有他自己的一套思维方法。如果是一个“正规理性”(这个概念当然很含糊,但假设大多数人属于此类)思维的人,肯定首先要充分利用所有已知的条件。比如说,如果小王知道球队A在过去与其他队的10场比赛中只赢过3次,而球队B的10场比赛赢过5次的话,他就应该将赌注下到球队B上。但是,小李可能了解了更多的消息:球队B的主要得力干将上个月跳槽到球队A来了,所以,他猜这次比赛球队A赢的可能性更大。
除了尽量利用已知信息外,还有没有什么其它客观一点的规律可循呢?也就是说,对于随机事件中的未知部分,人们“会”如何猜测?人们“应该”如何猜测?举例说,小王准备花一笔钱投资来买15个大公司的股票,如果他对这些公司一无所知,他选择的投资方案很可能是15种股票均分。如果有位行家告诉他,其中B公司最具潜力,其次是G公司。那么,他可能将更多的钱投资到B和G,其余的再均分到剩下的13种股票中。
上面的例子基本符合人们的常识,科学家却认识到这其中可能隐藏着某种大自然的玄机。大自然最玄妙的规律之一是最小作用量原理,造物主喜欢极值,或者说凡事讲究最优化。统计规律中的随机变量也可能遵循某种极值规律。
如上所述,随机变量的信息熵与变量的概率分布曲线对应。那么,随机变量遵循的极值规律也许与熵有关!信息熵来自于热力学熵,信息熵的“不确定程度的度量”也可以用来解释热力学熵。当然,热力学中(物理中)不确定性的来源有多种多样,必须一个一个具体分析。经典牛顿力学是确定的,但是,我们无法知道微观粒子的情况,这点带来了不确定性。也许是因为测量技术使我们无法跟踪,也许是因为粒子数太多而无法跟踪,也有可能是我们主观上懒得跟踪、不屑于跟踪,反正就是不跟踪,即“不确定”!如果考虑量子力学,还有不确定原理,那种非隐变量式的,爱因斯坦反对的本质上的不确定。即使是牛顿力学,也有因为初始条件的细微偏差而造成的“混沌现象”,蝴蝶效应式的不确定。此外,还有一种因为数学上对无穷概念的理解而产生的不确定。
总之,物理中的熵也能被理解为对不确定性的度量,物理中有熵增加原理,一切孤立物理系统的时间演化总是趋向于熵值最大,朝着最混乱的方向发展。那么,熵增加原理是否意味着最混乱的状态是客观事物最可能出现的状态?从信息论的角度看,熵最大意味着什么呢?1957年,美国圣路易斯华盛顿大学的物理学家E.T.Jaynes研究该问题并提出信息熵的最大熵原理,其主要思想可以用于解决上述例子中对随机变量概率的猜测:如果我们只掌握关于分布的部分知识,应该选取符合这些知识但熵值最大的概率分布。因为符合已知条件的概率分布一般有好些个。熵最大的那一个是我们可以作出的最随机,也是最符合客观情况的一种选择。Jaynes从数学上证明了:对随机事件的所有预测中,熵最大的预测出现的概率占绝对优势。
接下来的问题是:什么样的分布熵值最大?对完全未知的离散变量而言,等概率事件(均衡分布)的熵最大。这就是小王选择均分投资15种股票的原因,“不要把鸡蛋放到一个篮子里”,不偏不倚地每种股票都买一点,这样才能保留全部的不确定性,将风险降到最小。
如果不是对某随机事件完全无知的话,可以将已知的因素作为约束条件,同样可以使用最大熵原理得到合适的概率分布,用数学模型来描述就是求解约束条件下的极值问题。问题的解当然与约束条件有关。数学家们(Tribus等)从一些常见的约束条件得到几个统计学中著名的典型分布,如高斯分布、伽马分布、指数分布等,这些自然界中常见分布,实际上都是最大熵原理的特殊情况。 最大熵理论再一次说明了造物主的“智慧”,也见证了“熵”这个物理量的威力!
到此为止,我们的讨论基本是针对随机变量而言。如果有一连串的随机变量按时间排列起来,就叫做随机过程。实际上,就广义而言,这儿的“过程”不一定仅仅代表“时间”序列,反正是一个序列就行,特别是对离散的、信息论中感兴趣的那些序列,比如文字这种东西,一个接一个,未必见得需要理解成时间。
本文的开头介绍过因多个(主要是两个)随机变量之间的关联情况而定义的“熵”。当我们考虑一连串的随机变量时,这些变量之间有可能互相关联。最简单的情况是下一个状态的条件概率分布仅仅只依赖于当前的状态,这种性质叫做“无记忆”的马尔可夫性质,因安德烈·马尔可夫(A.A.Markov,1856-1922)得名,如果是离散变量组成的具有马尔可夫性质的一连串随机变量,则被称为马尔可夫链。
在马尔可夫链的每一步,系统根据概率分布,从一个状态变到另一个状态。比如说,下图a所示表明某一天的天气转换到下一天天气的概率。
这儿的所谓天气,只简单地用两个变量:雨或晴来表示。你每天早上8点醒来,便观察天气是“雨”或者“晴”,如果每天8点钟“雨晴”的变换规律是一个马尔可夫链,并简单地符合图3a给出的“雨晴”概率转换图(或可表示成一个2x2的矩阵),你可以从当天的状态,推测第二天“雨或晴”的概率。
随机漫步(布朗运动模型之一)是马尔可夫链的另一个典型例子。最简单的二维随机漫步(图3b)中的每一步,可以移动到任何一个相邻的格点(这儿的变量数比“天气”例子中多了一点,有东南西北四个方向),且移动到每一个点的概率都是相同的,无论之前漫步路径如何,下一个点的位置只与当前这一个点的位置有关,然后依次类推。
Kolmogorov熵(K)是系统混沌性质的一种度量,它与Lyapunov 指数之间存在一定的关系。Kolmogorov熵是常用的表征系统混沌性质的熵中的一种,是描述动力学系统轨道分裂数目渐进增长率的度量。动力学系统按其混沌程度可分为规则、确定性混沌和随机。对于规则运动,K=0;在完全随机运动中,K→∞;若系统表现为确定性混沌运动,则K是一个大于零的常数。因此,Kolmogorov熵越大,系统的混沌程度越大,或者说动力系统越复杂。
Kolmogorov 熵在拓扑空间中的相似定义。描述连续映射的不确定性。