概率空间、随机变量和分布:从集合到测度
在机器学习里,我们经常直接写:
\[ x \sim p(x), \quad \mathbb{E}_{x \sim p(x)}[f(x)] \]
这种写法很方便,但它把很多底层概念压缩到了一行里:什么是样本空间?什么是事件?什么是概率?随机变量到底是不是一个“变量”?分布和密度函数又是什么关系?
如果只做工程实现,很多时候不需要把这些概念全部展开。但一旦进入期望、条件概率、似然、KL 散度、最大似然估计这些内容,严格区分这些对象会让公式更清楚。概率空间就是这套符号的地基。
概率空间是什么
一个概率空间通常写成:
\[ (\Omega, \mathcal{F}, \mathbb{P}) \]
这里的三个对象分别是:
- \(\Omega\):样本空间,表示所有可能的实验结果。
- \(\mathcal{F}\):事件集合,是 \(\Omega\) 上的一个 \(\sigma\)-代数,表示哪些集合可以被讨论概率。
- \(\mathbb{P}\):概率测度,给每个可测事件分配一个 \([0,1]\) 之间的数。
可以把它理解成:
概率空间不是直接给“点”分配概率,而是先规定哪些“事件集合”可以讨论概率,再用 \(\mathbb{P}\) 给这些事件赋值。
例如,掷一次骰子时,可以令:
\[ \Omega = \{1,2,3,4,5,6\} \]
事件“掷出偶数”不是一个单独结果,而是一个集合:
\[ A = \{2,4,6\} \]
如果骰子是公平的,那么:
\[ \mathbb{P}(A) = \frac{3}{6} = \frac{1}{2} \]
这里真正被赋予概率的是事件集合 \(A\),而不是“偶数”这个自然语言描述。
\(\sigma\)-代数是什么
\(\mathcal{F}\) 是 \(\Omega\) 上的一个 \(\sigma\)-代数。它的作用是规定:哪些集合可以被当作事件,哪些集合可以被概率测度 \(\mathbb{P}\) 处理。
一个集合族 \(\mathcal{F}\) 如果是 \(\sigma\)-代数,至少要满足:
- 包含全集:\(\Omega \in \mathcal{F}\)。
- 对补集封闭:如果 \(A \in \mathcal{F}\),那么 \(A^c \in \mathcal{F}\)。
- 对可列并封闭:如果 \(A_1,A_2,\dots \in \mathcal{F}\),那么 \(\bigcup_{i=1}^{\infty} A_i \in \mathcal{F}\)。
这些条件保证了我们平时对事件做的操作仍然是合法事件。例如,已知 \(A\) 和 \(B\) 是事件,那么“不是 \(A\)”、“\(A\) 或 \(B\)”、“\(A\) 且 \(B\)”也都应该是事件。
在有限样本空间里,通常可以直接取幂集:
\[ \mathcal{F} = 2^\Omega \]
也就是 \(\Omega\) 的所有子集都可以讨论概率。
但在连续空间里,比如 \(\Omega=\mathbb{R}\),并不是所有子集都适合被赋予概率。测度论引入 \(\sigma\)-代数,就是为了避开那些过于病态、无法稳定定义测度的集合。机器学习里通常不用深究这些病态集合,但知道 \(\mathcal{F}\) 的角色很重要:概率不是定义在任意东西上的,而是定义在可测事件上的。
测度是什么
测度可以理解成一种“给集合赋大小”的函数。概率测度是测度的一种特殊情况。
在概率空间中,\(\mathbb{P}\) 是一个函数:
\[ \mathbb{P}: \mathcal{F} \to [0,1] \]
它把一个可测事件 \(A \in \mathcal{F}\) 映射成一个概率值 \(\mathbb{P}(A)\)。
概率测度至少满足三个核心性质:
- 非负性:对任意事件 \(A \in \mathcal{F}\),都有 \(\mathbb{P}(A) \geq 0\)。
- 规范化:整个样本空间的概率为 \(\mathbb{P}(\Omega)=1\),空集的概率为 \(\mathbb{P}(\varnothing)=0\)。
- 可列可加性:如果 \(A_1,A_2,\dots\) 两两不相交,则
\[ \mathbb{P}\left(\bigcup_{i=1}^{\infty} A_i\right) = \sum_{i=1}^{\infty}\mathbb{P}(A_i) \]
其中,\(A_i\) 表示第 \(i\) 个事件,\(\bigcup_{i=1}^{\infty} A_i\) 表示这些事件的并集。
直观上,可列可加性就是说:如果一组事件互不重叠,那么“它们中至少发生一个”的概率,等于每个事件概率的和。
这里引入了测度论中概率测度的概念。如果只从概率论的视角看,概率,或者说概率测度,就是一个函数:它把事件集合映射到 \([0,1]\) 之间的数值。
这其实也揭示了测度论的基本思想:我们想要给某些集合赋予一个“大小”或者“权重”(measure)。概率测度就是给事件集合赋予一个“概率大小”。可以说,概率论是测度论在总大小为 1 时的一种特殊表现形式。
随机变量是什么
随机变量 \(X\) 并不是普通意义上的“变量”。更严格地说,它是一个从样本空间到取值空间的函数:
\[ X: \Omega \to \mathcal{X} \]
其中:
- \(\Omega\):底层样本空间,包含所有实验结果 \(\omega\)。
- \(\mathcal{X}\):随机变量的取值空间。
- \(X(\omega)\):当实验结果为 \(\omega\) 时,随机变量 \(X\) 取到的值。
例如,掷一次骰子时,底层实验结果可以就是骰子的实际点数。此时可以定义:
\[ X(\omega) = \omega \]
如果我们只关心“是不是偶数”,也可以定义另一个随机变量:
\[ Y(\omega) = \begin{cases} 1, & \omega \in \{2,4,6\} \\ 0, & \omega \in \{1,3,5\} \end{cases} \]
这里 \(X\) 和 \(Y\) 是两个不同的随机变量。它们面对同一个底层实验结果 \(\omega\),但提取的信息不同。
在机器学习里,底层样本空间 \(\Omega\) 往往不会显式写出来。比如我们说“一条训练样本 \(X\) 来自数据分布”,真正关心的是 \(X\) 的取值空间,比如文本序列、图片张量或 token id 序列,而不是底层的 \(\omega\)。但从严格数学上说,随机变量仍然是从 \(\Omega\) 到取值空间的映射。
分布是什么
有了随机变量 \(X\) 之后,我们通常关心的是:\(X\) 落到某个取值集合 \(A\) 里的概率是多少?
这里的 \(A\) 是取值空间 \(\mathcal{X}\) 里的集合。可是原始概率测度 \(\mathbb{P}\) 定义在样本空间 \(\Omega\) 上,不能直接作用在 \(A\) 上。因此,我们需要先把 \(A\) 拉回到样本空间:
\[ X^{-1}(A) = \{ \omega \in \Omega : X(\omega) \in A \} \]
这里 \(X^{-1}(A)\) 表示所有会被 \(X\) 映射到 \(A\) 里的底层实验结果。它是 \(\Omega\) 里的事件,所以可以用 \(\mathbb{P}\) 计算概率。
于是我们定义一个新的测度 \(\mu_X\):
\[ \mu_X(A) = \mathbb{P}(X^{-1}(A)) \]
这个 \(\mu_X\) 就是随机变量 \(X\) 在取值空间 \(\mathcal{X}\) 上诱导出来的分布,也叫推前测度。也就是说:
分布不是凭空出现的函数,而是随机变量把底层概率测度 \(\mathbb{P}\) 推到取值空间之后得到的测度。
严格写法可以写成:
\[ X \sim \mu_X \]
意思是:随机变量 \(X\) 的分布是 \(\mu_X\)。
\(\mathbb{P}\)、\(\mu_X\) 和 \(p(x)\) 的区别
这里出现了两个很容易混淆的概念:概率测度 \(\mathbb{P}\),还有我们刚才提到的测度 \(\mu_X\)。
当时一个很让我困扰的问题是:概率空间里面到底有几个概率测度?
答案是:概率空间本身只定义了一个概率测度 \(\mathbb{P}\)。\(\mu_X\) 不是概率空间里额外给出的第二个原始测度,而是随机变量 \(X\) 和原始概率测度 \(\mathbb{P}\) 一起诱导出来的分布测度。
这可能有点绕口,不过这么理解就会清楚一些:测度是什么?就是给一系列集合赋值的函数。在概率空间里,这一系列集合是事件集合 \(\mathcal{F}\),赋值函数是 \(\mathbb{P}\)。而概率空间 \((\Omega,\mathcal{F},\mathbb{P})\) 的定义里面本身不包含随机变量,所以 \(\mathbb{P}\) 只是定义在事件集合上的。
那么随机变量加入之后发生了什么呢?我们开始关心的往往不再是底层事件 \(A \subseteq \Omega\),而是随机变量 \(X\) 在取值空间 \(\mathcal{X}\) 里会落到哪些集合中。例如,我们关心的可能是 \(X\) 是否落在某个集合 \(B \subseteq \mathcal{X}\) 里。
但 \(\mathbb{P}\) 不能直接作用在 \(B\) 上,因为 \(B\) 是取值空间里的集合,不是样本空间里的事件。于是我们需要先通过 \(X^{-1}(B)\) 把它拉回到样本空间,再用 \(\mathbb{P}\) 计算概率:
\[ \mu_X(B) = \mathbb{P}(X^{-1}(B)) \]
这就是为什么说 \(\mu_X\) 是“由随机变量诱导出的分布/测度”。显然,随机变量不同,同样的取值集合对应的概率也可能不同。这样看就清晰了:\(\mathbb{P}\) 定义在原始事件空间上,而 \(\mu_X\) 定义在随机变量的取值空间上。
最后,分布本质上是在描述“随机变量落入取值空间中某些集合的概率”。这正是测度做的事情:给集合赋值。所以在测度论的语境下,分布可以理解为定义在取值空间上的概率测度。
另一种描述抽象的描述: 随机变量是一个可测函数,它把概率测度推前(pushforward)成分布测度。
总结:
- \(\mathbb{P}\):定义在原始样本空间 \(\Omega\) 上的概率测度。
- \(\mu_X\):由随机变量 \(X\) 诱导到取值空间 \(\mathcal{X}\) 上的分布测度。
- \(p(x)\):当 \(\mu_X\) 可以用密度函数或质量函数表示时,\(p(x)\) 是这个函数在点 \(x\) 处的值。
如果 \(\mu_X\) 在连续空间上有密度 \(p(x)\),可以写成:
\[ d\mu_X(x) = p(x)dx \]
其中,\(dx\) 表示对取值空间中的变量 \(x\) 做积分时使用的基础测度,通常是 Lebesgue 测度;\(p(x)\) 是相对于这个基础测度的密度。
因此,严格地说,分布首先是一个测度 \(\mu_X\),密度函数 \(p(x)\) 只是表示这个测度的一种方式。我们平时说“分布 \(p(x)\)”是一种常见简写。
测度论视角下的期望
从原始概率空间看,如果 \(X\) 是随机变量,\(f(X)\) 也是随机变量,那么期望可以写成:
\[ \mathbb{E}[f(X)] = \int_{\Omega} f(X(\omega))d\mathbb{P}(\omega) \]
这里:
- \(\omega\):样本空间里的实验结果。
- \(X(\omega)\):随机变量在实验结果 \(\omega\) 上的取值。
- \(f(X(\omega))\):函数 \(f\) 作用在这个取值上的结果。
- \(d\mathbb{P}(\omega)\):按照概率测度 \(\mathbb{P}\) 对 \(\omega\) 加权积分。
由于 \(X\) 已经把 \(\mathbb{P}\) 推到了取值空间,期望也可以写成对分布测度 \(\mu_X\) 的积分:
\[ \mathbb{E}[f(X)] = \int_{\mathcal{X}} f(x) d\mu_X(x) \]
如果 \(\mu_X\) 有密度 \(p(x)\),那么:
\[ \mathbb{E}[f(X)] = \int_{\mathcal{X}} f(x)p(x) dx \]
这里的 \(x\) 是积分变量,也就是 dummy variable。它不是随机变量本身,而是取值空间中的占位符。
这也解释了为什么机器学习论文里常写:
\[ \mathbb{E}_{x \sim p(x)}[f(x)] \]
严格来看,这种角标里的 \(x \sim p(x)\) 不是在说“积分变量 \(x\) 真的服从分布”。它更像是 ML 语境下的简写:提醒我们用 \(x\) 作为积分变量,并按照 \(p(x)\) 加权积分,或者从采样平均的角度理解这个期望。
一个实用记忆方式
可以把这几个对象按层次记住:
- 概率空间 \((\Omega,\mathcal{F},\mathbb{P})\):定义底层随机性。
- 随机变量 \(X:\Omega \to \mathcal{X}\):从底层结果中提取我们关心的值。
- 分布 \(\mu_X\):随机变量 \(X\) 在取值空间上诱导出的测度。
- 密度或质量函数 \(p(x)\):在可以表示时,用函数形式描述分布。
- 期望 \(\mathbb{E}[f(X)]\):对随机变量函数做测度积分。
因此,看到:
\[ X \sim p(x) \]
可以理解为:随机变量 \(X\) 的分布可以用密度或质量函数 \(p(x)\) 描述。
看到:
\[ \mathbb{E}_{x \sim p(x)}[f(x)] \]
可以理解为:对取值空间中的 \(x\),按照 \(p(x)\) 加权,计算 \(f(x)\) 的平均效果。
这样读,既能兼容机器学习论文里的常见简写,也能保留概率论中“随机变量、取值、分布、测度”之间的严格关系。