概率论2026 FALL

第一章

随机试验与概率空间

扔硬币的试验与问题

下面有一枚可以调节正面出现概率 pp 的“硬币”。我们来用它做一些投掷硬币的试验。

先想一组具体结果。 假设十次投掷依次是 H、T、H、H、T、H、T、H、H、H,其中有7次正面。正面比例是70%;若用 p=0.5 作比较,正面个数比10×0.5多了2个。

启用 JavaScript 后,可以按1、10、100或1,000次继续投掷,调整正面概率,并比较同一数据的比例、个数偏差和不同尺度。下面的问题也可以用这组有限记录先想一想。

在这个小游戏中,我们能做不少事情,也可以观察到不少有意思的现象,我这里列举几个:

规律与问题

虽然每一次硬币投掷的结果是随机的,但是,当投掷的数量变得很多的时候,我们可以发现一些规律。这些规律也能自然的产生一些问题。

第一,正面比例到底会不会稳定? 应该可以观察到,随着投掷次数的增多,正面比例会越来越接近 pp。但是,正面比例会一直稳定在 pp 附近吗?

第二,稳定以后,还剩下多大的波动? 如果正面的比例越来越接近 pp,那么它的波动会越来越小吗?

第三,我们怎样根据结果判断硬币? 我们能否根据投掷的结果来判断硬币的正面概率 pp?如果我们只扔了十次,正面比例是 0.7,那么我们能否说硬币的正面概率就是 0.7 呢?如果我们扔了一百次,正面比例是 0.7,那么我们能否说硬币的正面概率就是 0.7 呢?扔了多少次之后,我们就可以“自信”的说硬币的正面概率就是 0.7 呢?

第四,连续正面的次数会不会越来越长? 如果我们一直扔下去,连续正面的次数会不会越来越长?如果是的话,它会有什么规律呢?

为了回答这些问题,我们需要给扔硬币的试验建立一个数学模型。我们希望这个模型既能把我们眼前看到的现象描述清楚,又能让我们用数学的方法来分析它。

1.1 两个骰子的试验

我们来讨论一个更加简单并且具体的例子:扔两枚六面骰子,一枚红色,一枚蓝色。我们约定先记红骰子的点数,再记蓝骰子的点数。比如 (2,5)(2,5) 就是红骰子为2、蓝骰子为5。所有可能的结果放在一起,就是

Ω={1,2,…,6}2. \Omega=\{1,2,\ldots,6\}^2.

我们把这个集合叫作样本空间(sample space),其中的一个元素 ω\omega 叫作样本点(outcome)。名字听起来有点正式,其实在这个例子里,一个样本点就是我们扔完骰子后记下来的一对数,也就是一次投骰子试验的结果。注意,因为我们的骰子有颜色之分,所以 (2,5)(2,5) 和 (5,2)(5,2) 是两个不同的结果。

接下来给这些结果分配概率。我们假设两枚骰子都公平,而且两枚骰子之间的结果不会相互影响。换句话说,36个有序对,每一个出现的概率都是 1/361/36。做了一次试验之后,我们会关心一些事情,比如“两个点数的和是4” 这件事情有没有发生。它表达的意思是,投出来的结果是不是 (1,3)(1,3)、(2,2)(2,2)、(3,1)(3,1) 这三个结果中的一个。因此,我们可以用下面这个子集来表示它:

A={(1,3),(2,2),(3,1)}. A=\{(1,3),(2,2),(3,1)\}.

我们把这样的子集叫作事件(event)。说“事件 AA 发生”,就是实际扔出的那个样本点落在 AA 里面。在这个例子里,AA 有3个点,每个点的概率都是 1/361/36,所以,我们说 AA 发生的概率,也就是投两个骰子,它们点数之和等于4的概率是 3/36=1/123/36=1/12。

1.2 概率空间与概率公理

概率公理都来自于对现实生活中随机试验的抽象。我们先把注意力集中在所谓的“离散概率空间”,即随机试验的结果是有限个或者至多可数无限个的情况。我们这样做的原因在于,需要先在离散的场合建立关于概率的正确直观,而不必过早地把精力花在不可数的概率空间引起的一些系统性问题上。当然,在这门课里,我们的目标是建立一个一般性的理论。我们将在对离散的世界理解得足够好之后,再讨论一般的概率空间,并看看哪些直观能够直接类比过去,哪些不能。

因此,在介绍抽象的概率公理时,我们脑海中最好能有一个例子,从而明白每一条公理出现的理由。在这儿,我们就继续想着上一节扔两个骰子的试验。

一个概率空间是一个三元组 (Ω,F,P)(\Omega,\mathcal F,\mathbb P)。我们分别来解释它们的含义。

其中 Ω\Omega 是样本空间,即随机试验所有可能结果的集合。在两个骰子的例子里,我们已经把它写成了 {1,2,…,6}2\{1,2,\ldots,6\}^2。

三元组中的第二项 F⊆2Ω\mathcal F\subseteq2^\Omega 是“事件族”,用来表示这个随机试验中所有可以讨论的事件。我们在上一节已经看到,一个事件可以用 Ω\Omega 的一个子集表示,而 F\mathcal F 就是这些事件组成的集合。注意,Ω\Omega 中的元素是样本点,F\mathcal F 中的元素则是事件,也就是样本点的集合。

一个很自然的问题是,我们为什么不把 F\mathcal F 直接取成 2Ω2^\Omega,而只要求它是 2Ω2^\Omega 的一个子集呢?这里我认为有好几个原因。首先一个比较重要的原因是,在我们以后要研究的连续模型中,把 F\mathcal F 取成 2Ω2^\Omega 可能会“太大了”,以至于没有办法在上面定义我们所希望的概率。具体的原因,我们在 §1.4 给出一个证明。另外,允许 F\mathcal F 是 2Ω2^\Omega 的子集也给我们提供了一些便利;以后学习条件期望、随机过程时,我们会更多地把它解释成某种意义上的“信息”。

如果你同意 F\mathcal F 不一定要取成 2Ω2^\Omega,那么我们就要给它加一些限制,因为并不是 2Ω2^\Omega 的每一个子集都合适当成事件族。在这儿,我们要求 F\mathcal F 构成一个 σ-代数(σ-algebra),又称 σ-域。

定义 1.1 σ-代数

设 Ω\Omega 为非空集合。我们说集合族 F⊆2Ω\mathcal F\subseteq2^\Omega 是一个 σ-代数,如果它满足:

  1. ∅∈F\varnothing\in\mathcal F,Ω∈F\Omega\in\mathcal F;
  2. 如果事件 A∈FA\in\mathcal F,则它在 Ω\Omega 中的补集 Ac∈FA^c\in\mathcal F;
  3. 如果可数个事件 A1,A2,…∈FA_1,A_2,\ldots\in\mathcal F,则 ⋃n≥1An∈F\bigcup_{n\ge1}A_n\in\mathcal F。

这三条要求与我们对随机试验的直观理解是很对应的。第一条告诉我们,需要有“不可能事件”和“必然事件”。第二条告诉我们,如果 AA 是一个合理的事件,那么“AA 不发生”也应该是一个合理的事件。第三条是说,如果 A1,A2,…A_1,A_2,\ldots 都是合理的事件,那么“它们之中至少有一个发生”也应该是一个合理的事件。有限个事件的并自然也包括在内,只要在后面补上一串空集即可。

定义里没有另外要求对交集封闭,因为这已经可以从补集和并集的要求推出来。用 De Morgan 法则,我们有

