香浓熵(转)

2024-02-08 21:59
文章标签 香浓

本文主要是介绍香浓熵(转),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文:Shannon Entropy, Information Gain, and Picking Balls from Buckets

参考视频:Information Entropy

在1948年,Glaude Shannon发表了文章《A Mathematical Theory of Communication》首次提出了革命性的概念“信息熵”。 熵也是物理中的一个概念。简单来说,如果一个系统中的粒子在运动过程中有很多可能的位置,那么这个系统具有比较高的熵值,反之,如果系统中的粒子处于静止状态(粒子的位置相对固定),则系统具有很低的熵值。例如,水有三种状态:固液气,具有不同的熵值。冰中的分子位置固定,是一个稳定的状态,所以冰具有最低的熵值。水中的分子相对可以进行一些移动,所以水具有中间大小的熵值。水蒸气中的分子几乎可以移动到任何地方,所以水蒸气具有最大的熵值。 

香农熵

但是这个和信息论有什么关系呢。答案需要通过研究“知识”和“概率”来说明。 熵和知识为了使用概率来介绍熵的概念,这篇文章中我们将用这样一个例子加以说明:有三个桶,每个桶里面有四个小球,每个桶里面的小球的颜色分布如下: 桶1:4个红色小球 桶2:三个红色小球,1个蓝色小球 桶3:两个红色小球,2个蓝色小球 

香农熵

我们将通过从桶里面取出小球的颜色来判断我们可以获得多少知识。结论如下: 在第一个桶中,我们可以确定取出来的所有小球颜色都是红色的; 在第二个桶中,取出红色小球的概率是75%,取出蓝色小球的概率是25%; 在第三个桶中,取出红色小球的概率是50%,取出蓝色小球的概率是50%.

所以,我们可以说桶1给出了关于小球颜色最多的知识(因为我们确定地知道所有小球都是红色),桶2给出了部分知识,而桶3给出了最少量的知识。熵和知识类似,但是却刚好相反。所以,桶1具有最小的熵,桶2次之,桶3具有最高的熵。 
香农熵

我们需要一个公式定量地表示熵,为了找到这样一个公式,我们需要使用概率。 熵和概率

现在的问题是如何创造出一个公式对于桶1中的4个红球具有较低的值,对于桶2中的三个红球1个蓝球具有中等的值,对于桶3中的2个红球和2个蓝球具有较高的值。首先,我们需要记住熵的定义:一个系统中的粒子具有很大的可重新排列的可能性,系统具有较高的熵;反之,具有较低的熵。所以,我们首先计算桶中的球可以重新排列的可能情况。对于桶1,只有一种可能性;对于桶2,有两种可能性;对于桶3,有六种可能。这个可以通过二项式系数计算得到(1,4,6,1)。

对于小球排列情况的计算并不是熵公式的一部分,但是我们可以发现,有越多排列的可能性,则其熵越大;有越少的排列的可能性,则其熵越小。在下一节,我们将会构造熵的计算公式。基本思想通过考虑以某种确定的方式从每个桶中取出特定颜色排列的小球的概率。 熵和有趣的小球实验

现在我们正式开始通过下面的游戏发现用于计算熵的公式。可以提前剧透一下:通过游戏获胜的概率,我们可以得到熵的定义公式。

在这个游戏中,我们给定三个桶。游戏规则如下: 首先我们选择一个桶; 以某种颜色排列取出该桶里面的小球,然后将小球放回; 每次从该桶中取出一个小球并记录颜色,并放回; 四次以后如果记录的颜色和2中的颜色排列一致,则我们获胜,可赢得1,000,000人民币,否则游戏失败。

这个听起来可能有些负责,但是实际很简单。举个例子,比如我们选择桶2,里面有三个红球,一个蓝球。我们从桶里面以某种特定的排列取出小球,比如说(红,红,红,蓝)这个颜色排列。然后我们开始一次一次从桶里面取一个小球,如果四次以后,我们取出来的颜色排列也是(红,红,红,蓝)这个组合,我们获胜。那么我们获胜的概率是多少呢。 第一次取出红球的概率是3/4,即0.75; 第二次取出红球的概率是3/4(我们每次都是有放回的取出); 第三次取出红球的概率仍然是3/4; 第四次取出蓝球的概率是1/4,即0.25。

这四次操作都是独立事件,独立事件同时发生的概率使用乘法公式即: (3/4)∗(3/4)∗(3/4)∗(1/4)=27/256 ( 3 / 4 ) ∗ ( 3 / 4 ) ∗ ( 3 / 4 ) ∗ ( 1 / 4 ) = 27 / 256 ,即0.105。这是一个很小的概率。下面的图给出了我们使用每个桶想要获胜的概率。

为了方面说明,下面的图给出了使用每个桶获胜的概率。对于桶1,获胜的概率为1;对于桶2,概率为0.105;对于桶3,概率为0.0625.

