什么是熵?
在深度学习和自然语言处理中,我们经常会遇到“熵”(entropy)这个概念。那么,熵到底是什么呢?
熵是信息量的一种度量。但“信息量”又是什么?
在信息论中,香农(Shannon)提出:
$$ I(x) = -\log_2 p(x) $$一个事件 $x$ 发生时所携带的信息量(也称为“自信息”,self-information)定义为:
直观理解
- 如果某事几乎必然发生($p(x) \approx 1$),那么它发生时不带来新信息 → $I(x) \approx 0$;
- 如果某事极不可能发生($p(x) \approx 0$),一旦发生就非常令人惊讶 → $I(x)$ 很大。
因此:越意外的事件,信息量越大。
既然熵是一种可计算的量,那么它的计算公式是什么?在介绍熵的计算之前,我们需要先理解概率论中的随机变量及其期望。
随机变量及其期望
在概率论中,随机变量(random variable)并不是一个“普通变量”,而是一个函数。具体来说:
- 设有一个样本空间 $\Omega$(即所有可能实验结果的集合);
- 随机变量 $X$ 是一个从 $\Omega$ 到某个可数集合 $\mathcal{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)= \frac{1}{2}$),且两次抛掷相互独立,则每个基本结果的概率为各自概率的乘积:
$$ \begin{aligned} P(X = 0) &= P((T,T)) \\ &= P(T) \cdot P(T) \\ &= \frac{1}{2} \times \frac{1}{2} \\ &= \frac{1}{4} \end{aligned} $$$$ \begin{aligned} P(X = 1) &= P((H,T), (T,H)) \\ &= P(H, T) + P(T, H) \\ &= \frac{1}{2} \times \frac{1}{2} + \frac{1}{2} \times \frac{1}{2} \\ &= \frac{2}{4} \end{aligned} $$$$ \begin{aligned} P(X = 2) &= P((H,H)) \\ &= \frac{1}{2} \times \frac{1}{2} \\ &= \frac{1}{4} \end{aligned} $$随机变量的期望(expected value)是其所有可能取值的加权平均,权重即为对应取值的概率:
$$ \mathbb{E}[X] = \sum_{x \in \mathcal{X}} p(x) \cdot x $$熵的计算
熵 = 信息量的期望值(即加权平均)
随机变量 $X$ 的熵 $H(X)$ 定义为其自信息 $I(X)$ 的期望:
$$ \begin{aligned} H(X) &= \mathbb{E}[I(X)] \\ &= \sum_{x \in \mathcal{X}} p(x) \cdot I(x) \\ &= \sum_{x \in \mathcal{X}} p(x) \cdot \big( -\log_2 p(x) \big) \\ &= -\sum_{x \in \mathcal{X}} p(x) \log_2 p(x) \end{aligned} $$换句话说,熵是以概率 $p(x)$ 为权重,对每个结果的信息量 $-\log_2 p(x)$ 所做的加权平均。
这与算术平均 $\frac{1}{n} \sum x_i$ 不同——高频事件对熵的贡献更大。
举个例子:抛硬币
情况一:公平硬币
- $p(\text{H}) = p(\text{T}) = 0.5$
- 信息量:$I(\text{H}) = I(\text{T}) = -\log_2 0.5 = 1$ 比特
- 熵:$H(X) = 0.5 \times 1 + 0.5 \times 1 = 1$ 比特
平均每次抛硬币带来 1 比特信息。
情况二:偏置硬币
- $p(\text{H}) = 0.9,\; p(\text{T}) = 0.1$
- $I(\text{H}) = -\log_2 0.9 \approx 0.15$ 比特(不意外)
- $I(\text{T}) = -\log_2 0.1 \approx 3.32$ 比特(很意外)
- 熵:$H(X) = 0.9 \times 0.15 + 0.1 \times 3.32 \approx 0.47$ 比特
尽管“出现 T”的信息量很大,但由于它极少发生,平均信息量反而更低。
这正是“加权平均”的体现:高频事件主导了熵的大小。
小结
- 熵不是单个事件的信息量,而是整个概率分布的平均不确定性;
- 它衡量的是:如果你根据这个分布不断抽样,平均每次能获得多少“新信息”;
- 在语言模型中,熵越低,说明模型对下一个词越“确定”——这正是困惑度(perplexity)的理论基础。