什么是熵?
在深度学习和自然语言处理中,我们经常会遇到“熵”(entropy)这个概念。那么,熵到底是什么呢?
熵是信息量的一种度量。但“信息量”又是什么?
在信息论中,香农(Shannon)提出:
一个事件 x 发生时所携带的信息量(也称为“自信息”,self-information)定义为:
I(x)=−log2p(x)
直观理解
- 如果某事几乎必然发生(p(x)≈1),那么它发生时不带来新信息 → I(x)≈0;
- 如果某事极不可能发生(p(x)≈0),一旦发生就非常令人惊讶 → I(x) 很大。
因此:越意外的事件,信息量越大。
既然熵是一种可计算的量,那么它的计算公式是什么?在介绍熵的计算之前,我们需要先理解概率论中的随机变量及其期望。
随机变量及其期望
在概率论中,随机变量(random variable)并不是一个“普通变量”,而是一个函数。具体来说:
- 设有一个样本空间 Ω(即所有可能实验结果的集合);
- 随机变量 X 是一个从 Ω 到某个可数集合 X(通常是实数集或离散符号集)的函数:
X:Ω→X
举个例子
抛两枚公平的硬币,用 H 表示正面,T 表示反面,样本空间为:
- (H,H)
- (H,T)
- (T,H)
- (T,T)
设随机变量 X 表示在一次抛掷两枚硬币的试验中,正面朝上的硬币数量,则:
- X(H,H)=2
- X(H,T)=X(T,H)=1
- X(T,T)=0
于是,X 的取值为 {0,1,2}
注意:当我们说“随机变量 X 表示正面出现的次数”,指的是在一次具体的试验中(如抛两枚硬币得到 (H,T)),X 的取值为该次试验中 H 的数量。这不是指“样本空间中有多少个结果包含 H”——后者是一个固定常数,不是随机变量。这一点对于理解概率论的后续内容非常重要。
我们可以对随机变量的可能取值指定概率。
对于上述抛硬币的例子,我们假设两枚硬币都是公平的(即 P(H)=P(T)=21),且两次抛掷相互独立,则每个基本结果的概率为各自概率的乘积:
P(X=0)=P((T,T))=P(T)⋅P(T)=21×21=41
P(X=1)=P((H,T),(T,H))=P(H,T)+P(T,H)=21×21+21×21=42
P(X=2)=P((H,H))=21×21=41
随机变量的期望(expected value)是其所有可能取值的加权平均,权重即为对应取值的概率:
E[X]=x∈X∑p(x)⋅x
熵的计算
熵 = 信息量的期望值(即加权平均)
随机变量 X 的熵 H(X) 定义为其自信息 I(X) 的期望:
H(X)=E[I(X)]=x∈X∑p(x)⋅I(x)=x∈X∑p(x)⋅(−log2p(x))=−x∈X∑p(x)log2p(x)
换句话说,熵是以概率 p(x) 为权重,对每个结果的信息量 −log2p(x) 所做的加权平均。
这与算术平均 n1∑xi 不同——高频事件对熵的贡献更大。
举个例子:抛硬币
情况一:公平硬币
- p(H)=p(T)=0.5
- 信息量:I(H)=I(T)=−log20.5=1 比特
- 熵:H(X)=0.5×1+0.5×1=1 比特
平均每次抛硬币带来 1 比特信息。
情况二:偏置硬币
- p(H)=0.9,p(T)=0.1
- I(H)=−log20.9≈0.15 比特(不意外)
- I(T)=−log20.1≈3.32 比特(很意外)
- 熵:H(X)=0.9×0.15+0.1×3.32≈0.47 比特
尽管“出现 T”的信息量很大,但由于它极少发生,平均信息量反而更低。
这正是“加权平均”的体现:高频事件主导了熵的大小。
小结
- 熵不是单个事件的信息量,而是整个概率分布的平均不确定性;
- 它衡量的是:如果你根据这个分布不断抽样,平均每次能获得多少“新信息”;
- 在语言模型中,熵越低,说明模型对下一个词越“确定”——这正是困惑度(perplexity)的理论基础。