熵与概率

0 阅读1分钟

什么是熵?

在深度学习和自然语言处理中,我们经常会遇到“熵”(entropy)这个概念。那么,熵到底是什么呢?

熵是信息量的一种度量。但“信息量”又是什么?

在信息论中,香农(Shannon)提出:

一个事件 xx 发生时所携带的信息量(也称为“自信息”,self-information)定义为:

I(x)=log2p(x)I(x) = -\log_2 p(x)

直观理解

  • 如果某事几乎必然发生(p(x)1p(x) \approx 1),那么它发生时不带来新信息I(x)0I(x) \approx 0
  • 如果某事极不可能发生(p(x)0p(x) \approx 0),一旦发生就非常令人惊讶I(x)I(x) 很大。

因此:越意外的事件,信息量越大

既然熵是一种可计算的量,那么它的计算公式是什么?在介绍熵的计算之前,我们需要先理解概率论中的随机变量及其期望

随机变量及其期望

在概率论中,随机变量(random variable)并不是一个“普通变量”,而是一个函数。具体来说:

  • 设有一个样本空间 Ω\Omega(即所有可能实验结果的集合);
  • 随机变量 XX 是一个从 Ω\Omega 到某个可数集合 X\mathcal{X}(通常是实数集或离散符号集)的函数:
X:ΩXX: \Omega \to \mathcal{X}

举个例子

抛两枚公平的硬币,用 H 表示正面,T 表示反面,样本空间为:

  • (H,H)(H, H)
  • (H,T)(H, T)
  • (T,H)(T, H)
  • (T,T)(T, T)

设随机变量 X 表示在一次抛掷两枚硬币的试验中,正面朝上的硬币数量,则:

  • X(H,H)=2X(H,H) = 2
  • X(H,T)=X(T,H)=1X(H,T) = X(T,H) = 1
  • X(T,T)=0X(T,T) = 0

于是,XX 的取值为 {0,1,2}\{0, 1, 2\}

注意:当我们说“随机变量 X 表示正面出现的次数”,指的是在一次具体的试验中(如抛两枚硬币得到 (H,T)),X 的取值为该次试验中 H 的数量。这不是指“样本空间中有多少个结果包含 H”——后者是一个固定常数,不是随机变量。这一点对于理解概率论的后续内容非常重要。

我们可以对随机变量的可能取值指定概率。 对于上述抛硬币的例子,我们假设两枚硬币都是公平的(即 P(H)=P(T)=12P(H) = P(T)= \frac{1}{2}),且两次抛掷相互独立,则每个基本结果的概率为各自概率的乘积:

P(X=0)=P((T,T))=P(T)P(T)=12×12=14\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}
P(X=1)=P((H,T),(T,H))=P(H,T)+P(T,H)=12×12+12×12=24\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}
P(X=2)=P((H,H))=12×12=14\begin{aligned} P(X = 2) &= P((H,H)) \\ &= \frac{1}{2} \times \frac{1}{2} \\ &= \frac{1}{4} \end{aligned}

随机变量的期望(expected value)是其所有可能取值的加权平均,权重即为对应取值的概率:

E[X]=xXp(x)x\mathbb{E}[X] = \sum_{x \in \mathcal{X}} p(x) \cdot x

熵的计算

熵 = 信息量的期望值(即加权平均)

随机变量 XX 的熵 H(X)H(X) 定义为其自信息 I(X)I(X) 的期望:

H(X)=E[I(X)]=xXp(x)I(x)=xXp(x)(log2p(x))=xXp(x)log2p(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)p(x) 为权重,对每个结果的信息量 log2p(x)-\log_2 p(x) 所做的加权平均

这与算术平均 1nxi\frac{1}{n} \sum x_i 不同——高频事件对熵的贡献更大

举个例子:抛硬币

情况一:公平硬币

  • p(H)=p(T)=0.5p(\text{H}) = p(\text{T}) = 0.5
  • 信息量:I(H)=I(T)=log20.5=1I(\text{H}) = I(\text{T}) = -\log_2 0.5 = 1 比特
  • 熵:H(X)=0.5×1+0.5×1=1H(X) = 0.5 \times 1 + 0.5 \times 1 = 1 比特

平均每次抛硬币带来 1 比特信息。

情况二:偏置硬币

  • p(H)=0.9,  p(T)=0.1p(\text{H}) = 0.9,\; p(\text{T}) = 0.1
  • I(H)=log20.90.15I(\text{H}) = -\log_2 0.9 \approx 0.15 比特(不意外)
  • I(T)=log20.13.32I(\text{T}) = -\log_2 0.1 \approx 3.32 比特(很意外)
  • 熵:H(X)=0.9×0.15+0.1×3.320.47H(X) = 0.9 \times 0.15 + 0.1 \times 3.32 \approx 0.47 比特

尽管“出现 T”的信息量很大,但由于它极少发生,平均信息量反而更低

这正是“加权平均”的体现:高频事件主导了熵的大小

小结

  • 熵不是单个事件的信息量,而是整个概率分布的平均不确定性
  • 它衡量的是:如果你根据这个分布不断抽样,平均每次能获得多少“新信息”
  • 在语言模型中,熵越低,说明模型对下一个词越“确定”——这正是困惑度(perplexity)的理论基础。