什么是熵(Entropy)?

熵(entropy)这个概念为什么可以被引用到科学的多个不同的领域呢? (物理,计算机视觉,信息论等等)

这里我就来谈谈物理学上的熵,和信息论中的熵联系在于哪里。 为了帮助理解和应用,最后有几个关于熵的应用的有趣例子。


熵最早来原于物理学. 德国物理学家鲁道夫·克劳修斯首次提出熵的概念,用来表示任何一种能量在空间中分布的均匀程度,能量分布得越均匀,熵就越大。

  1. 一滴墨水滴在清水中,部成了一杯淡蓝色溶液
  2. 热水晾在空气中,热量会传到空气中,最后使得温度一致
可以注意到些能量分布的变化的过程都是都是不可逆的(你不能期望清水中的蓝色分子 自动地聚成一滴墨水,放在空气中的汽水能 自动变成开水), 所以这些系统的熵都在慢慢地增加。

而物理学第二定律描述的就是,宇宙中这些不可逆的过程的变化规律,而自然界中的一切自发过程都具有不可逆性. 所以熵增加是一个很普适地概念,说明了宇宙的发展具有方向性, 也就是向着熵增大的方向发展。 而这些推动事物向熵增大方向发展的力量(规律), 被称为熵力。更多的一些生活中的例子:

  1. 熵力的一个例子是耳机线,我们将耳机线整理好放进口袋,下次再拿出来已经乱了。让耳机线乱掉的看不见的“力”就是熵力,耳机线喜欢变成更混乱。
  2. 熵力另一个具体的例子是弹性力。一根弹簧的力,就是熵力。 胡克定律其实也是一种熵力的表现。 
  3. 万有引力也是熵力的一种(热烈讨论的话题)。
  4. 浑水澄清[1]
宇宙发展的尽头就是熵达到最大,所有物质温度达到热平衡。这样的宇宙中再也没有任何可以维持运动或是生命的能量存在(热寂)。


以上是从能量分布角度看熵的定义, 从 微观分子角度看,熵表征了这个系统的混乱程度(与微观状态数量有关,比如说粒子所处的能级(E)可以作为状态). 所有微观粒子的状态只有一种时,也就是混乱程度为0。而当3个粒子分别处于状态1,2,3 时。这个系统的熵就是k*ln(3),总而言之就是微观状态越多,熵越TM大.

于是从微观看,熵就表现了这个系统所处状态的 不确定性程度。香农,描述一个信息系统的时候就借用了熵的概念,这里熵表示的是这个信息系统的 平均信息量(平均不确定程度)
所以当我们说某句话的时候,会帮助你消除一定不确定程度,而消除程度的多少就是信息量的多少. 通过计算[2],常用汉字的熵要大于英文字母的熵,所以你说相同长度的中文很有可能比英文表达的意思要多哦。

除了信息论,很多地方都借用了这个可爱的概念。

1. (信息压缩编码)霍夫曼(Huffman)编码: 设计一个信息系统,使得其熵最大,(编码的平均信息量最大), 于是使得发送效率最高。

2. (计算机视觉)[3]这文章里,介绍了用熵变化来检测出一个图片的显著点.(e.g.一只在墙上的手). 原理就是这些有突出特征的点,都是表现出很强的不确定性(熵)。于是把这些点找出来,就很有可能是你想要的(特征突出的东西)

3. (自然语言处理) 在翻译的时候,一个 句子J, 可能有 n种翻译(f1,f2...fn),还有一些 知识Z(比如在这篇武侠小说里,f3,f4这两个翻译的可能性更大)。现在你要建立一个模型来描述这n种翻译的可能性(概率分布)是怎么样的, 最好的模型也就是让这几种翻译的概率分布的 “熵” 最大。 学术一点说,就是在已知的前提下,请将未知的东西做最不可预测(熵最大)的推断。这就是 最大熵模型的思想


有趣的问题是, 在这些系统中,会不会也存在和宇宙一样的,熵不断增大的系统呢? 

或者通过观察某些熵不断增大的信息系统(像语言系统,熵总是不断增大的,因为,人们总想更快更简单地表达一些信息),能不能推导出这是由一种不可逆的力量产生的变化?这种力量又是什么呢?

[3]Spatiotemporal Localization and Categorization of Human Actions in Unsegmented Image Sequences

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 是的,可以使用 Python 求浮点数的。在 Python 中,可以使用第三方库 scipy 来计算。scipy 是一个用于科学和工程计算的 Python 库,包含了很多有用的算法和工具。 下面是一个简单的例子,展示了如何使用 scipy 库计算浮点数列表的: ```python from scipy.stats import entropy # 浮点数列表 floats = [0.1, 0.2, 0.3, 0.4] # 计算 e = entropy(floats) print(e) ``` 运行上面的代码,会得到结果为 1.0986122886681098,即为给定浮点数列表的值。 需要注意的是,在这里假设你使用的序列是概率分布,也就是每个元素的值都在 0 和 1 之间且它们的总和为 1 ### 回答2: 在Python中,浮点数本身不能直接用于求是一种表示信息不确定性的指标,在信息论中常用于衡量随机变量的不确定度。的计算需要对离散的数据进行统计,而浮点数是连续的数据类型,不能直接进行离散值的统计。 在Python中,计算常用的是对于离散的数据集合进行统计分析,例如使用字典或列表来存储元素出现的频率,然后根据频率计算值。而对于浮点数这类连续的数据类型,我们通常需要先对数据进行离散化处理,再进行的计算。 离散化处理是将连续的数据划分成若干个区间或等距的操作,将浮点数映射到对应的离散值。然后可以根据离散化后的数据进行频率统计,并计算值。Python中有一些常用的方法可以进行离散化处理,例如使用numpy中的digitize函数或者pandas中的cut函数来将浮点数离散化。 总结起来,如果想要在Python中计算浮点数的值,需要先对浮点数进行离散化处理,然后再进行统计分析和的计算。 ### 回答3: 在Python中,浮点数是一种数据类型,用于表示带有小数点的数值。Entropy)是在信息论中用来衡量随机事件的不确定性的度量,通常用于描述信息的平均不确定度。在Python中,可以通过使用科学计算库,如numpy,来计算。 要计算一组数据的,首先需要统计每个数据出现的频率。然后,可以根据的定义进行计算。但是,由于浮点数具有连续的取值范围和无穷多的可能值,直接计算浮点数的可能会出现精度问题。因此,在计算浮点数的时,可能需要注意处理精度和数值范围的问题。 可以使用以下方法计算浮点数的: 1. 对于一组浮点数,将其拆分为不同的区间或分桶。 2. 统计每个区间或分桶中的浮点数出现的频率。 3. 根据频率计算每个区间或分桶的概率。 4. 根据概率计算每个区间或分桶的信息量。信息量可以使用以2为底的对数函数进行计算。 5. 根据每个区间或分桶的信息量计算是所有信息量的加权平均值。 需要注意的是,计算浮点数的可能在某些特定情况下不太有意义,例如当浮点数表示连续的实数范围时,可能会非常高,或者当浮点数表示离散的类别时,可能会非常低。因此,在使用浮点数计算时,需要根据具体的数据和问题进行适当的应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值