转自知乎 https://www.zhihu.com/question/22178202/answer/223017546html
本科学的时候是院长教的,当时他说这个东西颇有用,也仔细听了没懂什么意思,如今回过头来看,还真有用。编码
信息熵的定义与上述这个热力学的熵,虽然不是一个东西,可是有必定的联系。熵在信息论中表明随机变量不肯定度的度量。一个离散型随机变量 的熵
定义为:htm
这个定义的特色是,有明肯定义的科学名词且与内容无关,并且不随信息的具体表达式的变化而变化。是独立于形式,反映了信息表达式中统计方面的性质。是统计学上的抽象概念。事件
因此这个定义如题主提到的可能有点抽象和晦涩,不易理解。那么下面让咱们从直觉出发,以生活中的一些例子来阐述信息熵是什么,以及有什么用处。it
直觉上,信息量等于传输该信息所用的代价,这个也是通讯中考虑最多的问题。好比说:赌马比赛里,有4匹马 ,获胜几率分别为
。io
接下来,让咱们将哪一匹马获胜视为一个随机变量 。假定咱们须要用尽量少的二元问题来肯定随机变量
的取值。class
例如:问题1:A获胜了吗?问题2:B获胜了吗?问题3:C获胜了吗?最后咱们能够经过最多3个二元问题,来肯定 的取值,即哪一匹马赢了比赛。变量
若是 ,那么须要问1次(问题1:是否是A?),几率为
;二进制
若是 ,那么须要问2次(问题1:是否是A?问题2:是否是B?),几率为
;im
若是 ,那么须要问3次(问题1,问题2,问题3),几率为
;
若是 ,那么一样须要问3次(问题1,问题2,问题3),几率为
;
那么很容易计算,在这种问法下,为肯定 取值的二元问题数量为:
那么咱们回到信息熵的定义,会发现经过以前的信息熵公式,神奇地获得了:
在二进制计算机中,一个比特为0或1,其实就表明了一个二元问题的回答。也就是说,在计算机中,咱们给哪一匹马夺冠这个事件进行编码,所须要的平均码长为1.75个比特。
平均码长的定义为:
很显然,为了尽量减小码长,咱们要给发生几率 较大的事件,分配较短的码长
。这个问题深刻讨论,能够得出霍夫曼编码的概念。
那么 四个实践,能够分别由
表示,那么很显然,咱们要把最短的码
分配给发生几率最高的事件
,以此类推。并且获得的平均码长为1.75比特。若是咱们硬要反其道而行之,给事件
分配最长的码
,那么平均码长就会变成2.625比特。