什么是什么,为什么和如何解释

使用“熵”,你永远不会输掉辩论,冯·诺伊曼告诉香农,因为没有人真正知道“熵”是什么。
— 威廉·庞德斯通
让我们从一点历史开始。
1948年,一位名叫克劳德·E·香农的数学家发表了一篇题为“通信的数学理论”的文章,其中介绍了机器学习中的一个关键概念:熵。
虽然熵在物理学中衡量的是混乱程度,但在信息论中其含义发生了转变。然而,两者都衡量的是混乱或不确定性。
让我们深入了解“信息”的概念。
I. 香农的信息
根据这篇论文,我们可以量化一个事件所传达的信息,这可以被解释为衡量“惊讶程度”。这意味着信息内容实质上代表了事件所包含的惊讶程度。
让我们举个例子:想象有人告诉你,“动物需要水才能生存。”听到这句话,你会有多么惊讶?
你根本不会感到惊讶,因为这是一个众所周知且始终如一的事实。在这种情况下,惊讶程度等于0,因此传达的信息也等于0。
但是如果有人说,“我抛硬币得到了反面”呢?这个事件(得到反面)并不是保证发生的,对吗?头或者反的可能性都是50-50。因此,听到这个陈述可能会引起一定程度的惊讶。这里存在着概率和惊讶之间的有趣关联。当一个事件绝对确定(概率为1)时,惊讶程度减少(变为0)。相反,随着概率的降低——即事件变得不太可能发生——惊讶感增加。这是概率和惊讶之间的逆相关关系。
数学上表示为:

其中p(x)是事件x的概率。
我们知道信息只是惊讶的数量。既然我们在这里要做一些数学运算,所以我们可以用“信息”替换“惊讶”这个词。
如果你做信息 = 1/p(x)会怎样?
让我们在一些极端情况下进行考虑:
当p(x) = 0时,信息 = 1/0 = ∞(无限/未定义)。这个结果符合我们的直觉:一个被认为不可能发生却发生了的事件将产生无限或未定义的惊讶/信息。(一个不可能的情景)➟ ✅
当p(x) = 1时,信息 = 1/1 = 1,这与我们的观察相矛盾。理想情况下,在绝对可能发生的事件中,我们希望不会有任何惊讶。
➟ ❌
幸运的是,对数函数非常有用。(在本文中,我们将一直使用以2为底的对数log₂,表示为log。)
信息 = log ( 1/p(x) ) = log(1) — log( p(x) ) = 0 — log( p(x) )
信息 = -log( p(x) )
让我们在一些极端情况下检查这个新方程:
当p(x) = 0时,信息 = -log( 0 )= ∞ ➟ ✅
当p(x) = 1时,信息 = -log(1) = 0,这确实是我们期望的结果,因为绝对可能发生的事件不应该带来任何惊讶/信息 ➟ ✅
因此,为了衡量一个事件所传达的意外程度或信息量,我们可以利用下面的公式:


这个-log函数在x = 1时为0(意味着当概率为1时,信息量为0)。随着x的减小,对应的y值急剧增加。当x = 0时,信息量变为无穷大或未定义。这个曲线准确地捕捉到了我们对信息的直观理解。
对于一系列事件,它变成了

这无非是每个事件的信息量的总和。信息的单位是“比特”。这里有另一个直观的角度:

假设你在A点,想要到达D点。然而,你对路线一无所知,也看不到相邻的点。而且,你不能往回走。
当你在A点时,你有两个选择:左(0)和右(1)。我给你发送一位比特,0,一个信息比特,帮助你从2个选择中进行选择(第二列)。当你到达B点时,我给你一个1的比特值,总共是2比特,让你可以从2 * 2 = 4个选项中进行选择(第三列)。当你进入C点时,我再次发送一个1,总共是3比特。这帮助你从2 * 2 * 2 = 8个选项中进行选择(最后一列)。有趣的是,1是2的对数,2是4的对数,3是8的对数。
‘n’个比特的信息使我们可以从‘m’个选项中进行选择。
例如,8 = 2³(其中m = 8表示总共可能的结果数,n = 3表示比特数)
一般地,
m = 2ⁿ

这是信息(有用比特数)的方程。
信息论的基本直觉是,得知一个不太可能发生的事件发生了,比得知一个可能发生的事件发生了,更具有信息量。
— 《深度学习》,第73页,2016年。
II. 熵
让我们考虑这样一个场景:我们想要使用概率分布从给定的列表[1, 2, 3, 4]中生成随机数。

我们可以看到,得到2的概率最高,这意味着得到2时的惊讶程度相对较低,而得到3的惊讶程度较高,其概率为0.1。这两个事件的香农信息量为:
- 得到2的信息量 = -log(0.8) = 0.32比特
- 得到3的信息量 = -log(0.1) = 3.32比特
请注意,每次生成一个数字时,所获得的信息是不同的。
假设我们按照给定的分布进行100次生成过程。为了计算总信息量,我们需要将每个实例中获得的个体信息相加。
生成1的观测次数= 0.05 * 100 = 5次
生成2的观测次数= 0.8 * 100 = 80次
生成3的观测次数= 0.1 * 100 = 10次
生成4的观测次数= 0.05 * 100 = 5次
现在,让我们计算100次生成所传递的总信息量。
生成1时获得的信息量为5次= -log(0.05) * 5 = 21.6位
生成2时获得的信息量为80次= -log(0.8) * 80 = 25.8位
生成3时获得的信息量为10次= -log(0.1) * 10 = 23.2位
生成4时获得的信息量为5次= -log(0.05) * 5 = 21.6位
总信息量= 92.2位
因此,100次观测所传递的总信息量为92.2位。
如果我们计算每个观测的信息量(平均值),会不会更好?
以上分布的平均信息量= 92.2 / 100(因为我们有100个观测)
平均信息量= 0.922位
是的,这就是我们所称之为熵的数量。
这里没有什么花哨的东西,它只是由概率分布传递的平均(预期)信息量。现在让我们推导出熵的公式。

p(x) × N给出在进行N次总观测时事件x发生的次数。
因此,最终的一般方程式为

其中H是熵,E是期望。
您可以关注我,因为我将继续写关于人工智能和数学的内容。
参考资料
[1] C. E. SHANNON, “通信的数学理论”,1948年
[2] Josh Stramer,“熵(用于数据科学)明确解释!!!”,Youtube,2022年
[3] James V Stone,“信息论:教程介绍”,2018年