⋂n≥1An=(⋃n≥1Anc)c∈F. \bigcap_{n\ge1}A_n =\left(\bigcup_{n\ge1}A_n^c\right)^c\in\mathcal F.

同样,A∖B=A∩BcA\setminus B=A\cap B^c 也在 F\mathcal F 里。所以,接下来我们对事件取交、取差时,得到的仍然是可以讨论的事件。

三元组中的第三项 P:F→[0,1]\mathbb P:\mathcal F\to[0,1] 给每一个事件赋予一个 [0,1][0,1] 之间的数,表示这个事件发生的概率,被称为概率测度。与事件族的要求相对应,我们对 P\mathbb P 也有要求:

  1. P(∅)=0\mathbb P(\varnothing)=0,P(Ω)=1\mathbb P(\Omega)=1;
  2. 对任意事件 A∈FA\in\mathcal F,P(Ac)=1−P(A)\mathbb P(A^c)=1-\mathbb P(A);
  3. 对任意两两不相交的事件 A1,A2,…∈FA_1,A_2,\ldots\in\mathcal F,有

P(⋃n≥1An)=∑n≥1P(An). \mathbb P\left(\bigcup_{n\ge1}A_n\right) =\sum_{n\ge1}\mathbb P(A_n).

最后一条叫作可数可加性。右边的无穷和,指的是有限部分和的极限。我们已经要求空集的概率为零,因此有限个不相交事件的可加性也包括在这条要求里。

这里的要求有一些冗余,比如第二条可以由第一条和第三条推出:把 Ω\Omega 写成 AA 与 AcA^c 的不交并就行了。我把它们都列出来,是为了让这些公理和我们对事件的直观理解对应起来。对 σ-代数的要求也是类似的:补集封闭且包含 Ω\Omega,就已经保证它包含空集。

有了这三样东西,我们就把一个随机试验写成了概率空间 (Ω,F,P)(\Omega,\mathcal F,\mathbb P)。

也许有人会问,为什么 P\mathbb P 要定义成事件族 F\mathcal F 上的函数,而不是样本空间 Ω\Omega 上的函数呢?事实上,当 Ω\Omega 是离散的,并且取 F=2Ω\mathcal F=2^\Omega 时,这两种做法并没有多大区别。对每一个样本点 ω\omega,我们记

pω=P({ω}). p_\omega=\mathbb P(\{\omega\}).

那么根据可数可加性,每个事件的概率都可以写成

P(A)=∑ω∈Apω. \mathbb P(A)=\sum_{\omega\in A}p_\omega.

也就是说,P\mathbb P 在单点集上的取值决定了它在所有事件上的取值。但值得注意的是,在 Ω\Omega 不可数时,这种做法未必行得通,我们需要按照公理的形式把 P\mathbb P 定义成事件上的函数。

例 1.1 (两个公平骰子的概率空间) 回到上一节两个骰子的试验,现在我们就能把它的概率空间完整地写出来:样本空间是 Ω={1,2,…,6}2\Omega=\{1,2,\ldots,6\}^2,事件族是 F=2Ω\mathcal F=2^\Omega,每个单点的概率都是 1/361/36。任意事件的概率,就是把它包含的那些点的概率加起来。这与上一节的计算完全一致。

例 1.2 (第二枚骰子不均匀) 现在我们把第二枚,也就是蓝骰子,换成一枚不均匀的骰子。假设它出现1、2、3、4、5的概率各是 1/101/10,出现6的概率是 1/21/2。红骰子仍然公平,两枚骰子仍然相互独立。这些概率加起来是 5×1/10+1/2=15\times1/10+1/2=1,所以蓝骰子本身的概率分配没有问题。

我们应该怎样修改刚才的概率空间?样本空间不用改,仍然是 Ω={1,2,…,6}2\Omega=\{1,2,\ldots,6\}^2;事件族也不用改,仍然是 F=2Ω\mathcal F=2^\Omega。改变的是每个样本点的概率。我们把新的概率记作 Q\mathbb Q,与刚才的 P\mathbb P 区分开。对于任意 i∈{1,…,6}i\in\{1,\ldots,6\},定义

