我对熵公式的理解是,它用于计算表示某些数据所需的最小位数。定义时,通常用不同的措词,但是到目前为止,我一直依靠以前的理解。

这是我的问题。假设我的序列为100'1',后跟100'0'= 200位。字母是{0,1},熵的底数是2。符号“0”的概率是0.5,而“1”的概率是0.5。因此,熵是1或1位,代表1位。

但是,您可以使用100/1/100/0之类的代码对它进行游程编码,其中要输出的位数是位数。似乎我的表示形式小于数据。特别是如果您将100增加到更大的数字。

我目前使用:http://en.wikipedia.org/wiki/Information_entropy作为引用。
我哪里做错了?它是分配给符号的概率吗?我不认为这是错的。还是我将压缩和熵之间的联系弄错了?还要别的吗?

谢谢。

编辑

遵循我后续的一些答案是:您是否将熵公式应用于消息的特定实例以尝试找出其信息内容?接受消息“aaab”并说熵为〜0.811是否有效。如果是,那么1 ... 10 .... 0的熵是多少,其中1s和0s使用熵公式重复n次。答案是1吗?

是的,我了解您正在创建输入符号的随机变量,并根据您的消息猜测概率质量函数。我要确认的是熵公式没有考虑符号在消息中的位置。

最佳答案



您非常接近,但是最后一个问题是错误在哪里。如果您能够将某些内容压缩为小于其原始表示形式的形式,则意味着原始表示形式至少具有一定的冗余性。 消息中的每一位实际上并没有传达1位信息。

因为冗余数据不会有助于消息的信息内容,所以它也不会增加其熵。例如,想象一下一个“随机位生成器”,它仅返回值“0”。这根本没有传达任何信息! (实际上,它传达的信息量是不确定的,因为任何仅由一种符号组成的二进制消息都需要在熵公式中除以零。)

相比之下,如果您模拟了大量随机硬币翻转,则很难大幅减少此消息的大小。每一位将贡献接近1位的熵。

压缩数据时,将提取该冗余。作为交换,您必须通过设计一种知道如何压缩和解压缩该数据的方案来支付一次性的熵价。它本身需要一些信息。



总而言之,您可以设计一种方案来使数据的编码比原始数据小,这一事实告诉您一些重要的信息。也就是说,它说您的原始数据包含的信息很少

进一步阅读

要对此进行更彻底的处理,包括使用几个示例来精确计算任意数字序列的熵,请查看this short whitepaper

10-08 12:37