香农熵
香农熵
香农熵

三个桶获胜的概率总结如下表: 
香农熵

这样我们就可以定量评价使用三个桶获胜的情况。游戏获胜的概率为: 桶1为1 桶2为0.105 桶3为0.0625

为了得到熵的计算公式,我们需要一个大小相反的度量,对于桶1有最小值,对于桶2有一个中间的值,对于桶3有最大值。这个很简单,我们可以使用对数进行处理得到我们想要的结果。 将连乘转变为连加

下面的处理使用了很简单的数学技巧,特别是在机器学习中使用的比较广泛。连乘一般都不会得到一个比较好的结果。这里我们有四个数字,每个都不是特别差,但是如果我们有一百万个数据点,这一百万个概率的连乘会得到一个怎么样的结果。可想而知是特别特别地小。一般我们要尽可能地避免连乘。什么比连乘好呢。当然是连加。我们如何将连乘转变为连加呢。对,使用对数函数,因为下面的恒等式特别有用:

log(ab)=log(a)+log(b) log ⁡ ( a b ) = log ⁡ ( a ) + log ⁡ ( b )

 

我们有四个概率的连乘,使用对数以后,可以变为四个数字的连加。对于桶2(三个红球,一个蓝球的排列),我们有如下的计算过程:

0.75∗0.75∗0.75∗0.25=0.10546875 0.75 ∗ 0.75 ∗ 0.75 ∗ 0.25 = 0.10546875

 

通过使用对数变换(为了,使得结果是正数,这里在对数前面添加了一个负号),我们有:

−log2(0.75)−log2(0.75)−log2(0.75)−log2(0.25)=3.245 − log 2 ⁡ ( 0.75 ) − log 2 ⁡ ( 0.75 ) − log 2 ⁡ ( 0.75 ) − log 2 ⁡ ( 0.25 ) = 3.245

 

现在,只剩下最后一步了。为了对结果进行规范化,我们对该结果取平均。这就是我们要找的熵的静思园公式了。对于桶2,其熵为0.811.

14(−log2(0.75)−log2(0.75)−log2(0.75)−log2(0.25))=0.811 1 4 ( − log 2 ⁡ ( 0.75 ) − log 2 ⁡ ( 0.75 ) − log 2 ⁡ ( 0.75 ) − log 2 ⁡ ( 0.25 ) ) = 0.811

 

如果我们计算桶1的熵,可以得到:

14(−log2(1)−log2(1)−log2(1)−log2(1))=0 1 4 ( − log 2 ⁡ ( 1 ) − log 2 ⁡ ( 1 ) − log 2 ⁡ ( 1 ) − log 2 ⁡ ( 1 ) ) = 0

 

桶3的熵为:

14(−log2(0.5)−log2(0.5)−log2(0.5)−log2(0.5))=1 1 4 ( − log 2 ⁡ ( 0.5 ) − log 2 ⁡ ( 0.5 ) − log 2 ⁡ ( 0.5 ) − log 2 ⁡ ( 0.5 ) ) = 1

 

至此,我们已经找到了熵的定义公式:对概率对对数的负值。注意到桶1具有最低的熵,桶3具有最高的熵,桶2居于中间。总结如下: 
香农熵

对于更通用的公式,我们可以总结如下:假设我们的桶里有 m m 个红球和 n n 个蓝球,则: 
香农熵

Entropy=−mm+nlog2(mm+n)+−nm+nlog2(nm+n) E n t r o p y = − m m + n log 2 ⁡ ( m m + n ) + − n m + n log 2 ⁡ ( n m + n )

多类别熵

目前为止我们处理了连个类别的熵(红色和蓝色)。为了使得熵和信息论关联起来,我们有必要看一些多个类别的情况。这里为了是情况更加清晰一些,我们使用字母来进行说明。假设我们有三个桶,每个桶里面有8个字母。桶1中的字母是AAAAAAAA,桶2中的字母是AAAABBCD,桶3中的字母是AABBCCDD。我们可以很直观地感受到桶1中的熵最小,但是桶2和桶3的却并不是很明显。我们下面通过计算知道桶3具有最高的熵值,桶2熵值居中。 
香农熵

对于多个类别的可以推广我们对于熵的定义如下:

Entropy=−∑i=1npilog2pi E n t r o p y = − ∑ i = 1 n p i log 2 ⁡ p i

 

公式中的 n n 是类别数, pi p i 是第 i i 个类别出现的概率。对于我们的三个桶,我们有如下分析:

对于桶1,只有一个类别(字母A),出现的概率肯定是1,所以熵值为:

Entropy=−1log2(1)=0 E n t r o p y = − 1 log 2 ⁡ ( 1 ) = 0

 