Q({(i,j)})={160,j≤5,112,j=6. \mathbb Q(\{(i,j)\})= \begin{cases} \dfrac1{60},&j\le5,\\[4pt] \dfrac1{12},&j=6. \end{cases}

这个分配对应的正是我们刚才说的试验:红骰子的每个点数占 1/61/6,再分别乘上蓝骰子各点数的概率。比如 (1,2)(1,2) 的概率是 1/6×1/10=1/601/6\times1/10=1/60,而 (1,6)(1,6) 的概率是 1/6×1/2=1/121/6\times1/2=1/12。两种结果现在就不一样容易出现了。

我们也可以直接检查,36个样本点的总概率仍然是1。其中30个点的第二个坐标不是6,另外6个点的第二个坐标是6,所以

∑ω∈ΩQ({ω})=30⋅160+6⋅112=1. \sum_{\omega\in\Omega}\mathbb Q(\{\omega\}) =30\cdot\frac1{60}+6\cdot\frac1{12}=1.

对任意事件 E⊆ΩE\subseteq\Omega,让 Q(E)\mathbb Q(E) 等于其中各个样本点的概率之和,就得到了一个概率测度。因此,(Ω,F,Q)(\Omega,\mathcal F,\mathbb Q) 是另一个完全合法的概率空间。

再算一次“两个点数之和是4”。事件仍然是刚才的 A={(1,3),(2,2),(3,1)}A=\{(1,3),(2,2),(3,1)\},但现在这三个点的概率各是 1/601/60,所以

Q(A)=160+160+160=120. \mathbb Q(A)=\frac1{60}+\frac1{60}+\frac1{60}=\frac1{20}.

比较 例 1.1 和 例 1.2:同样的36个样本点,同样的事件 AA,换了一套概率分配,答案就从 1/121/12 变成了 1/201/20。我们定义概率空间时,并没有要求每个样本点的概率相同。只有在等可能的特殊情形下,才能用“事件里的点数除以总点数”来计算;一般情况下,要加的是各个点的概率。

1.3 集合运算与事件的基本性质

从上面关于概率公理的讨论可以看到,我们现在可以用集合的语言来讨论概率。特别是在有限、等可能的模型中,计算概率就是组合计数;如果样本点并不等可能,则要把相应的概率加起来。但在很多时候,我们希望把这些对于概率空间的操作和背后的随机试验结合起来,这样能够给出我们一些重要的直观。这些直观能够帮助我们从“概率”的视角去看待问题。在未来,你一定会发现,有很多在概率视角看起来显然正确、无比简单的事情,如果机械地把它翻译成对集合或者元素的操作,就会变得笨拙而繁琐。

我们首先来看一些简单的集合运算和随机试验之间的对应。一次试验得到结果 ω\omega,事件 AA 发生,就是说 ω∈A\omega\in A。沿着这个解释,下面两列说的其实是同一件事情。

集合视角 随机试验视角
AA 事件 AA 发生
AcA^c 事件 AA 不发生
A∪BA\cup B 事件 AA 和 BB 至少有一个发生
A∩BA\cap B 事件 AA 和 BB 同时发生
A∖BA\setminus B 事件 AA 发生,但是 BB 没有发生
A⊆BA\subseteq B 事件 AA 发生就一定有 BB 发生
A∩B=∅A\cap B=\emptyset 事件 AA 和 BB 不可能同时发生
A∪B=ΩA\cup B=\Omega 事件 AA 和 BB 至少有一个必定发生

比如,投掷两个骰子时,“两个点数都是偶数”蕴含“两个点数的和是偶数”。用集合的语言说,前一个事件是后一个事件的子集。所以后一个事件的概率不应该比前一个小。这样的解释很直观,不过我们还要看看,怎样从刚才的公理把它证明出来。

上面的表格其实已经用到了一些 σ\sigma-代数的性质:如果 A,B∈FA,B\in\mathcal F,那么 A∩BA\cap B 以及 A∖BA\setminus B 也应该在 F\mathcal F 中。我们先把这些基本性质验证一下。以下均在同一个概率空间 (Ω,F,P)(\Omega,\mathcal F,\mathbb P) 中讨论,A,B,A1,A2,…A,B,A_1,A_2,\ldots 都是事件。

命题 1.2 事件的交仍然是事件

对有限或可数多个事件 A1,A2,…A_1,A_2,\ldots,有

⋂n≥1An∈F. \bigcap_{n\ge1}A_n\in\mathcal F.

这里 ⋂n≥1An\bigcap_{n\ge1}A_n 是所有同时属于每个 AnA_n 的样本点组成的集合。从随机试验的角度说,就是这些事件全部发生。

证明

我们在上一节已经见过这个办法。使用 De Morgan 法则,有

⋂n≥1An=(⋃n≥1Anc)c. \bigcap_{n\ge1}A_n =\left(\bigcup_{n\ge1}A_n^c\right)^c.

右边只用了取补集和可数并这两种操作,因此属于 F\mathcal F。有限个事件的情形也一样。

命题 1.3 事件的差仍然是事件

A∖B∈FA\setminus B\in\mathcal F。

证明

由于 A∖B=A∩BcA\setminus B=A\cap B^c,结论由取补集的封闭性和刚才的命题得到。

命题 1.4 概率的单调性

如果 A⊆BA\subseteq B,则 P(A)≤P(B)\mathbb P(A)\le\mathbb P(B)。

证明

把 BB 拆成 AA 和剩下的 B∖AB\setminus A。这两部分不相交,所以根据可加性,

P(B)=P(A)+P(B∖A)≥P(A). \mathbb P(B)=\mathbb P(A)+\mathbb P(B\setminus A)\ge\mathbb P(A).

最后一步用了概率的非负性。

命题 1.5 两个事件的并

P(A∪B)=P(A)+P(B)−P(A∩B). \mathbb P(A\cup B)=\mathbb P(A)+\mathbb P(B)-\mathbb P(A\cap B).

这个公式从随机试验的视角也很好理解:我们把 AA 和 BB 发生的概率相加,同时发生的部分就算了两遍,所以需要减掉一份。

证明

我们同样把 A∪BA\cup B 拆成不相交的部分:A∖BA\setminus B、A∩BA\cap B 和 B∖AB\setminus A。因此

P(A∪B)=P(A∖B)+P(A∩B)+P(B∖A). \begin{aligned} \mathbb P(A\cup B) &=\mathbb P(A\setminus B)\\ &\quad+\mathbb P(A\cap B)\\ &\quad+\mathbb P(B\setminus A). \end{aligned}

另一方面,同样由可加性,

P(A)=P(A∖B)+P(A∩B),P(B)=P(B∖A)+P(A∩B). \begin{aligned} \mathbb P(A)&=\mathbb P(A\setminus B)+\mathbb P(A\cap B),\\ \mathbb P(B)&=\mathbb P(B\setminus A)+\mathbb P(A\cap B). \end{aligned}

将这两个等式相加,再减去一份 P(A∩B)\mathbb P(A\cap B),就得到结论。

Union bound:先求一个上界

有时候,交集很难算,但我们只想知道“至少有一件事情发生”的概率有多大。那就干脆不减这一份:多算了不要紧,反正我们要的是一个上界。这个简单的观察给出一个非常好用的工具。

命题 1.6 Union bound(并集上界)

对任意有限或可数多个事件 A1,A2,…A_1,A_2,\ldots,

P(⋃n≥1An)≤∑n≥1P(An). \mathbb P\left(\bigcup_{n\ge1}A_n\right) \le\sum_{n\ge1}\mathbb P(A_n).

这里不要求事件独立。

证明

有限个事件时,可以反复使用刚才两个事件的公式。对于可数多个事件,我们直接做一次整理:第一个事件照收;轮到第二个事件,只收之前没收过的部分;以后也这样继续。用符号写出来,就是令 D1=A1D_1=A_1,并对 n≥2n\ge2 定义

Dn=An∖⋃k<nAk. D_n=A_n\setminus\bigcup_{k<n}A_k.

每个样本点只在它第一次出现时被收进来,既没有漏掉,也没有重复。也就是说,这些 DnD_n 两两不交,而它们的并仍然是原来的 ⋃nAn\bigcup_n A_n。再注意 Dn⊆AnD_n\subseteq A_n,使用可数可加性和单调性就得到

P(⋃nAn)=∑nP(Dn)≤∑nP(An). \mathbb P\left(\bigcup_nA_n\right)=\sum_n\mathbb P(D_n)\le\sum_n\mathbb P(A_n).

这个不等式也叫 Boole 不等式。它在概率分析中有很广泛的应用:不管事件之间有什么关系,只要能算出每个事件的概率,就有了它们至少发生一个的概率上界。

例 1.3 (100次投掷中,会出现连续10次正面吗?) 我们独立地扔100次公平硬币,出现连续10次正面的概率有多大?如果根据定义直接去数所有符合要求的结果不是一件简单的事情,因为这些连续的正面可能出现在不同位置,还可能重叠。比如连续11次正面,就包含了两段连续10次正面。但我们使用 union bound,就可以很容易的得到这个概率的一个上界。

令 AiA_i 表示“第 ii 次到第 i+9i+9 次投掷都是正面”这个事件。起点 ii 可以从1取到91。对每个固定的起点,这10次投掷的 2102^{10} 种正反面组合等可能,其中只有一种全是正面,所以

P(Ai)=1210. \mathbb P(A_i)=\frac1{2^{10}}.

用 CC 表示事件“出现连续10次正面”,那么,它发生就等价于存在某个 AiA_i 发生。因此,使用 union bound,有

P(C)=P(⋃i=191Ai)≤∑i=191P(Ai)=911024<9%. \mathbb P(C)=\mathbb P\left(\bigcup_{i=1}^{91}A_i\right) \le\sum_{i=1}^{91}\mathbb P(A_i)=\frac{91}{1024}<9\%.

于是,至少有91%的概率,这100次投掷中不会出现连续10次正面。 注意,虽然每次投掷相互独立,但这些 AiA_i 会涉及相同的投掷,我们不能把它们也当成相互独立的事件。Union bound 不要求它们独立。我们的这个估计里可能把同一种结果算了好几遍,不过,多算只会让答案变大,因此得到的仍然是一个合法的上界。

概率与单调极限

接着我们来讨论集合序列的极限。这里先只考虑单调的集合序列;更一般的上极限和下极限,我们以后再定义。

对于非降的序列 A1⊆A2⊆⋯A_1\subseteq A_2\subseteq\cdots,定义

lim⁡n→∞An≔⋃n≥1An, \lim_{n\to\infty}A_n\coloneqq\bigcup_{n\ge1}A_n,

也记作 An↑AA_n\uparrow A,其中 A=⋃nAnA=\bigcup_n A_n。类似地,对于非增的序列 A1⊇A2⊇⋯A_1\supseteq A_2\supseteq\cdots,定义

lim⁡n→∞An≔⋂n≥1An, \lim_{n\to\infty}A_n\coloneqq\bigcap_{n\ge1}A_n,

也记作 An↓AA_n\downarrow A,其中 A=⋂nAnA=\bigcap_n A_n。

这两个定义也可以从随机试验的视角去理解。比如连续扔硬币,令 AnA_n 表示“前 nn 次出现过正面”,那么 AnA_n 随 nn 增大,而 ⋃nAn\bigcup_n A_n 表示“总有某一次会出现正面”。反过来,令 BnB_n 表示“前 nn 次全是反面”,那么 BnB_n 随 nn 减小,而 ⋂nBn\bigcap_n B_n 表示“永远没有出现正面”。这里先用这两个事件帮助理解;无限次投掷的概率空间怎样严格构造,我们以后会讨论。

我们当然希望能先算前 nn 次的概率,再让 nn 越来越大。接下来的命题就告诉我们,概率测度作为一个定义在事件上的函数,是“连续”的:对于单调事件序列,它可以和求极限交换。

命题 1.7 概率测度的连续性

若 An↑AA_n\uparrow A 或 An↓AA_n\downarrow A,则

P(A)=lim⁡n→∞P(An). \mathbb P(A)=\lim_{n\to\infty}\mathbb P(A_n).

证明

我们先证明非降的情形。还是把事件拆成不相交的部分:第一步拿出 A1A_1,以后每一步只拿新增加的部分。令 D1=A1D_1=A_1,对 n≥2n\ge2 令 Dn=An∖An−1D_n=A_n\setminus A_{n-1}。这些增量互不相交,而且

A=⨆n≥1Dn,AN=⨆n=1NDn. A=\bigsqcup_{n\ge1}D_n,\qquad A_N=\bigsqcup_{n=1}^ND_n.

由可数可加性和无穷级数的定义,

P(A)=∑n≥1P(Dn)=lim⁡N→∞∑n=1NP(Dn)=lim⁡N→∞P(AN). \mathbb P(A)=\sum_{n\ge1}\mathbb P(D_n) =\lim_{N\to\infty}\sum_{n=1}^N\mathbb P(D_n) =\lim_{N\to\infty}\mathbb P(A_N).

对于非增的情形,取补集以后有 Anc↑AcA_n^c\uparrow A^c。把刚才的结论用在补集上,就有

P(A)=1−P(Ac)=1−lim⁡n→∞P(Anc)=lim⁡n→∞P(An). \mathbb P(A)=1-\mathbb P(A^c) =1-\lim_{n\to\infty}\mathbb P(A_n^c) =\lim_{n\to\infty}\mathbb P(A_n).

1.4 为什么 F\mathcal F 不能总取 2Ω2^\Omega?

我们一开始说了,在 Ω\Omega 是不可数的时候,如果选 F=2Ω\mathcal F=2^\Omega,也许没有办法定义出合适的概率测度。我们这儿给出一个证明。我们取 Ω=[0,1)\Omega=[0,1),F=2Ω\mathcal F=2^\Omega,并且试图在上面定义一个均匀分布 P\mathbb P。那么 [0,1)[0,1) 上的均匀分布应该给每一个集合 E⊆ΩE\subseteq\Omega 一个“长度”,而对于这个长度,我们有一些最基本的期待:首先是对于区间 (a,b)⊆[0,1)(a,b)\subseteq[0,1),这个长度应该就是 b−ab-a。另外就是所谓的“平移不变性”,也就是说如果我们把某个集合 EE 整体平移一个距离 rr,那么它的长度应该是不变的,即 P(E)=P(E+r)\mathbb P(E)=\mathbb P(E+r)。这里 E+rE+r 是把 EE 平移了 rr 之后,再绕回 [0,1)[0,1) 的集合,即

E+r={(x+r) mod 1:x∈E}. E+r=\{(x+r)\bmod 1:x\in E\}.

其中记号 t mod 1t\bmod 1 的意思是如果 tt 不在 [0,1)[0,1) 内的话,就把它加上或者减去整数,使得其属于 [0,1)[0,1)。

我们首先在 Ω\Omega 上定义一个等价关系:x∼yx\sim y 当且仅当 x−y∈Qx-y\in\mathbb Q,即两者之差是有理数。那么,根据等价关系的基本性质,这个等价关系诱导出的等价类构成了 Ω\Omega 的一个分划,即 Ω=⋃i∈IPi\Omega=\bigcup_{i\in I}P_i,满足对于 i≠ji\ne j,Pi∩Pj=∅P_i\cap P_j=\emptyset,并且任意 x,y∈Pix,y\in P_i 都有 x∼yx\sim y。

我们现在从每一个 PiP_i 中选出一个元素 sis_i 来,把它们放在一起,构成集合 NN,即 N={si:i∈I}N=\{s_i:i\in I\}。这一步需要选择公理保证。对于每一个 r∈Q∩[0,1)r\in\mathbb Q\cap[0,1),我们考虑集合

Nr≔N+r={(x+r) mod 1:x∈N}. N_r\coloneqq N+r=\{(x+r)\bmod 1:x\in N\}.

我们首先证明,这些 NrN_r 构成了 [0,1)[0,1) 的一个分划。

首先,任意一个 x∈[0,1)x\in[0,1) 一定属于某个 NrN_r。实际上,假设 x∈Pix\in P_i,那么 x−si∈Qx-s_i\in\mathbb Q。取

r=(x−si) mod 1, r=(x-s_i)\bmod 1,

就有 r∈Q∩[0,1)r\in\mathbb Q\cap[0,1),并且 (si+r) mod 1=x(s_i+r)\bmod 1=x,因此 x∈Nrx\in N_r。

另一方面,我们要说明,不同的 NrN_r 不会相交。如果 x∈Nr1∩Nr2x\in N_{r_1}\cap N_{r_2},那么可以找到 s,s′∈Ns,s'\in N,使得

x=(s+r1) mod 1=(s′+r2) mod 1. x=(s+r_1)\bmod 1=(s'+r_2)\bmod 1.

这说明 s+r1s+r_1 与 s′+r2s'+r_2 相差一个整数。因此,s−s′s-s' 是有理数,即 s∼s′s\sim s'。但我们从每一个等价类里只选了一个代表元,所以必有 s=s′s=s'。于是 r1−r2r_1-r_2 是整数;由于 r1,r2r_1,r_2 都在 [0,1)[0,1) 中,只能有 r1=r2r_1=r_2。这就证明了,当 r1≠r2r_1\ne r_2 时,Nr1N_{r_1} 与 Nr2N_{r_2} 不相交。

知道了这些 NrN_r 是 Ω\Omega 的一个分划之后,我们的公理就保证了,一定有

P(Ω)=∑r∈Q∩[0,1)P(Nr). \mathbb P(\Omega) =\sum_{r\in\mathbb Q\cap[0,1)}\mathbb P(N_r).

这里用到了两件事情:因为我们假设 F=2Ω\mathcal F=2^\Omega,所以每个 NrN_r 都是事件;而 Q∩[0,1)\mathbb Q\cap[0,1) 是可数集,所以可以使用可数可加性。

我们知道上式的左手边等于1,而且由于平移不变性,每一个 P(Nr)\mathbb P(N_r) 都是相同的,并且都等于 P(N)\mathbb P(N)。因此,我们有可数无穷个 P(N)\mathbb P(N) 相加等于1。但这显然是不可能的:如果 P(N)=0\mathbb P(N)=0,则右边等于0;如果 P(N)>0\mathbb P(N)>0,则右边为无穷大。

这个证明告诉我们,F\mathcal F 里面的集合太多了,以至于我们没有办法给每个集合一个满足这些要求的长度。这里不能定义的是我们所希望的、平移不变的均匀概率测度。

所以我们应该如何设定 F\mathcal F,从而定义出 [0,1)[0,1) 上的均匀分布呢?我们刚才说了,直观上对于区间 (a,b)⊆[0,1)(a,b)\subseteq[0,1),我们一定要有 P((a,b))=b−a\mathbb P((a,b))=b-a。因此,我们要把所有的区间都放到 F\mathcal F 里面去。我们考虑能省则省的原则,认为这就够了。由于我们要求 F\mathcal F 一定要是一个 σ\sigma-代数,我们可以取 F\mathcal F 为包含所有区间的“最小”的那个 σ\sigma-代数,这个被称为 Borel σ\sigma-代数。我们接着定义这个最小的概念,并说明它总是存在的。

首先我们说明一下,σ\sigma-代数是对求交封闭的。固定样本空间 Ω\Omega。假设对于非空的、可能不可数的指标集 II,每一个 Fα⊆2Ω\mathcal F_\alpha\subseteq2^\Omega 都是 σ\sigma-代数,则

F≔⋂α∈IFα \mathcal F\coloneqq\bigcap_{\alpha\in I}\mathcal F_\alpha

也是 σ\sigma-代数。这件事情的证明非常简单,按照 σ\sigma-代数的定义逐条验证即可。值得说明的是,如果把交集换成并集,就不一定对了。

设 G⊆2Ω\mathcal G\subseteq2^\Omega 是 Ω\Omega 的一些子集组成的集合族,不一定是 σ\sigma-代数。我们用 σ(G)\sigma(\mathcal G) 表示包含 G\mathcal G 的最小的 σ\sigma-代数:

对于任何 G\mathcal G,σ(G)\sigma(\mathcal G) 总是存在的。这是由于首先 2Ω2^\Omega 本身就是包含 G\mathcal G 的一个 σ\sigma-代数。因此,我们可以取 σ(G)\sigma(\mathcal G) 为所有包含 G\mathcal G 的 σ\sigma-代数的交。它一定是存在的,而且根据交的定义,也一定是最小的。

有了合适的事件族,在它上面构造均匀概率测度就是接下来的任务。这件事情我们在后面讨论一般概率空间时完成。

1.5 条件概率

前面我们把随机试验写成了概率空间,也讨论了事件之间的集合关系。接下来介绍的概念,同样可以写成集合上的公式,但它们背后有很丰富的概率含义。我们要问的是:知道了一件事以后,原来的概率应该怎样改变?

我们仍然考虑两枚公平、独立的骰子。注意,这里用的是例1.1中的公平模型。设 AA 表示“第一枚骰子是6”,BB 表示“两个点数的和是偶数”。在已知 BB 的情况下,AA 发生的概率是多少?

和是偶数,说明两个点数同为奇数或者同为偶数,所以 BB 中有18个等可能的结果。其中第一枚为6的结果是 (6,2),(6,4),(6,6)(6,2),(6,4),(6,6),一共有3个。因此,所求概率应该是 3/18=1/63/18=1/6。

我们把这个计算写成概率的形式,就是

P(A∩B)P(B)=3/3618/36=16. \frac{\mathbb P(A\cap B)}{\mathbb P(B)} =\frac{3/36}{18/36}=\frac16.

这里的做法很自然:既然知道 BB 发生了,我们只保留 BB 中的结果,再把这些结果的总概率重新归一化成1。如果各个样本点并不等可能,就把它们原来的概率除以 P(B)\mathbb P(B),而不是重新给它们相同的概率。

定义 1.8 事件的条件概率

在概率空间 (Ω,F,P)(\Omega,\mathcal F,\mathbb P) 中,若 A,B∈FA,B\in\mathcal F 且 P(B)>0\mathbb P(B)>0,定义

P(A∣B)=P(A∩B)P(B). \mathbb P(A\mid B) =\frac{\mathbb P(A\cap B)}{\mathbb P(B)}.

它表示在已知事件 BB 发生的情况下,事件 AA 发生的概率。

固定 BB 以后,PB(A)≔P(A∣B)\mathbb P_B(A)\coloneqq\mathbb P(A\mid B) 本身也是 F\mathcal F 上的一个概率测度。也就是说,条件化给我们的是一套新的概率。

证明:条件概率仍然满足概率公理

非负性直接来自定义,而且 PB(Ω)=1\mathbb P_B(\Omega)=1。如果 A1,A2,…A_1,A_2,\ldots 两两不交,那么 A1∩B,A2∩B,…A_1\cap B,A_2\cap B,\ldots 也两两不交。因此

PB(⋃nAn)=∑nP(An∩B)P(B)=∑nPB(An). \mathbb P_B\left(\bigcup_n A_n\right) =\frac{\sum_n\mathbb P(A_n\cap B)}{\mathbb P(B)} =\sum_n\mathbb P_B(A_n).

所以新的概率满足可数可加性。也可以把它看成定义在 BB 上的概率测度,此时事件族是 {A∩B:A∈F}\{A\cap B:A\in\mathcal F\}。

条件化以后,概率未必保持原来的值。如果已知的是“两个点数的和至少为10”,留下来的只有 (4,6),(5,5),(5,6),(6,4),(6,5),(6,6)(4,6),(5,5),(5,6),(6,4),(6,5),(6,6) 六个结果,其中3个满足第一枚为6,条件概率就变成了 1/21/2。下面可以直接改变条件,看看分子、分母各自发生了什么。

两枚公平独立骰子的精确枚举。 已知点数和至少为10,剩下6个结果,其中3个的第一枚为6,条件概率是1/2。已知点数和为偶数,剩下18个结果,其中3个的第一枚为6,条件概率是1/6。

启用 JavaScript 后,可以切换条件,也可以直接选择保留的样本点。

在定义中,P(B)>0\mathbb P(B)>0 这个条件不能省。如果分母为零,上面的比值没有定义,不能把 0/00/0 当成0。以后我们要讨论连续随机变量的条件分布时,还会碰到这个问题。

同时发生与链式法则

注意到上式是条件概率的定义,我们可以把它改写成

P(A∩B)=P(B)P(A∣B). \mathbb P(A\cap B)=\mathbb P(B)\mathbb P(A\mid B).

这个形式可以更方便地解释成:“事件 AA 和 BB 同时发生的概率,等于 BB 发生的概率,乘上在已知 BB 发生时 AA 发生的概率。”

对于 nn 个事件,我们不停地使用这个等式。令 H0=ΩH_0=\Omega,并令 Hk=⋂i=1kAiH_k=\bigcap_{i=1}^k A_i。只要 P(Hk)>0\mathbb P(H_k)>0 对 k<nk<n 成立,就有

P(Hn)=P(Hn−1)P(An∣Hn−1)=∏k=1nP(Ak∣Hk−1). \mathbb P(H_n)=\mathbb P(H_{n-1})\mathbb P(A_n\mid H_{n-1}) =\prod_{k=1}^n\mathbb P(A_k\mid H_{k-1}).

这就是条件概率的链式法则。如果我们想计算 nn 个事件同时发生的概率,可以先算第一个事件的概率,再乘上已知第一个发生时第二个发生的概率,再乘上已知前两个都发生时第三个发生的概率,如此继续。

这里没有要求事件独立。如果某个前缀 HkH_k 已经有概率0,那么 P(Hn)=0\mathbb P(H_n)=0,直接结束计算即可,不必再写后面没有定义的条件概率。

我们可以通过一些简单的例子,看看怎样把题目中的自然语言对应到概率空间中的事件。

例 1.4 (两个孩子) 假设我有正好两个孩子,其中至少一个是女孩,那么两个都是女孩的概率是多大?

在计算一个概率问题的时候,总是要先对概率空间进行合适的建模。这个问题的样本空间可以取为

Ω={FF,FM,MF,MM}, \Omega=\{FF,FM,MF,MM\},

其中 F,MF,M 分别表示女孩、男孩,按两个孩子的出生顺序记录。取 F=2Ω\mathcal F=2^\Omega,P\mathbb P 为均匀分布,表示这四种结果等可能。

题目告诉我们“至少一个是女孩”,对应事件

B={FF,FM,MF}. B=\{FF,FM,MF\}.

我们想知道“两个都是女孩”的概率,对应事件

A={FF}. A=\{FF\}.

所以,题目所问的就是条件概率

P(A∣B)=P(A∩B)P(B)=1/43/4=13. \mathbb P(A\mid B)=\frac{\mathbb P(A\cap B)}{\mathbb P(B)} =\frac{1/4}{3/4}=\frac13.

例 1.5 (金币抽屉) 假设面前有三个抽屉,每个抽屉里有两枚硬币,分别是“金、金”“金、银”“银、银”。现在均匀随机选一个抽屉,再均匀随机选其中一个位置。已知选出的是金币,同一抽屉里另一个位置也是金币的概率有多大?

在计算一个概率问题的时候,总是要先对概率空间进行合适的建模。这里可以取

Ω={1,2,3}×{1,2},F=2Ω, \begin{gathered} \Omega=\{1,2,3\}\times\{1,2\},\\ \mathcal F=2^\Omega, \end{gathered}

六个样本点等可能。(i,j)(i,j) 表示从第 ii 个抽屉取出第 jj 个位置的硬币,位置顺序按照题干中的顺序。

令 BB 表示“取出的是金币”,AA 表示“另一个位置也是金币”。那么

B={(1,1),(1,2),(2,1)},A={(1,1),(1,2),(2,2)}. \begin{aligned} B&=\{(1,1),(1,2),(2,1)\},\\ A&=\{(1,1),(1,2),(2,2)\}. \end{aligned}

注意 (2,2)(2,2) 也属于 AA:取出银币时,另一个位置恰好是金币。但它不属于 BB,所以不会进入 A∩BA\cap B。于是

P(A∣B)=2/63/6=23. \mathbb P(A\mid B) =\frac{2/6}{3/6}=\frac23.

1.6 事件的独立性

对于两枚公平独立骰子,如果已知第二枚为4,第一枚为6的概率仍然是 1/61/6。我们把这两个事件记作 AA 和 BB,就有 P(A∣B)=P(A)\mathbb P(A\mid B)=\mathbb P(A)。

独立性描述的就是这种情形。我认为,这是一个非常具有概率风味的概念。尽管在有限等可能空间中,我们可以把所有计算都翻译成组合计数,但“知道一件事没有改变另一件事的概率”这个直观,用计数的语言表达就不那么方便了。

为了把概率为零的事件也包括进来,我们用不需要除法的等式定义独立性。

定义 1.9 事件的独立性

事件 A,BA,B 独立,如果

P(A∩B)=P(A)P(B). \mathbb P(A\cap B)=\mathbb P(A)\mathbb P(B).

事件 A1,…,AnA_1,\ldots,A_n 相互独立,如果对于每个非空 I⊆{1,…,n}I\subseteq\{1,\ldots,n\},都有

P(⋂i∈IAi)=∏i∈IP(Ai). \mathbb P\left(\bigcap_{i\in I}A_i\right) =\prod_{i\in I}\mathbb P(A_i).

如果只要求任意两个不同的事件独立,则称它们两两独立。对于任意指标集 JJ,事件族 {Aj}j∈J\{A_j\}_{j\in J} 相互独立,是指它的每个有限子族都相互独立。

当 P(B)>0\mathbb P(B)>0 时,第一个等式等价于 P(A∣B)=P(A)\mathbb P(A\mid B)=\mathbb P(A)。当 P(A)>0\mathbb P(A)>0 时,也等价于 P(B∣A)=P(B)\mathbb P(B\mid A)=\mathbb P(B)。因此,独立性是对称的。

我们在自然语言中,经常使用“互不影响”等类似表达来描述独立性。这是独立性的直观来源,但在做数学证明时必须回到定义。两件事有没有因果关系,与模型中两个事件是否独立,不是同一个问题。

另一个容易混淆的概念是互斥。如果 A,BA,B 不可能同时发生,而且各自概率都大于0,那么它们恰好不独立:P(A∩B)=0\mathbb P(A\cap B)=0,而 P(A)P(B)>0\mathbb P(A)\mathbb P(B)>0。知道其中一件发生,已经告诉我们另一件没有发生。

定义里的子集为什么不能少检查?

相互独立的定义看起来非常强:它要求对每一个非空指标子集都检查等式。下面两个例子说明,不能只检查全部事件,也不能只检查两两。

例 1.6 (只检查所有事件的交不够) 取一个概率严格介于0与1之间的事件 AA,令 A1=A2=AA_1=A_2=A,A3=∅A_3=\varnothing。那么

P(A1∩A2∩A3)=0,P(A1)P(A2)P(A3)=0. \begin{aligned} \mathbb P(A_1\cap A_2\cap A_3)&=0,\\ \mathbb P(A_1)\mathbb P(A_2)\mathbb P(A_3)&=0. \end{aligned}

三个事件一起检查,等式确实成立。但只看前两个,就有

P(A1∩A2)=P(A)≠P(A)2. \mathbb P(A_1\cap A_2)=\mathbb P(A) \ne\mathbb P(A)^2.

空事件让三个事件的等式自动成立,却没有告诉我们前两个事件之间的关系。

例 1.7 (两两独立也不够) 独立地扔两次公平硬币,四个结果 HH,HT,TH,TTHH,HT,TH,TT 等可能。考虑三个事件:

A={HH,HT},B={HH,TH},C={HT,TH}. \begin{aligned} A&=\{HH,HT\},\\ B&=\{HH,TH\},\\ C&=\{HT,TH\}. \end{aligned}

AA 是“第一次正面”,BB 是“第二次正面”,CC 是“两次结果不同”。它们的概率都为 1/21/2,而任意两个的交恰好包含一个样本点,概率为 1/41/4。所以它们两两独立。

可是,三件事不可能同时发生:前两次如果都是正面,结果就不可能不同。因此

P(A∩B∩C)=0,P(A)P(B)P(C)=18. \begin{aligned} \mathbb P(A\cap B\cap C)&=0,\\ \mathbb P(A)\mathbb P(B)\mathbb P(C)&=\frac18. \end{aligned}

每一对单独看都独立,三件事放在一起却出现了关系。

我们还可以把相互独立的定义写成:对每一种取法 Di=AiD_i=A_i 或 Di=ΩD_i=\Omega,都有 P(⋂iDi)=∏iP(Di)\mathbb P(\bigcap_iD_i)=\prod_i\mathbb P(D_i)。这正是用 Ω\Omega 表示“这一项不检查”。

两两独立在计算机科学里很有用。生成随机位是需要资源的,而有些分析只需要较弱的独立性。等学到方差以后,我们会看到两两独立已经能完成一些重要计算;本章选读也会给出一种具体构造。

条件独立

定义 1.10 给定事件下的条件独立

若 P(C)>0\mathbb P(C)>0,我们说事件 A,BA,B 在给定 CC 下独立,如果

P(A∩B∣C)=P(A∣C)P(B∣C). \mathbb P(A\cap B\mid C)=\mathbb P(A\mid C)\mathbb P(B\mid C).

这就是在新的概率测度 PC\mathbb P_C 下使用独立性的定义。条件独立与原来的独立性有什么关系?下面两个例子说明,它们不能互相推出。

例 1.8 (原本独立,条件化以后却不独立) 回到@exm-pairwise:AA 为第一次正面,BB 为第二次正面,CC 为两次结果不同。A,BA,B 原本独立,但已知 CC 后,只剩 HT,THHT,TH 两个等可能结果。因此

P(A∣C)=P(B∣C)=12,P(A∩B∣C)=0. \mathbb P(A\mid C)=\mathbb P(B\mid C)=\frac12, \qquad \mathbb P(A\cap B\mid C)=0.

所以 A,BA,B 在给定 CC 下不独立。知道第一次正面以后,第二次就只能是反面了。

例 1.9 (给定硬币后独立,忘掉硬币以后却不独立) 先等概率选一枚硬币:一种正面概率为 1/41/4,另一种为 3/43/4。选好后,用同一枚硬币独立地扔两次。令 L,HL,H 分别表示选中这两种硬币,A,BA,B 分别表示第一次、第二次正面。

给定 LL 或 HH 时,两次投掷都独立。但如果不知道选中了哪枚硬币,可以按选中的硬币分成两种情况,把各类的概率贡献相加:

P(A)=P(B)=12,P(A∩B)=12(14)2+12(34)2=516≠14. \mathbb P(A)=\mathbb P(B)=\frac12,\qquad \mathbb P(A\cap B)=\frac12\left(\frac14\right)^2 +\frac12\left(\frac34\right)^2=\frac5{16}\ne\frac14.

所以不条件化时,A,BA,B 不独立。第一次正面提供了关于所选硬币的信息;实际算一下,

P(H∣A)=34,P(B∣A)=58. \mathbb P(H\mid A)=\frac34,\qquad \mathbb P(B\mid A)=\frac58.

第一次正面让我们更相信选中了正面概率较大的硬币,因此也提高了第二次正面的概率。

这两个例子说明,独立性总是相对于一套确定的概率而言的。增加或忘掉信息,都可能改变这种关系。以后讲条件期望和统计预测时,我们还会回到这里。

1.7 全概率公式与贝叶斯公式

我们接下来使用条件概率,来把一些看起来不好算的概率写成会算的量。

设事件 B1,B2,…B_1,B_2,\ldots 构成 Ω\Omega 的一个有限或可数分划,也就是它们两两不交,并且并起来是整个 Ω\Omega。对任意事件 AA,各个 A∩BiA\cap B_i 也就把 AA 分成了互不重叠的部分。

同一个矩形样本空间被分成B1到B4四块,事件A横跨四块,每一块中的交集A∩Bi被标出。
图 1.1: 分划 B1,B2,B3,B4B_1,B_2,B_3,B_4 覆盖样本空间 Ω\Omega;事件 AA 被拆成互不重叠的 A∩BiA\cap B_i。

根据可数可加性,

P(A)=P(⋃i(A∩Bi))=∑iP(A∩Bi). \mathbb P(A)=\mathbb P\left(\bigcup_i(A\cap B_i)\right) =\sum_i\mathbb P(A\cap B_i).

直观上来说,我们是在对于事件 AA 是否发生按照 BiB_i 作分情况讨论。它又被叫做全概率公式。

命题 1.11 全概率公式

设 {Bi}\{B_i\} 是 Ω\Omega 的有限或可数事件分划,记 I+={i:P(Bi)>0}I_+=\{i:\mathbb P(B_i)>0\}。则

P(A)=∑i∈I+P(Bi)P(A∣Bi). \mathbb P(A)= \sum_{i\in I_+}\mathbb P(B_i)\mathbb P(A\mid B_i).

换句话说,想算 AA 的概率,可以先按照 BiB_i 分类,再把每一类的贡献全部加起来。每一类的贡献,是这一类本来出现的概率,乘上在这一类中 AA 发生的概率。

命题 1.12 Bayes 公式

在命题1.11的条件下,若 P(A)>0\mathbb P(A)>0,则对 j∈I+j\in I_+,

P(Bj∣A)=P(Bj)P(A∣Bj)P(A),P(A)=∑i∈I+P(Bi)P(A∣Bi). \begin{gathered} \mathbb P(B_j\mid A) =\frac{\mathbb P(B_j)\mathbb P(A\mid B_j)} {\mathbb P(A)},\\ \mathbb P(A) =\sum_{i\in I_+}\mathbb P(B_i)\mathbb P(A\mid B_i). \end{gathered}

若 P(Bj)=0\mathbb P(B_j)=0,则 P(Bj∣A)=0\mathbb P(B_j\mid A)=0,直接使用条件概率的定义即可。

证明

按定义,P(Bj∣A)=P(A∩Bj)/P(A)\mathbb P(B_j\mid A)=\mathbb P(A\cap B_j)/\mathbb P(A)。分子用乘法公式,分母用全概率公式,就得到结论。

在统计中,我们把 P(Bj)\mathbb P(B_j) 称为看到 AA 之前的先验概率,把 P(Bj∣A)\mathbb P(B_j\mid A) 称为看到 AA 之后的后验概率。

例 1.10 (报警了,真的坏了吗?) 我们用一个假想的数据包检测问题来算一遍。收到的数据包中,有 1%1\% 是损坏的。检测器碰到损坏的包,有 90%90\% 的概率报警;碰到完好的包,也有 5%5\% 的概率误报警。

现在,它报警了。这个包真的损坏的概率有多大?

令 DD 表示“包损坏”,AA 表示“检测器报警”。题目给出的是

P(D)=0.01,P(A∣D)=0.9,P(A∣Dc)=0.05. \mathbb P(D)=0.01,\qquad \mathbb P(A\mid D)=0.9,\qquad \mathbb P(A\mid D^c)=0.05.

我们要算的是 P(D∣A)\mathbb P(D\mid A)。注意,题目告诉我们“坏包有多大概率报警”,我们问的却是“报警的包有多大概率是坏的”,不能把这两个方向直接互换。

我们希望把条件概率定义式中的分子、分母都写成题目告诉我们的量。分子可以直接使用乘法公式,分母需要按坏包和好包分类:

P(D∩A)=0.01×0.9=0.009,P(A)=0.01×0.9+0.99×0.05=0.0585. \mathbb P(D\cap A)=0.01\times0.9=0.009,\qquad \mathbb P(A)=0.01\times0.9+0.99\times0.05=0.0585.

于是

P(D∣A)=0.0090.0585=213≈15.4%. \mathbb P(D\mid A)=\frac{0.009}{0.0585}=\frac2{13}\approx15.4\%.

如果这个偏小的概率让你觉得意外,可以把总体概率换成10,000份来比较:

来源 总体份数 其中报警的份数
损坏 100 90
完好 9,900 495
合计 10,000 585

这些份数是概率的比例表示,我们可以大概理解为真实概率的近似。我们算出来的概率偏小的原因在于,完好的包原本多得多,少量的误报警也可能超过真正的坏包报警。但是,报警仍然提供了信息:它把损坏概率从 1%1\% 提高到了约 15.4%15.4\%。但它没有把损坏变成几乎确定的事情。

1.8 Karger 的最小割算法

我们来看一个经典的算法问题,求图上的最小割。给定一个有 n≥2n\ge2 个顶点的连通无向图 G(V,E)G(V,E),我们说一个边集 C⊆EC\subseteq E 是一个割,当且仅当把 CC 从图中删掉之后,得到的图 G(V,E∖C)G(V,E\setminus C) 是不连通的。最小割问题即寻找图上最小的一个割。

八个顶点分为左右两个完全图,两条红色连接边组成大小为2的最小割。
图 1.2: 两条红边组成一个大小为2的最小割;删去它们后,左右两组顶点不再连通。

学过算法的同学都知道,我们可以用最大流的方法来寻找最小割:固定一个源 ss 并枚举所有可能的汇 tt,对每一个源-汇对 (s,t)(s,t) 求解最大流,其残量网络(residual network)给出了最小割。使用2022年的最大流算法,这种方法需要 nm1+o(1)nm^{1+o(1)} 的时间来寻找这个最小割,其中 n=∣V∣n=|V|,m=∣E∣m=|E|。我们来介绍一个随机算法,实现非常简单。

我们定义图上的所谓缩边(contraction) 的操作。给定边 e={u,v}∈Ee=\{u,v\}\in E ,我们缩掉 ee 的操作指的是把 uu 和 vv 合并成一个点,并且删掉之前所有 uu 与 vv 之间的边(它们俩与别的点相连的边依然保留,形成的平行边也要保留)。我们把缩完之后的图记作 G/eG/e。如下图所示,我们缩掉了边 {1,2}\{1,2\}。

左图是三角形,红边e连接顶点1和2,绿边和蓝边分别将它们连到3。右图中1、2合并为一个顶点,红边删除,绿边和蓝边保留为两条平行边。
图 1.3: 缩掉红边 e={1,2}e=\{1,2\}:顶点1和2合并,红边被删除;竹绿与石青两条边保留为连向顶点3的平行边。

Karger算法非常简单,从 GG 出发,每一次均匀随机选择一条边(平行边按重数计),把它缩掉。重复执行 n−2n-2 次之后,图中只剩两个点了,然后输出所有剩下的边。

while G contains more than two vertices do
    Choose an edge e uniformly at random
    Contract e in G
return  remaining edges

这个算法“有可能”成功的原因也很简单,由于我们关心的是“最小的”割,那么算法的每一步,选到割中的边的概率都不会太大。当然了,要谈论这个概率,我们需要有合适的概率空间。一个自然的样本空间可以是算法执行过程中所有(有序的)被选来缩掉的边的序列。我们可以在上面定义合适的概率测度。

我们设 CC 是一个固定的最小割,并且其大小是 kk。我们来计算算法最终输出 CC 的概率。很容易发现,算法最终输出 CC ,当且仅当算法执行 while 的循环中,每一次都没有选到 CC 中的边。因此,我们用 AiA_i 来表示上面代码里面第 ii 次执行完 while 循环之后,还没有删过任何一个 CC 中边的这个事件。为了分析 P(Ai)\mathbb P(A_i) ,我们对于每一个 i=1,2,…,n−2i=1,2,\dots,n-2,定义事件 BiB_i 为“第 ii 次 while 循环选择的不是 CC 中边”这一事件。那么显然有 Ai=⋂j=1iBjA_i=\bigcap_{j=1}^i B_j,并约定 A0=ΩA_0=\Omega。因此,由条件概率的链式法则, P(算法输出 C)=P(An−2)=∏i=1n−2P ⁣(Bi∣⋂j=1i−1Bj). \mathbb P(\text{算法输出 }C)=\mathbb P(A_{n-2}) =\prod_{i=1}^{n-2}\mathbb P\!\left(B_i\mid\bigcap_{j=1}^{i-1}B_j\right). 我们希望给上述概率一个下界,即每一轮均有比较大的概率不选到 CC 中的边。由于我们每一轮是均匀的选, 因此我们只需要证明,对于第 ii 轮,在已知 ⋂j=1i−1Bj\bigcap_{j=1}^{i-1} B_j,即前 i−1i-1 轮均没有选到 CC 中边的情况下,图中剩余的边足够多即可。一个最重要的观察是 > 此时,图中每一个顶点的度数均不少于 kk。

这件事情成立的原因是,如果有一个顶点的度数 <k<k,那么在当前的图中,这个顶点与其邻居相连的边,构成了该图中的一个割。同时,也不难发现,这个割也一定是原图 GG 中的一个割(因为收缩这种操作不会破坏它是割的性质)。但这就说明,我们找到了一个大小比 kk 更小的割,这与我们假设 CC 是最小的割矛盾。

有了这个观察,因为我们知道算法在第 i−1i-1 轮后,还剩余 n−i+1n-i+1 个顶点。所以第 ii 轮开始的时候,图中至少还有 k2⋅(n−i+1)\frac{k}{2}\cdot (n-i+1) 条边。于是,我们有 P ⁣(Bi∣⋂j=1i−1Bj)≥1−2kk(n−i+1)=n−i−1n−i+1. \mathbb P\!\left(B_i\mid\bigcap_{j=1}^{i-1}B_j\right) \ge1-\frac{2k}{k(n-i+1)}=\frac{n-i-1}{n-i+1}. 这说明, P(An−2)≥∏i=1n−2n−i−1n−i+1=2n(n−1). \mathbb P(A_{n-2})\ge\prod_{i=1}^{n-2}\frac{n-i-1}{n-i+1} =\frac{2}{n(n-1)}. 因此,我们的算法至少有 2n(n−1)\frac{2}{n(n-1)} 的概率能够输出最小割 CC。我们可以重复这个算法 N=50n(n−1)N=50n(n-1) 次,并且输出这 NN 次中找到最小的那个割。那么,这个割是最小割的概率至少有 1−(1−2n(n−1))N≥1−e−100. 1-\left(1-\frac{2}{n(n-1)}\right)^N\ge1-e^{-100}.

最后我们来计算一下算法的复杂性。我们要重复算法 N=O(n2)N=O(n^2) 次,每一次要进行 n−2n-2 次收缩操作。如果我们使用并查集来维护的话,一共需要 O~(n2m)\tilde O(n^2m) 的时间。这个时间是比前文提到的使用最大流的算法要慢的(都怪最大流算法发展的太快了,上一次讲的时候最大流还要 O~(nm)\tilde O(nm) 呢),但好处在于实现非常简单。事实上,Karger 算法可以进一步改进,使得只需要 O~(n2)\tilde O(n^2) 的时间即可。我们把这个改进留作选读(Karger–Stein 算法)。

参考与阅读

本章以张驰豪 Prob2025 第2讲“概率空间”与第3讲“事件的条件概率”为主要底稿。后半章沿用旧稿的条件化、两个孩子与金币抽屉、独立性反例、全概率及 Karger 分析路线。旧稿的无限放球问题将在后续选读中补充。概率空间构造和所引用工具的证明层次,以本课程后续章节安排为准。