JavaEE鸿蒙应用开发HTML&JS+前端Python+大数据开发人工智能开发AI+设计软件测试新媒体+短视频直播运营产品经理集成电路应用开发(含嵌入式)Linux云计算+运维开发C/C++拍摄剪辑+短视频制作PMP项目管理认证电商运营Go语言与区块链大数据PHP工程师Android+物联网iOS.NET

从存储单位到信息熵

来源:黑马程序员

浏览2989人

2019.09.18

我们都知道,计算机的存储单位有KB、MB、GB、TB等,换算起来,1TB=1024GB、1GB=1024MB、1MB=1024KB、1KB=1024B。1B我们称为一个字节,一个字节有8位,即1B=8bit。bit表示计算机的位,同时它也是信息熵的度量单位。

定性看信息与信息熵

我们常说的信息是一个很抽象的概念,人们常说信息多,信息少,但很难量化信息到底有多少。不过1948年,信息论之父香农在他发表的论文”通信的数学理论(A Mathematical Theory of Communication )”中指出,任何信息都存在冗余,冗余大小与信息中每个符号(数字、字母或单词)的出现概率或者说不确定性有关。

香农借鉴了热力学的概念,把信息中排除了冗余后的平均信息量称为“信息熵”,信息熵的数学表达式

1568795600131367.png

通俗的理解,当一个事物有多种可能发生的情况时,具体单个情况发生的不确定性叫做熵,而能够消除这种情况发生的不确定性的事物叫做信息。二者数量相等,意义相反,我们可以通过获取信息来消除不确定性(熵) 。能够消除不确定性的信息有三种类型:

  • 调整概率

  • 排除干扰

  • 确定情况

以商场抓奖活动为例,你的面前有四个颜色分别为红、黄、蓝、绿的小球,其中一个小球里面有大奖。如果四个小球获奖概率相等(都是1/4),那么此时的信息熵最大;如果确定了红色小球里面有奖,那么此时的信息熵最小。

如果我们告诉客户,蓝色小球有一半的概率有奖,这就是调整概率,使得蓝色小球中奖的不确定性降低,其他小球中奖的不确定性增加;如果我们告诉客户,绿色小球肯定没有奖,这就是排除干扰,使得绿色小球没有了不确定性,其他小球获奖的不确定性也降低了;如果我们直接告诉客户红色小球里面有奖,这就是确定情况,使得消除了各个小球的不确定性。 

定量看信息与信息熵

我们知道,当事物发生的不确定性越大,它的信息熵越大,反之,信息熵越小。但是我们如何量化信息呢,为何信息熵的还有单位(bit)?

弄清这个问题前,我们先看一下我们是如何定义其他常见的物理量(长度、质量、时间)的呢?

以长度为例,米是如何定义出来的,我们如何去量化一个物体的长度呢?答案是我们选择了参照物标准,我们规定了一个物体长度为1米,其他物体的长度就相当于多少倍参照物体的长度。比如一个物体的长度是参照物的长度的两倍,参照物长度1米,那么这个物体的长度就是2米。

与长度、质量、时间相同,信息熵也是一个物理量。把长度定义引申到信息熵,我们如果也定义一个参照事件的不确定性(信息熵),只要看待测事件的不确定性(信息熵)相当于多少个参照事件的不确定性(信息熵)即可。

抛一枚硬币,有正、反两种等概率情况,这个事件所能产生的结果的信息熵我们规定为1bit,上文中4个小球抓奖,有四种等概率情况,这个事件所能产生的结果的信息熵相当于我们抛两次硬币所产生的结果,因此为2bit。不过要注意,如果是8个小球抓奖,有八种等概率情况,信息熵不是4bit,而是3bit(2^3=8),因为八种等概率情况相当抛3次硬币所产生的结果,它们之间是指数关系。

因此当有m种等概率可能情况时,相当于〖lg〗^m个抛硬币事件所产生的情况。故当有m种等概率可能情况时,信息熵为〖lg〗^m。

然而我们一直假设的是m种等概率可能情况,如果是非等概率呢?就需要乘以发生的概率再累加∑_(i=1)^n▒〖p_i 〖lg〗^(m_i ) 〗 这里的m_i是某种情况下不确定性的个数,我们没有直接的结果,不过我们有这种情况下发生的概率。如果一件事发生的概率是1/100,那么它也相当于100种不确定性情况下的一种情况发生了,因此我们用概率的倒数来表示不确定性的个数。

m_i=1/p_i 带入后得到

1568795625115591.png

1/p_i太别扭了,改成

1568795642913349.png

到这里,我们就得到了信息熵的公式了,它的单位是bit