今天看到David MacKay的文章:http://users.aims.ac.za/~mackay/sorting/sorting.html。里面提到利用信息论,称12球的问题可以系统地解决,不需要试错。学过信息论的大大们可能觉得火星了。我对信息论一知半解,所以看到这套思路觉得非常新鲜。有种用惯罗马计数法的人突然明白阿拉伯计数法,或者用惯加法的人突然领略乘法时的惊喜。文章里提到的教材Information Theory, Inference, and Learning Algorithms有详尽的讨论,而且作者还免费开放下载:http://users.aims.ac.za/~mackay/itila/book.html。
2008/5/22 pongba <pon...@gmail.com>:
--
新的理论从少数人的主张到一统天下,并不是因为这个理论说服了别人抛弃旧观点,而是因为一代人的逝去。
My blog: http://googollee.blog.163.com
5个整数,产生的全排列有5!=120种,从信息论的角度,信息量就是log_2{120} = 6.90689059560852 bit而两个数比较一次,显然可以产生1bit的信息量,所以7次比较几乎就是极限了。
H = - | ∑ | pilogpi |
我来解释一下吧
我们看比特的定义就行了。 说一个抛硬币 正反各 1/2 概率。 如果信号源是这个, 所含有的信息量就是 - 1/2 * log (1/2)
+ -1/2 * log(1/2) = 1 bit
所以, 一个能生成 1/2 1/2 概率分布的信号所含的信息量就是 1bit
今天看到David MacKay的文章:http://users.aims.ac.za/~mackay/sorting/sorting.html。里面提到利用信息论,称12球的问题可以系统地解决,不需要试错。学过信息论的大大们可能觉得火星了。我对信息论一知半解,所以看到这套思路觉得非常新鲜。有种用惯罗马计数法的人突然明白阿拉伯计数法,或者用惯加法的人突然领略乘法时的惊喜。文章里提到的教材Information Theory, Inference, and Learning Algorithms有详尽的讨论,而且作者还免费开放下载:http://users.aims.ac.za/~mackay/itila/book.html。
首先我承认,因为长期倾向于熵的统一理解,所以即使在香农公式中我也倾向于按照熵的"本质化定义"来思考,其实这样的思考,确实是不能直接应用在香农公式上的。但这不一定是我的问题,这个下面我会描述。
但是,我觉得Eric过于纠结熵在算法中的表达应用了。
首先,我刚才说了,你推导的表达式是属于信息论中,以香农的观点和定义方式来定义的熵的表达式,或者说是"信息熵"的表达式,换句话说,不管它的表达式是什么,熵表征系统的不确定性,无序性,而在"信息论"中,信息量表征系统的确定性,有序性,这个本质是不变的,大家都没有争议吧。
其次,那我们就可以从本质上看熵。一个系统序的程度和无序的程度,本身就是相反的。熵最早的应用是在热力学上,熵的表达式是系统末态的序减去出态的序,获得系统的"不确定性"的增加。自然,将熵取反,就表示系统确定性的增加(这是显然的,参考热力学第二定律),即初态的序,减去末态的序。
其三,应用到信息论领域,我们不能从"序"的观点来简单衡量熵了,信息系统和物理系统毕竟是两个东西。信息系统没有序,那么我们应该找一个别的量衡量,这就是不确定性。香农定义狭义信息论时,提出信息,是人们对事物了解的不确定性的消除或减少。而熵表示什么?正是人们对事物了解的不确定性的度量。也就是说,信息量的增加,必然表示熵的减少,但在他们所表征的通信系统中,总不确定性的绝对量是一定的。这和正负数的本质是一样的,正数越大,负数越小,但是两者绝对值相同。
用一个例子表示(这个例子和香农的认识是不同的),在通信系统中,我们把有信源和信宿。信源对于通信系统,是不确定性的表征(熵,或者说是认识上的混乱程度),信宿则是确定性的表征------我们收到一点信息,就消除了一点不确定性。如果我们不考虑干扰,信源发出的信息,是和信宿接受的信息,一一对应的,在这里,熵和信息量得到了统一。量相同,因表征的含义相反而表达式不同------相差一个符号。
维纳作为信息论的另一个创始人,曾说过
The quantity that we here define as amount of information is the negative of the quantity usually defined as entropy in similar situations"
可以说,这是维纳的个人看法,香农是这样看的:
The quantity which uniquely meets the natural requirements that one sets up for "information" turns out to be exactly that which is known in thermodynamics as entropy.
我个人看法,是因为维纳是以一个更高层面的高度来看熵这个东西,无论是在热力学中,生物学中,信息学中,熵的本质都是不变的,只不过其描述的量,因为对象的不同而不同(比如不能用序衡量信息系统)。热力学中熵表示的是"系统混乱状态",信息论中信息熵表示的是信息量,生物学中熵表示的是生物多样性,仅此而已。
香农本身是不满意"信息论"这个名称的,为什么呢?因为他自己倾向于用"熵"来命名这个理论。我们可以从信息论的发展上看,得出"信息量"在香农公式中,实在无法成为一个完美的统一,甚至可以说,如果香农公式是绝对合理的,那么对于香农公式定义的通信系统来说,它传递的不是"信息量"。
这个怎么理解呢?实际上,香农并不关心你这个信道传递的是什么,我们通过信道传输的所有东西,都是香农所谓的"信息",包括比如我们说的"nonsense"。更通俗点来说,比如我们聊天时,信息 "I feel fine" 对于我们来说,是信息, 而 "ff eeI efni" 则不属于信息,或者有意义的信息。但是在香农定义中,这也属于信息,对于通信系统是有意义的。这就是为什么香农倾向于用"熵"来命名这个理论。很显然,后者只有对熵,才能叫有意义。
但是,对于信息论研究学者来说,香农这个定义并不是很严密的,这样让后人为他擦屁股吃尽了苦头。Langefors甚至直接就提议,把信息论改为"signal transmission theory",信号传输论,似乎更好一些。Miller在写书的时候,引用香农公式的时候,直接就把这个负号是去掉了的。后人在理解香农的定义是,还用"entropy contains more information than structure"来解释香农的理论,虽然在无数人看来,这是和common sense相悖的。还有一堆香农继承者在90年代提出的"负信息","相对信息",无一不是对这种contradiction的补充,或者"试图补充"。
所以,用信息量来衡量香农公式,是不对的,信号量是一个更好的表述。在香农看来,通信系统的组成,是信号的发射器和接收器----仅此而已。而Eric,你所举的例子,其一,不属于传统通信领域,其二,全部都是"信息量"的例子,也就是说,这些系统中暂时都不含有"nonsense",所以理解这些系统,我个人认为,都可以用
"信息熵"和"信息量"相反
来表示。
我说了一大堆废话,主要就是想表明,熵应该是被统一看待和理解的,无论在什么领域,我们不能说在物理领域中熵的推导表示意思A,在信息学中熵的同样表达式(实际上香农用entropy,本身就是参考的热力学),我们就推导出意思B了。
在这点上,我很赞同维纳的看法。香农本身不承认维纳的观点,但是按照概率和对数的推导------这个Eric你已经推导过了------不管你愿意怎么理解,自然推导也好,巧合也好------本质上,最终的形式还是归于"相反的信息量",还是和熵的原始定义有较好的呼应。熵不是信息量的数学期望,是信息量数学期望的相反数,无论是概念上,还是表达形式上。
用你的例子说明,在这里,比特数表示的,是我们至少可以用多少次划分,来获得某个排列(如abdce),比如我只需要7次(最简单的二分法),就一定能确定abdce的表示方式。至于这个abdce你用0000000表示,还是用1111110表示,是没有关系的,我获得的abdce的表示,就是我们需要的信息量。熵的值和你具体对某种可能采用什么映射,也是没有关系的。
另外,这里大家概率一样,所以bit的数目是7,如果在某个应用中,概率不同,那么实际所用次数实际比7小,也就是说,在等概率事件中,信息熵最大。
说通俗点,你扔硬币,你规定正面朝上是1,还是反面朝上是1,都没有关系,不影响这个系统的信息量。
2008/5/26 Justin L <ice...@gmail.com>:
--
Yours Sincerely
Kun
首先,信息论本来就是理论研究,熵的概念可以用于估计,检测,金融模型,这些都是理论性模型的应用。但不代表它没有实际意义阿。我从开头再重新说一遍好了,拿通信系统举例子来体现"实用性",熵的概念以香农的"信息熵"为准,也就是Eric所阐述的。
我们知道,一个通信系统,是由信源,信道,信宿所组成,信源发出消息,经过信道,到达信宿,信宿收到消息,获得了信息,这个过程就称作通讯。
然后我们从源头开始看,信息论,或者说熵的提出为了什么?为了表征源头的不确定性,比如源头能发0,1两种码,显然,信宿知道你源头能发两种码,但不知道信源某个时刻具体发0还是发1,这是显然的,因为这就是通信的目的。
怎么判断一个通信系统是否有价值?举个例子,如果一个信源,它发1的概率是100%,那么猜都不用猜,信宿收到的序列肯定是1111111,ok,这就是没有实用价值的通信系统。我们要它没用。如果信源发0和发1的概率为各50%,我们说这是最有价值的通信系统,因为每次通信,我们获得的信息量(在这里等于熵量)都是最大的。如果信道是无噪的,我每一次通信都能消除不确定度,在这里,所获得的信息量就是不确定度(这就是为什么香农本人是倾向于用"熵论"而非"信息论"命名)。
很多教科书在讲述这个问题的时候,都是一笔带过,我一些同学到现在也没完整明白,为什么前者没有价值,后者有价值。原因是这样的,对于一个通信系统来讲(其他任何系统同理)熵最大的意义,是我们因为数据不足而进行的人为假定和人为添加信息最小,从而所获得的解误差最小,最合乎自然,而最自然的解,是所有系统追求的目标。
所以在这里,就是熵的最基础的实际应用,那就是评估通信系统。并可以因此引伸出很多别的概念,比如分析有扰信道下获得的实际平均信息量,或者寻找某种概率分布,让信道容量最大。
这和我最后获得的信息序列是0001101还是0011100有关系么?如果发0和发1概率相等,我最后不管获得什么序列,得到的熵量都是一样的,这和映射一点关系都没有。
然后我们换一个角度,不说通信系统了,说说算法。前面说过,熵的大小,表示事件的不确定性大小,那我们具体怎么来应用熵?举个例子,我们对5,4,3,1,2,五个数字排序,假如我们使用最笨的循环排序,到了第四步时,序列变成了1,2,3,5,4,然后你把5还是按照之前的方法来比较,这显然是做了很多无用功,为什么?因为1,2,3是已经确定了的东西,他们比5小才会在之前的比较中排在前面,我们说,在这一步,5和1,2,3的比较都无法带给我们任何信息量了。所以,理论上最完美的算法,就是每次操作,熵都是最大的。在这里,我们不需要关心1,2,3,4,5这五个数字的全排列,如何映射到某个二进制序列上。
再推广,熵可以衡量你提出的算法模型在某个应用中的错误率,或者说是实用性,比如现在南方都在遭受洪灾,如何让洪水预报的水文模型更加精确,从而让误差最少,是研究人员的目的。此时,水文预报的不确定性,就是是影响预报调度风险率的重要因素。
显然,在这里,熵就派上了用场,从刚才对算法的分析中,我们可以知道,一个不确定性问题的可行解,熵最大的解一定是最好的。于是,我们只需要建立一个最大熵模型,以其为准则求出相应的误差的概率密度函数,就可以知道满足什么条件,误差最小,然后把各种水文特征量带入,就能够知道洪水预报误差的特性。
在这个例子中,你当然也可以用xxxbit来去映射洪水预报误差的各种可能情况,但是和前面一样,这是毫无意义的。对于熵来说,我们更关注的是某个系统具备某个特性或产生某种趋势的概率,而不是要求出一个精确解。
这已经是我能力范围内最多的解释,如果Justin还是要问"如何映射能得到最后解的编码形式",我只能说,也许有相关研究,但映射方法已经超出我的所学范围。
2008/5/31 Justin L <ice...@gmail.com>:
我是这么理解的。如果定义了偏序关系,也就是大小关系,那么两个数的关系非此即彼,含有1bit的信息量。比较一次,对象的信息量就会减少1bit
那么我们如何量化的度量信息量呢?我们来看一个例子,马上要举行世界杯赛了。大家都很关心谁会是冠军。假如我错过了看世界杯,赛后我问一个知道比赛结果的 观众"哪支球队是冠军"? 他不愿意直接告诉我, 而要让我猜,并且我每猜一次,他要收一元钱才肯告诉我是否猜对了,那么我需要付给他多少钱才能知道谁是冠军呢? 我可以把球队编上号,从 1 到 32, 然后提问: "冠军的球队在 1-16 号中吗?" 假如他告诉我猜对了, 我会接着问: "冠军在 1-8 号中吗?" 假如他告诉我猜错了, 我自然知道冠军队在 9-16 中。 这样只需要五次, 我就能知道哪支球队是冠军。所以,谁是世界杯冠军这条消息的信息量只值五块钱。
我觉得我一开始就解释了排序就是问一个 a>b 否的问题,以及猜数字就是小熊分饼干所以要保证均匀这个事情吧 :) 我也提到了决策树, 最大熵(机
会均等)的问题, 这些问题都是一起的.
其实不管信息论也好 二叉决策树也好, 思路都是一样的, 就是看这个问题值不值得问. 只是角度不同. 或许pangba兄觉得用决策树的方法看更加
本质, 我反而觉得用信息论更加本质, 其实都是一样的, 只是信息论形式化了一下概率变成了信息量而已 :)
另外,这几天我重新把TAOCP 第三卷(第二版)翻出来看了看 Knuth 怎么说这个问题的, 发现真是牛大了:
先说性能:
pp148, section 5.2.3 说:
When N = 1000, the approximate average runiing time on MIX are
160000u for heapsort
130000u for shellsort
80000u for quicksort
这里, Knuth 同学发现一般情况下 heapsort 表现很不好. 于是, 在下文他就说, 习题18 (pp156, 难度21)
(R.W.Floyd) During the selection phase of heapsort, the key K tends to
be quite small, so that nearly all the comparisons in step H6 find
K<K_j. Show how to modify the algorithm so that K is not compared with
K_j in the main loop of the computation, thereby nearly cutting the
average number of comparisons in half.
答案里面的方法和DMK的方法是一样的. (我觉得DMK是看了这个论文或者TAoCP的) 这里说 by half, 就正好和快排差不多了.
再说信息论分析:
在5.3.1 (pp181) 高爷爷就说, "排序问题可以看成是一个书上的鸟儿排排站的问题. (还特地画了一棵树), 下一段就说, 其实这个也
有等价说法, 就是信息论, 我们从称球问题说起....."
然后后面一直讲信息论和最小比较排序
回想当年看这个书的时候,不求甚解, 看到难的数学就跳, 居然这些深入浅出的东西都被跳过了. 撞墙去了.
我觉得我一开始就解释了排序就是问一个 a>b 否的问题,以及猜数字就是小熊分饼干所以要保证均匀这个事情吧 :) 我也提到了决策树, 最大熵(机
会均等)的问题, 这些问题都是一起的.
其实不管信息论也好 二叉决策树也好, 思路都是一样的, 就是看这个问题值不值得问. 只是角度不同. 或许pangba兄觉得用决策树的方法看更加
本质, 我反而觉得用信息论更加本质, 其实都是一样的, 只是信息论形式化了一下概率变成了信息量而已 :)
另外,这几天我重新把TAOCP 第三卷(第二版)翻出来看了看 Knuth 怎么说这个问题的, 发现真是牛大了:
先说性能:
pp148, section 5.2.3 说:
When N = 1000, the approximate average runiing time on MIX are
160000u for heapsort
130000u for shellsort
80000u for quicksort
这里, Knuth 同学发现一般情况下 heapsort 表现很不好. 于是, 在下文他就说, 习题18 (pp156, 难度21)
(R.W.Floyd) During the selection phase of heapsort, the key K tends to
be quite small, so that nearly all the comparisons in step H6 find
K<K_j. Show how to modify the algorithm so that K is not compared with
K_j in the main loop of the computation, thereby nearly cutting the
average number of comparisons in half.
答案里面的方法和DMK的方法是一样的. (我觉得DMK是看了这个论文或者TAoCP的) 这里说 by half, 就正好和快排差不多了.
再说信息论分析:
在5.3.1 (pp181) 高爷爷就说, "排序问题可以看成是一个书上的鸟儿排排站的问题. (还特地画了一棵树), 下一段就说, 其实这个也
有等价说法, 就是信息论, 我们从称球问题说起....."
然后后面一直讲信息论和最小比较排序
回想当年看这个书的时候,不求甚解, 看到难的数学就跳, 居然这些深入浅出的东西都被跳过了. 撞墙去了.