avatar Jason Fantl 一个计算机科学博客

[ ](https://jasonfantl.com/posts/What-is-Entropy/<javascript:location.href = 'mailto:' + ['Jasonemerald','gmail.com'].join('@')>) Home 什么是 Entropy? Post Cancel

什么是 Entropy?

发布于 2025年3月21日 Preview Image 作者 _Jason Fantl _ 40 分钟 阅读 人们对 entropy 有很多说法:entropy 随时间增加,entropy 是无序的,entropy 随能量增加,entropy 决定了时间的箭头等等。但我不知道 entropy 是什么,而且根据我发现的,大多数其他人也不知道。这是我希望在第一次被告知 entropy 时就有的介绍,希望你觉得它有帮助。我的目标是,在这篇长文结束时,我们将对这些陈述有一个严格而直观的理解,特别是,为什么在时间向前移动时,宇宙看起来与时间向后移动时不同。

这段旅程从定义和理解 entropy 开始。在不同的学科中,关于 entropy 有多个正式的定义——热力学、统计力学、信息论——但它们都共享一个中心思想:entropy 量化了不确定性。对 entropy 最简单的介绍是通过信息论,它将引导我们了解物理系统中的 entropy,然后最终了解 entropy 和时间之间的关系。

信息论

想象一下,你想向你的朋友传达一些随机事件的结果,比如骰子的结果或彩票的中奖者,但你想用尽可能少的比特(只有 1 和 0)来做这件事。你能用多少个比特?

信息论的创始人 Claude Shannon 在他在 Bell 实验室工作期间,试图回答诸如此类的问题。他正在开发通信和压缩的数学基础,最终他发现消息所需的最小比特数与消息的不确定性直接相关。然后,他能够制定一个公式来量化消息的不确定性。当他与他在 Bell 实验室的物理学家同事 John von Neumann 分享时,von Neumann 建议称之为 entropy,原因有二:

Von Neumann, Shannon 报道,建议将该函数称为“entropy”有两个很好的理由。“这个名称已经被使用了,”他据说说道,“而且,它会在辩论中给你带来很大的优势,因为没有人真正知道 entropy 到底是什么。”Shannon 将该函数称为“entropy”,并将其用作“不确定性”的度量,在写作中不加区分地交替使用这两个词。——Harold A. Johnson (ed.), Heat Transfer, Thermodynamics and Education: Boelter Anniversary Volume (New York: McGraw-Hill, 1964), p. 354.

稍后我们将看到 Shannon 的 entropy 与先前存在的 entropy 定义之间的关系不仅仅是巧合,它们是紧密相连的。

但现在让我们看看 Shannon 是如何找到这些通常模糊的术语“信息”和“不确定性”的定义的。

在信息论中,观察到的状态的信息被正式定义为传达该状态所需的比特数(至少对于具有二的幂的等可能结果的系统,我们很快就会看到如何推广它)。以下是一些信息的示例:

系统可能的结果越多,表示其结果所需的比特(信息)就越多。如果一个系统有 N 个等可能的结果,那么表示该系统的一个结果需要 log2(N) 个比特的信息。

Entropy 被定义为表示系统状态所需的预期比特数(这是一个谎言,但这是目前最有用的定义,我们稍后会修复它)。因此,硬币的 entropy 为 1,因为平均而言,我们预计需要 1 个比特的信息来表示硬币的结果。一个 8 面骰子的 entropy 将为 3 个比特,因为我们预计平均需要 3 个比特来表示结果。

最初看起来,entropy 是一个不必要的定义,因为我们可以直接查看表示系统结果需要多少比特,并使用该值,但这仅在结果的机会都同样可能时才成立。

现在想象一下,我有一个加权的 8 面骰子,因此数字 7 出现 50% 的时间,而其余的面出现 ≈7.14% 的时间。现在,如果我们很聪明,我们可以减少传达骰子结果所需的预期比特数。我们可以决定用 0 表示 7,所有其他数字将用 1XXX 表示,其中 X 是一些唯一的比特。这意味着 50% 的时间我们只需要使用 1 个比特的信息来表示结果,而另外 50% 的时间我们使用 4 个比特,因此预期的比特数(骰子的 entropy)为 2.5。这低于公平的 8 面骰子的 3 个比特的 entropy。

幸运的是,我们不需要为每个可能的系统提出一个巧妙的编码方案,对于表示具有概率 p 的状态需要多少比特的信息,存在一种模式。我们知道如果 p=0.5,例如硬币正面朝上,那么需要 1 个比特的信息来表示该结果。如果 p=0.125,例如一个公平的 8 面骰子落在数字 5 上,则需要 3 个比特的信息来表示该结果。如果 p=0.5,例如我们不公平的 8 面骰子落在数字 7 上,那么需要 1 个比特的信息,就像硬币一样,这表明重要的是结果的概率。有了这个,我们可以发现一个公式来表示具有概率 p 的状态所需的比特数。

I(p)=−log2(p)

这个值 I 通常被称为 信息内容惊喜,因为状态发生的概率越低,发生时的惊喜就越大。

当概率较低时,惊喜程度较高,当概率较高时,惊喜程度较低。这是一个比“所需的比特数”更通用的公式,因为它允许极有可能(例如 99% 的可能性)的状态具有小于 1 的惊喜程度,如果我们试图将该值解释为“表示结果所需的比特数”,这将毫无意义。

现在我们可以修复我们对 entropy 的定义(我之前说的谎言)。Entropy 不一定是用于表示系统的预期比特数(尽管当您使用最佳编码方案时是这样),但更一般地说,entropy 是系统的预期 惊喜

现在我们可以计算系统的 entropy,例如骰子或硬币或任何具有已知结果概率的系统。具有 N 个可能结果(每个结果的概率为 pi(总和为 1))的系统的预期惊喜(entropy)可以计算为

(Shannon entropy)∑i=1Npi⋅I(pi)=−∑i=1Npi⋅log2(pi)

请注意,如果所有 N 个概率都相同(因此 pi=1N),那么 entropy 方程可以简化为

−∑i=1Npi⋅log2(pi)⇒log2(N)

以下是一些使用 (Shannon entropy) 的基本示例。

−(0.5⋅log2(0.5)+0.5⋅log2(0.5))=log2(2)=1

−∑i=180.125⋅log2(0.125)=log2(8)=3

−(0.99⋅log2(0.99)+∑i=170.0014⋅log2(0.0014))=0.10886668511648723 希望现在更直观地理解 entropy 代表不确定性。一个 8 面骰子的 entropy 比一枚硬币的 entropy 更高,因为我们对 8 面骰子的结果比对硬币的结果更不确定(8 个等可能的结果比仅 2 个等可能的结果更不确定)。但是,即使是一枚硬币,一个高度不公平的 8 面骰子也具有更低的 entropy,因为我们对不公平骰子的结果非常确定。现在我们有一个实际的方程来量化系统的不确定性(entropy)。

目前尚不清楚 entropy 的这个定义与无序、热量或时间有何关系,但 entropy 作为不确定性的这个概念对于理解宇宙的 entropy 至关重要,我们稍后将对此进行探讨。为了参考,entropy 的这个定义被称为 Shannon entropy。

我们现在将继续,但我建议进一步研究信息论。它对数据压缩、纠错、密码学甚至语言学都有许多重要的直接影响,并且几乎触及任何处理不确定性、信号或知识的领域。

物理 Entropy

现在我们将从一个非常不同的角度来看 entropy,即统计力学。我们从每个学生都被赋予的对 entropy 的尝试和真实的介绍开始。

盒子里的球

我将给你一个装有 10 个球的盒子,p0 到 p9,我们将计算盒子左侧和右侧有多少个球。假设每个球同样可能在任何一侧。我们立刻就可以看到,我们计算出所有的球都在盒子左侧的可能性很小,而每侧都有相等数量的球的可能性更大。这是为什么?

好吧,只有一种状态可以让我们计算出所有的球都在左侧,那就是每个球都在左侧(真是令人震惊,但请坚持下去)。但是,有很多方法可以使盒子保持平衡:我们可以让 p0 到 p4 在一侧,其余的在另一侧,或者让相同的组从左到右翻转,或者我们可以让所有偶数球在一侧,奇数球在另一侧,或者再次翻转,或者任何其他许多可能的组合。

这个盒子是一个我们可以测量 entropy 的系统,至少在我告诉你每一侧有多少个球时是这样。可能需要一段时间才能看到,但想象一下这个盒子,我们左右两侧的计数作为一个系统,结果将是找出盒子中所有单独的球的位置,类似于掷骰子并查看它落在哪个面上。

这意味着我们计算出所有球都在左侧的盒子只有一种可能的结果:所有的球都在左侧。我们将认为这个系统具有 0 entropy(没有预期的惊喜),因为我们已经知道我们将在哪里找到每个单独的球。

两侧平衡的盒子(每侧 5 个)有许多可能的等可能的结果,事实上,我们可以对其进行计数。组合学中一个著名的方程是 N-choose-k 方程,它精确地计算了这种情况。它告诉我们,我们有 252 种可能的方式可以在每侧放置 5 个球。该系统的 entropy 将为 −∑i=12521252⋅log2(1252)=log2(252)=7.9772799235。这与计算一个 252 面骰子的 entropy 相同。

如果我们增加球的数量,平衡盒子的 entropy 将会增加,因为会有更多的可能的组合可以构成一个平衡盒子。

我们应该将这些结果解释为:满足大规模测量(计算每一侧的球数)的方式越多,系统的 entropy 就越高。当所有的球都在左侧时,只有一种方法可以满足该测量,因此它具有较低的 entropy。当有很多方法可以在两侧平衡它时,它具有较高的 entropy。

在这里,我们看到 1000 个球在一个盒子里弹跳。它们都将从左侧开始,因此盒子将具有 0 entropy,但是一旦球开始向右移动并改变每一侧的计数,entropy 将会增加。

在统计力学中,大规模测量的正式术语是 宏观状态,而可以满足该测量的特定状态是 微观状态。我们将把盒子每一侧的球数的测量称为宏观状态,而单个球位置的不同组合称为微观状态。因此,重新表述上述内容:只有一种微观状态代表所有球都被计算在一侧的宏观状态,并且有许多微观状态代表平衡盒子的宏观状态。

但是,为什么我们决定测量左右两侧的球数?我们可以测量一个不同的宏观状态,entropy 会有所不同。

宏观状态

想象一下,我们不选择盒子的左右两侧来计算球数,而是计算盒子中每个像素中有多少个球。在这种情况下,entropy 几乎总是最大化,因为球很少共享一个像素。即使所有的球都在盒子的左侧,它们也可能仍然各自占据一个不同的像素,并且测量的 entropy 与球均匀分布在盒子中的情况相同。

如果我们使用昂贵的仪器来测量盒子并高精度地跟踪球,那么 entropy 很少会发生变化,并且会非常高。如果我们使用廉价的仪器,只能判断球是否在盒子的左侧或右侧,那么 entropy 会很低,并且如果某些球暂时最终落在盒子的同一侧,则很容易波动。

让我们再次运行完全相同的盒子中 1000 个球的模拟,仍然从左侧的球开始。但是,这次我们计算一个 50x50 网格中每个单元格中有多少个球,而不是之前的两个单元格(左侧和右侧单元格)。entropy 将很高,因为有很多微观状态代表一堆只有一个球的单元格,并且 entropy 不会发生太大变化,因为两个球很少共享同一个单元格。回想一下,如果两个球共享同一个单元格,则计数会增加,并且与每个单元格中只有一个球的两个单元格相比,满足计数为 2 的单元格的微观状态更少。

Entropy 并非物理系统本身固有的,而是与我们对它的描述有关——即,我们正在测量的宏观状态以及我们观察它的分辨率。

这种测量系统的较低分辨率版本(例如计算盒子左侧或右侧有多少个球)的过程称为 粗粒化

我们如何选择/测量宏观状态,即我们如何对系统进行粗粒化,取决于我们正在解决的问题。

你选择测量宏观状态的方式可以采用多种形式,具体取决于你可以测量的内容和/或你关心测量的内容。

但是,一旦我们有了一个宏观状态,我们需要一种方法来识别所有微观状态并为其分配概率。

微观状态

当我们查看大小相等的单元格中球在盒子中的位置时,很容易看出每个球同样可能位于任何一个单元格中,因此每个微观状态同样可能。这使得 entropy 的计算非常简单,我们只需使用 (Shannon entropy) 的简化版本来发现,对于满足给定宏观状态的 W 微观状态,系统的 entropy 为 log2(W)。将这个想法扩展到不太可能出现的微观状态并不难。

例如,让我们计算一个盒子(左侧有 5 个球,右侧有 5 个球)的 entropy,但是我们将盒子中的一个球替换为一个会被磁铁拉到左侧的金属球。在这种情况下,每个微观状态的概率不再同样可能。如果我们假设金属球有 80% 的可能性位于左侧而不是右侧,则盒子的 entropy 可以计算如下:对于所有 252 个微观状态,其中 126 个微观状态的金属球位于左侧,这有 0.8 的概率为真,而另 126 个微观状态的金属球位于右侧,这有 0.2 的概率。这意味着使用 (Shannon entropy) 我们得到的 entropy 为

−∑i=11260.2126⋅log2(0.2126)−∑i=11260.8126⋅log2(0.8126)=7.69921

这比装有普通球的盒子的 7.9772799235 entropy 略小。这正是我们应该预期的,我们对这个系统的结果更加确定,因为我们知道其中一个球更有可能在哪里。

但这引发了一个微妙的问题:为什么我们选择这组特定的微观状态?例如,如果我们具有左侧 5 个球和右侧 5 个球的宏观状态,但是我们决定使用 50x50 网格的单元格来描述微观状态,那么与我们使用 2x1 网格的左右两侧相比,满足宏观状态的微观状态要多得多。

让我们计算一下这两个示例的 entropy。请记住,它们都具有相同的宏观状态:左侧 5 个球,右侧 5 个球。

该结果与我们对 entropy 的信息论理解非常吻合:当我们允许更多的微观状态来表示相同的宏观状态时,我们对系统所处的微观状态更加不确定。但是,该结果确实引起了一些担忧。

如果不同的微观状态给出不同的 entropy,我们如何为我们的问题选择正确的微观状态?与宏观状态不同,使用哪些微观状态的决定不是由我们的仪器或问题的范围决定的,而必须由进行计算的人员决定。通常,对于物理系统,人们会使用捕获与宏观状态相关的所有相关信息的微观状态集。例如,如果我们的宏观状态是关于盒子左侧或右侧的球,那么我们可能不在乎球的速度或质量或其他任何东西,而只在乎球的位置。

另一个担忧是,如果相同的物理系统具有相同的宏观状态,但根据我们使用的微观状态表示形式而具有不同的 entropy,则感觉是错误的。通常,我们期望物理系统具有不变的测量值,而与我们决定用于测量的内部表示形式无关。但是,entropy 的情况并非如此。我们需要记住,entropy 是系统的不确定性,并且 entropy 的定义完全取决于我们对什么不确定,对于物理系统而言,这些都是微观状态。这类似于有人问“有多少个零件组成了这台机器?”,对此我们应该回答“你如何定义一个‘零件’?”。当我们问“这个宏观状态的 entropy 是多少?”时,我们需要回答“我们使用什么微观状态?”。

话虽如此,我们的直觉告诉我们的一些小事实是正确的,尽管它不适用于一般情况。虽然当我们改变微观状态时,系统的 entropy 会发生变化,但是 如果 新的微观状态统一地乘以旧的微观状态,则宏观状态之间的 entropy 的相对差异将相等。也就是说,如果每个原始微观状态都分为相同数量的精细微观状态,则每个宏观状态的 entropy 都会增加一个常数。我们迷失在术语中了,一个例子将演示这一点。

让我们再次拿出盒子中的 10 个球,我们将计算几个不同宏观状态和微观状态表示形式的系统的 entropy。我们用 (L, R) 表示盒子每一侧的球数,其中 L 是左侧的球数,R 是右侧的球数。然后,我们使用单元格的 2x1 网格(仅盒子的左右两侧)的微观状态和 50x50 网格的单元格来计算 entropy。

(10,0)| (9,1)| (8,2)| (7,3)| (6,4)| (5,5)| (4,6)| (3,7)| (2,8)| (1,9)| (0,10)
---|---|---|---|---|---|---|---|---|---|---
2x1| 0.00000| 3.32193| 5.49185| 6.90689| 7.71425| 7.97728| 7.71425| 6.90689| 5.49185| 3.32193| 0.00000
50x50| 102.87712| 106.19905| 108.36898| 109.78401| 110.59137| 110.85440| 110.59137| 109.78401| 108.36898| 106.19905| 102.87712
如果我们查看,我们会发现 50x50 网格微观状态值中的 entropy 只是 2x1 网格值加上一个常数。在两种情况下的相对 entropy 都是相同的。如果我们用数学方法显示如何计算 entropy,这会更加清楚。对于 2x1 网格,我们使用方程 log2((10L)),对于 50x50 网格,我们使用 log2(125010(10L))=log2(125010)+log2((10L))。从数学上我们可以看到,它与 2x1 网格的 entropy 相同,只是偏移了 log2(125010)。

你可以想象,如果我们沿着微观状态添加另一个维度,我们将再次将 entropy 增加一个常数。例如,如果 10 个球中的每一个都可以是 3 种颜色之一,那么微观状态的数量将增长 310 倍,因此整个系统的 entropy 将增加 log2(310)。

当我们使用彼此倍数的不同微观状态时,我们的直觉是正确的,但是如果微观状态不能如此整齐地彼此倍增,则该直觉会失败。一个简单的例子是,如果我们将盒子的左侧表示为一个单元格,而将右侧表示为一个 50x25 网格的单元格,则 entropy 看起来非常不同。以下是再次出现的表,但添加了我们的非均匀微观状态的行。我们如何计算宏观状态 (3,7) 的 entropy 的一个例子是:有 120 种等可能的方式可以将 3 个球放置在左侧,将 7 个球放置在右侧,但是右侧的球也可以处于 12507 种不同的状态,因此 entropy 为 log2(120⋅12507)=78.920877252。

(10,0)| (9,1)| (8,2)| (7,3)| (6,4)| (5,5)| (4,6)| (3,7)| (2,8)| (1,9)| (0,10)
---|---|---|---|---|---|---|---|---|---|---
2x1| 0.00000| 3.32193| 5.49185| 6.90689| 7.71425| 7.97728| 7.71425| 6.90689| 5.49185| 3.32193| 0.00000
50x50| 102.87712| 106.19905| 108.36898| 109.78401| 110.59137| 110.85440| 110.59137| 109.78401| 108.36898| 106.19905| 102.87712
mixed| 0.00000| 13.60964| 26.06728| 37.77003| 48.86510| 59.41584| 69.44052| 78.92088| 87.79355| 95.91134| 102.87712

一个有趣的注意事项是,当所有的球都在左侧时,entropy 为零,但是当所有的球都在右侧时,entropy 被最大化。同样,希望这能够从我们对 entropy 的理解中得到解释,entropy 衡量了相对于我们的微观状态的不确定性。如果我们知道所有的球都在左侧,那么我们知道它们必须在单个左侧单元格中,因此没有不确定性。如果我们知道球都在右侧,那么它们可能在 125010 个微观状态中的任何一个状态中,因此不确定性很高。

显然,在测量系统的 entropy 时,我们需要小心并了解我们正在选择哪些微观状态。幸运的是,对于大多数物理系统,我们使用标准的微观状态,即系统中球(粒子)的位置和动量的均匀网格。要使用的另一个标准微观状态是位置和动量的连续空间。

连续微观状态

到目前为止,我们已经研究了离散的微观状态集——例如单元格中的球。但是在物理系统中,微观状态通常是连续的:位置和动量可以在连续体上变化。我们如何在这种情况