对于桶2,我们有四个类别(字母A,B,C和D),A出现的概率是4/8,B的概率是2/8,C的概率是1/8,D的概率是1/8。所以熵值为:

Entropy=−48log2(48)−28log2(28)−18log2(18)−18log2(18)=1.75 E n t r o p y = − 4 8 log 2 ⁡ ( 4 8 ) − 2 8 log 2 ⁡ ( 2 8 ) − 1 8 log 2 ⁡ ( 1 8 ) − 1 8 log 2 ⁡ ( 1 8 ) = 1.75

 

对于桶3,我们也有四个类别(字母A,B,C和D),每个字母出现的概率都是1/4,所以:

Entropy=−28log2(28)−28log2(28)−28log2(28)−28log2(28)=2 E n t r o p y = − 2 8 log 2 ⁡ ( 2 8 ) − 2 8 log 2 ⁡ ( 2 8 ) − 2 8 log 2 ⁡ ( 2 8 ) − 2 8 log 2 ⁡ ( 2 8 ) = 2

 

对于三个桶,我们总结如下: 
香农熵

更有趣的在下面,这儿就是信息论发挥作用的地方。 信息论

下面还有一种方式来理解熵。我们还是以从桶中随机取出字母为例。我们要判断从桶中取出的字母平均需要提出多少个问题。(假设有一个人从桶里取字母,另外一个人通过提问得到取出来的是哪个字母)

首先看最简单的情况。对于桶1,我们可以确信取出来的肯定是A。所以我们不用提出任何问题就可以知道从桶里面取出来的字母是什么。用公式简单表示如下:

Average Number of Questions=0 A v e r a g e   N u m b e r   o f   Q u e s t i o n s = 0

 

对于桶3和桶4,可能有人认为通过四个问题可以知道到底取出来的是什么字母。这四个问题如下: 是不是字母A。 是不是字母B。 是不是字母C。 是不是字母D。

其实,这四个问题是有冗余的,因为如果前面三个问题的答案如果是“NO”的话,那么我们肯定知道取出来的屙屎字母D。所以三个问题足够了,但是我们可以做得更好吗。我们提出的问题需要消除冗余。我们可以这样改进我们的提问: 该字母是A或者B。 如果1的回答是“YES”,继续提问是否是字母A。如果1的回答是“NO”,继续提问是否是字母C。

如果这样提问,只需要基于两个问题就可以得到答案: 对于YES,YES的回答,则取出来的是A 对于YES,NO的回答,则取出来的是B 对于NO,YES的回答,则取出来的是C 对于NO,NO的回答,则取出来的是D

以树状结构表示如下: 
香农熵

对于桶3,每个字母出现的概率都是1/4,所以为了找出取出来的字母平均提问的个数应该为2。计算如下:

Average Number of Questions=14⋅2+14⋅2+14⋅2+14⋅2=2 A v e r a g e   N u m b e r   o f   Q u e s t i o n s = 1 4 ⋅ 2 + 1 4 ⋅ 2 + 1 4 ⋅ 2 + 1 4 ⋅ 2 = 2

 

对于桶1,我们如果使用桶3的提问策略,当然得出的结果也是2,然而我们可以做得更好。我们可以首先提问是不是A,然后问是不是B,然后再问是不是C。 
香农熵

这样我们的提问顺序如下: 如果是字母A,则我们只用了1次提问 如果是字母B,则我们只用了2次问题 如果是字母C或者D,则我们只用了3次提问

对于是字母C和D,我们3次提问超出了对于桶2的提问策略,但是平均来看,我们可能做得更好。桶3有字母AAAABBCD,A出现了一半,B出现了1/4,C和D都出现了1/8。平均提问次数为:

Average Number of Questions=12⋅1+14⋅2+18⋅3+18⋅3=1.75 A v e r a g e   N u m b e r   o f   Q u e s t i o n s = 1 2 ⋅ 1 + 1 4 ⋅ 2 + 1 8 ⋅ 3 + 1 8 ⋅ 3 = 1.75

 

总结如下: 
香农熵

这就是熵。熵和信息论就是这样关联起来的。如果我们想要找出从桶里取出来的字母,平均需要提出问题的个数就是熵的值。

当然,这引出了更大问题:我们如何确定我们提问的方式是最可能好的。如果提问的方式不是太明显,当然需要做更多的工作。

 

转载于:https://www.cnblogs.com/yangziyao/p/10014977.html

这篇关于香浓熵(转)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/692324

相关文章

10.31一些代码分析,香浓展开,移位器(桶形多位),二进制转格雷码

always的block之间,采用并行执行 always之内,采用非阻塞赋值,为顺序执行 一些代码分析 这个把使能信号和W信号组合在一起,进行case语句,即只有合并信号最高位为1时,才进行操作 always后面要写@,assign不用 存储元件代码 这没有期望的边沿,就是只要发生变化就会触发 加上posedge,negedge就可以标记期望的边沿 按位操作与逻辑操作

