首页 文章

香农的熵公式 . 帮助我的困惑

提问于
浏览
7

我对熵公式的理解是,它用于计算表示某些数据所需的最小位数 . 在定义时通常措辞不同,但之前的理解是我到目前为止所依赖的 .

这是我的问题 . 假设我的序列为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作为参考 . 我哪里做错了?它是分配给符号的概率吗?我不错_877361 . 或者我是否在压缩和熵之间 Build 了连接错误?还要别的吗?

谢谢 .

Edit

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

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

4 回答

  • 6

    您的编码在此示例中有效,但可以设想一个同样有效的情况:010101010101 ...将编码为1/0/1/1 / ...

    熵是在可以用给定字母表构建的所有可能消息中测量的,而不仅仅是病理示例!

  • 4

    或者我是否在压缩和熵之间 Build 了连接错误?

    您're pretty close, but this last question is where the mistake was. If you'能够将某些东西压缩成小于其原始表示的形式,这意味着原始表示至少具有一些冗余 . Each bit in the message really wasn't conveying 1 bit of information.

    因为冗余数据对消息的信息内容没有贡献,所以它也不会增加其熵 . 想象一下,例如,"random bit generator"只返回值"0" . 这根本不传达任何信息! (实际上,它传达了一定数量的信息,因为任何只包含一种符号的二进制消息都需要在熵公式中除以零 . )

    相比之下,如果你模拟了大量的随机硬币翻转,那么很难减少这个消息的大小 . 每个位将贡献接近1位的熵 .

    压缩数据时,可以提取冗余 . 作为交换,您必须设计一个知道如何压缩和解压缩此数据的方案,从而支付一次性熵价格;这本身就需要一些信息 .

    但是,您可以使用类似100 / 1/100/0的行程对其进行行程编码,其中输出的位数后跟该位 . 看起来我的表示比数据小 . 特别是如果你增加100到更大的数字 .

    总而言之,您可以设计一个方案来使数据编码小于原始数据,这一事实告诉您一些重要的事情 . 也就是说,它说 your original data contained very little information .


    进一步阅读

    有关这方面的更全面的处理,请详细说明如何使用几个示例计算任意数字序列的熵,请查看this short whitepaper .

  • 5

    看看Kolmogorov complexity

    可以压缩字符串而不会丢失信息的最小位数 . 这是通过通用图灵机给出的固定但通用的减压方案来定义的 .

    在您的特定情况下,不要将自己限制为字母{0,1} . 对于您的示例,使用{0 ... 0,1 ... 1}(百分之0和百分之一)

  • 4

    John Feminella说得对,但我认为还有更多要说的 .

    香农熵基于概率,概率总是在旁观者眼中 .

    你说1和0同样可能(0.5) . 如果是这样,则100 1s后跟100 0的字符串的概率为0.5 ^ 200,其中-log(base 2)为200位,如您所料 . 然而,该字符串的熵(以香农术语表示)是其信息内容乘以其概率,或200 * 0.5 ^ 200,仍然是非常小的数字 .

    这很重要,因为如果你进行游程编码来压缩字符串,在这个字符串的情况下,它将获得一个很小的长度,但是在所有2 ^ 200个字符串上取平均值,它将不会很好 . 幸运的是,它平均可以达到200左右,但不会更低 .

    另一方面,如果你看一下你的原始字符串,并说它是如此引人注目,以至于生成它的人很可能产生更多它,那么你实际上它的概率大于0.5 ^ 200,因此您对字符串生成器的原始概率结构做出了不同的假设,即它具有比200位更低的熵 .

    就个人而言,我发现这个主题非常有趣,特别是当你研究Kolmogorov(算法)信息时 . 在这种情况下,您将字符串的信息内容定义为可以生成它的最小程序的长度 . 这导致了对软件工程和语言设计的各种见解 .

    我希望有所帮助,谢谢你的提问 .

相关问题