二进制香浓编码,

这次分享的就是关于这个编码的编码过程,以及如何计算这个编码的过程。 本次书籍参考的是信息论与编码第三版,这里不过多赘述,关键是给各位同学们分享这个知识。 见上面图1,这里要介绍的就是,每一行的pai(aj)都是前一行中的p(ai)+pai(aj)。比如第三行,pai(aj)=0.25+0.25,即第二行中的p(ai)+pai(aj),可以说是前一行的累加。 平均码长这个参考相关课本,p(

Arcgis/Arcgis pro计算多个景观的香浓多样性SHDI和景观破碎度PD

一、指标  二、数据 数据1:土地分类数据,矢量数据,栅格数据先转为矢量。 数据2:景观数据,含有景观面要素的矢量数据。 根据指标,需要统计三个数据:①每个景观的面积,直接对数2进行计算几何。②每个景观中各地类的面积。③每个景观中的斑块个数。①计算简单,主要对②③进行计算。 三、处理 数据导入Arcgis/Arcgis pro,找到标识(identity)工

【python】香浓熵计算

香农熵的公式: 不理解的可以看这个博文:傻子都能看懂的——信息熵(香农熵https://www.zhihu.com/question/22178202/answer/161732605 一个很通俗的例子解释香农熵: 来源:全国地研联:干货分享 | 城市功能混合程度计算 https://www.sohu.com/a/437716289_169228 代码 首先说一下我的数据。 主要数据,一

奈氏准则和香浓公式

奈氏准则 1924 年,奈奎斯特(Nyquist)就推导出了著名的奈氏准则。他给出了在假定的理想条件下,为了避免码间串扰,码元的传输速率的上限值。 在任何信道中,码元传输的速率是有上限的,否则就会出现码间串扰的问题,使接收端对码元的判决(即识别)成为不可能。 如果信道的频带越宽,也就是能够通过的信号高频分量越多,那么就可以用更高的速率传送码元而不出现码间串扰。 香农公式

计算机网络中的‘nice’和‘香浓’

失真 影响失真程度的因素:1.码元传输速率 2.信号传输距离 3.噪声干扰 4.传输媒体质量 奈氏准则 在理想低通条件下,为了避免码间串扰,极限码元传输速率为2W波特,w是信道带宽,单位是Hz 1.在任何信道中,码元传输的速率是有上限的。若传输速率超过此上限,就会出现严重的码间串扰问题,使接收端对码元的完全正确识别称为不可能。 2.信道的频带越宽(即能通过的信号高频分量越多)就可以用更高的速

计算机网络 - 物理层 (码元 / 奈氏准则 / 香浓定理)

物理层的基本概念 物理层:传输数据比特率,而不是具体的传输媒体 主要任务:确定传输媒体接口的标准(不论什么厂家只要按照这个标准,东西都能传输数据) 三大特性 机械特性:规定连接时候所采用接口形状,数目等电气特性:规定传输二进制位数,电压范围等功能特性:指明某一电平表示何种意义 数据通信基础知识 数据,信号,信源,信宿,信道 三种通信方式 单工通信:单方向通信 (

神经网络数学基础-香浓信息量、信息熵、交叉熵、相对熵(KL散度)

香浓信息量 这里以连续随机变量的情况为例。设 为随机变量X的概率分布,即 为随机变量 在 处的概率密度函数值,随机变量 在 处的香农信息量定义为: 这时香农信息量的单位为比特,香农信息量用于刻画消除随机变量在处的不确定性所需的信息量的大小。 如果非连续型随机变量,则为某一具体随机事件的概率。 为什么是这么一个表达式呢?想具体了解的可以参考如下的讨论: 知乎-香农的信息论究

统一编码-香浓编码-霍夫曼编码

香浓编码中所谓的从上到下的编码方式的意思就是说:首先是符号按照其出现的频率从小到大(或从大到小)进行排序,然后按照中出现的频率一半一半地分,最后得到的编码就是香浓编码。例如:先有符号A:12,B:9,C:5,D:4,E:2,F:2 那么按照香浓编码,先分组:(A,B),(C,D,E,F)因为这时为21:13两边较为均衡,然后再左右分(C),(D,E,F),再分(D),(E,F)最后就得到了这棵树

10.31一些代码分析,香浓展开,移位器(桶形多位),二进制转格雷码

always的block之间,采用并行执行 always之内,采用非阻塞赋值,为顺序执行 一些代码分析 这个把使能信号和W信号组合在一起,进行case语句,即只有合并信号最高位为1时,才进行操作 always后面要写@,assign不用 存储元件代码 这没有期望的边沿,就是只要发生变化就会触发 加上posedge,negedge就可以标记期望的边沿 按位操作与逻辑操作