DennyQi's Log

01 离散概率

The true logic of this world is in the calculus of probabilities. ——James Clerk Maxwell

我们平时在生活中经常使用“概率”、“机会”或“可能性”这样的词,通常我们是在做一种猜测或做一种预判。为什么我们要猜测呢?因为我们希望在不完全掌握所有信息时做出我们必须做出的决定。我们在生活中所使用的“概率”一词,指的通常是在大量重复某个观察时,用一个0到1之间的数来概括其出现的可能性。例如当我们重复了100000次抛硬币的实验,观察到有50000次实验中正面朝上,我们就说正面朝上的概率是1/21/2。我们只能对“可重复”的观察谈概率。概率是观察者所做出的“统计结果”,而不是事物本身的属性。概率有赖于我们的知识以及进行估计的能力。很有可能,当我们所掌握的知识发生变化后,对事物的概率的估计就会变得完全不同。

离散概率空间

“概率是大量观察以后用一个数来估计可能性”,这样的定义显然不是一种严格的数学定义。如果要想这样定义,必须先严格定义什么是“估计”,什么是“可能性”,什么是“大量观察”。所以,在“概率论”中,我们首先要从数学的观点来定义概率,然后再去看这样的定义满足什么性质,这样的性质是否与人们常识中所认识的概率相符。而这里说的“数学的观点”,就是基于集合论的语言来定义概念,描述性质。

本文所涉及的都是离散概率, 我们会在下一篇文章开始再讨论更复杂的概率。也就是说,我们不会讨论“在[0,1][0,1]实数区间里随机选一个线段”这样的情况,而只讨论“抛一个立方体骰子”“抛nn次硬币”这样的“有限”的情况。我们会看到,离散概率所涉及的数学本质上来说只是一些组合计数,并不会涉及高深的分析学理论。

让我们从掷骰子的例子出发,来引入描述概率的数学语言。当我们反复完成“掷骰子”的动作时,由于每次动作都会有细微的不同,得到的点数可能各不相同。重复许多次这个动作以后,我们发现点数1,2,3,4,5,61,2,3,4,5,6出现的次数大约都各占总数的1/61/6。于是我们说“掷出66”的概率是1/61/6。我们还可以进一步推理出,“掷出的点数大于等于33”的概率是1/21/2。在这里,我们涉及到了三个关键点:骰子产生的结果是1,2,3,4,5,61,2,3,4,5,6中的恰好一个数字;诸如“掷出66”或“掷出的点数大于等于33”这样的表达都可以有一个概率与其对应;概率是一个0011之间的实数。

以上三点就构成了描述概率的三个基本组件:

  • 我们把掷骰子可能产生的结果的集合称为样本集(sample set),记为Ω\Omega,在这里Ω={1,2,3,4,5,6}\Omega=\{1,2,3,4,5,6\}(在离散概率中,我们总是考虑有限的样本集);
  • “掷出66”或“掷出的点数大于等于33”这样的描述称为一个“事件(event)”,一个事件是样本集的一个子集,例如“掷出6”对应{6}\{6\},“掷出的点数大于等于33”对应{4,5,6}\{4,5,6\}。由于我们假定了Ω\Omega是有限集,那么我们可以定义事件集(set of event)为样本集的幂集,记为F=2Ω\mathcal{F}=2^\Omega。事件是事件集的元素;
  • 事件集中的每个事件对应[0,1][0,1]中一个实数。这就称为事件的概率,它是一个F[0,1]\mathcal{F}\to [0,1]的函数,记为PP。在掷骰子的例子中,由单个样本所构成的事件集的概率都为1/61/6,而多个元素的事件集的概率等于这些元素的单元集的概率之和,例如设A={4,5,6}FA=\{4,5,6\} \in \mathcal{F},有P(A)=1/2P(A)=1/2。全集是一个事件,它的概率应当为1;空集也是一个事件,它的概率应当为0;如果AA的概率为pp,那么AA的补集的概率应当为1p1-p

基于上述观察,我们下面严格定义“离散概率空间”的概念:

离散概率空间(discrete probability space)是一个三元组(Ω,F,P)(\Omega,\mathcal{F},P)。其中Ω\Omega是一个有限集合,称为样本集。F=2Ω\mathcal{F}=2^\Omega,称为事件集;P:F[0,1]P:\mathcal{F}\to [0,1]称为概率函数。概率函数要满足下面三个条件:

  • P()=0,P(Ω)=1P(\varnothing)=0,P(\Omega)=1
  • AF,P(A)+P(ΩA)=1\forall A\in \mathcal{F}, P(A)+P(\Omega \setminus A)=1
  • 对于两两无交的事件序列A1,A2,,AnA_1,A_2,\cdots,A_nP(i=1nAi)=i=1nP(Ai)P\left(\bigcup\limits_{i =1}^{n}A_i\right)=\sum\limits_{i=1}^{n}P(A_i)

Rmk. 事件是集合,因此我们可以用集合的符号来表示来表示事件的发生:例如ABA \cup B表示“事件AA或事件BB发生”,ABA \cap B表示“事件AA与事件BB同时发生”。我们还可以记A=ΩA\overline{A}=\Omega \setminus A,表示“事件AA不发生”

在离散概率中,Ω\Omega中的每一个元素自身构成的单元集是一个事件,称为“基本事件(basic event)”。概率函数的条件三意味着,只要确定每个基本事件的概率,原则上就可以求出任何事件的概率。

条件概率与独立事件

条件概率的定义

在掷骰子的例子中,我们之所以认为基本事件的概率是1/61/6,是因为在掷骰子之前我们没有任何理由倾向于某个特定的结果。这就好像,如果把你关在一个房间里,由你的朋友在隔壁房间掷骰子,接着你的朋友让你来猜骰子的结果,这时候的你因为不掌握任何特殊信息,所以只能随便猜一个结果,你猜对的概率就是1/61/6。可是,如果你的朋友在让你猜之前,透露给你说“骰子的结果是一个偶数哦~”,这时候你只会在2,4,6这三个选项里猜,所以你猜对的概率变成了1/31/3。如果你的朋友透露给你说“骰子的结果大于4”,那么你猜对的概率就能达到1/21/2

上面的例子说明,如果我们掌握了一些信息,那么就可以从样本集里排除一些样本,事件的概率就会变成这个“子概率空间”中的概率。同时,“掌握的信息”也可以用一个事件来描述。比如,朋友告诉你“骰子的结果是偶数”,这本身对应一个事件{2,4,6}\{2,4,6\}。所以,新的概率是把“已知某一事件发生”作为条件时的概率,我们把这样的概率称为“条件概率(conditional probability)”。它的计算方法应当是用“已知事件发生的概率”作为分母“两事件同时发生的概率”作为分子所得的分数:

对于概率空间(Ω,F,P)(\Omega,\mathcal{F},P)中的两个事件A,BFA,B \in\mathcal{F},定义AA事件在BB事件发生下的条件概率为

P(AB)=P(AB)P(B)P(A\mid B)=\dfrac{P(A \cap B)}{P(B)}

例如,“掷出66”在“掷出偶数”发生下的条件概率为P({6}{2,4,6})=P(\{6\}\mid \{2,4,6\})= P({6})P({2,4,6})=1/61/2=13\dfrac{P(\{6\})}{P(\{2,4,6\})}=\dfrac{1/6}{1/2}=\dfrac{1}{3}

独立事件的定义

考虑“连续抛两次硬币”的过程,为了描述这一过程的可能结果,可以这样建立样本空间:Ω={(x,y)x,y{0,1}}\Omega=\{(x,y)\mid x,y\in \{0,1\}\},每个样本是两次抛硬币结果的有序对,正面为1,反面为0。事件集是2Ω2^\Omega,每个基本事件的概率都是相等的,也就是1/41/4。对于“连续抛两次硬币”这一过程,我们有这样一个常识:“第一次抛出正面”和“第二次抛出正面”这两个事件应当是“毫无关系”的,并不会因为第一次抛出了正面而改变第二次抛出正面的概率。这一常识可以用条件概率来描述,如果对于事件A,BFA,B\in \mathcal{F},如果P(B)=P(BA)P(B)=P(B\mid A),并且P(A)=P(AB)P(A)=P(A\mid B),就说明A,BA,B这两个事件是“毫无关系”的。根据条件概率的定义,P(B)=P(BA)P(B)=P(B\mid A)P(A)=P(AB)P(A)=P(A\mid B)这两个式子是等价的,它们都等价于P(A)P(B)=P(AB)P(A)\cdot P(B)=P(A\cap B)

我们就把这一特性作为事件的独立性的定义:在概率空间(Ω,F,P)(\Omega,\mathcal{F},P)中,两个事件A,BFA,B \in\mathcal{F}是独立的(independent)当且仅当:

P(AB)=P(A)P(B)P(A \cap B)=P(A) \cdot P(B)

对于有限多个事件A1,,AnA_1,\cdots,A_n,定义它们“两两独立(pairwise independent)”当且仅当i,j[n]\forall i,j\in [n]P(AiAj)=P(Ai)P(Aj)P(A_i\cap A_j)=P(A_i)P(A_j),定义它们“互相独立(mutually independent)”当且仅当对于任何I[n]I\subseteq [n]P(iIAi)=iIP(Ai)P(\bigcap\limits_{i \in I}A_i) = \prod\limits_{i \in I}P(A_i)

Rmk. “互相独立”的要求比“两两独立”的要求更高。显然,互相独立一定意味着两两独立。下面我们来举一个两两独立但不互相独立的例子。还是考虑上面的“抛两次硬币”的例子。设事件A1A_1是“两次结果相同”,A2A_2是“第一次抛出正面”,A3A_3是“第二次抛出正面”。那么P(A1)=1/2P(A_1)=1/2P(A2)=1/2P(A_2)=1/2P(A3)=1/2P(A_3)=1/2P(A1A2A3)=P({(1,1)})=1/4P(A_1\cap A_2\cap A_3)=P(\{(1,1)\})=1/4 P(A1)P(A2)P(A3)\neq P(A_1)P(A_2)P(A_3),所以A1,A2,A3A_1,A_2,A_3不是互相独立的。但是P(A1A2)=1/4P(A_1\cap A_2)=1/4P(A1A3)=1/4P(A_1\cap A_3)=1/4P(A2A3)=1/4P(A_2\cap A_3)=1/4,因此A1,A2,A3A_1,A_2,A_3是互相独立的。

应当意识到,并不是对于所有的独立事件我们都能在脑海中建立起直观的印象。例如在掷一次骰子的例子中,“掷出1122”与“掷出113344”发生的概率分别为1/31/31/21/2,它们同时发生也即“掷出11”发生的概率恰好为1/61/6。所以根据定义,“掷出1122”与“掷出113344”这两件事是独立的。但是这个“独立”如何在直观上解释呢?其实我们并无法给出一个特别好的解释,这更像是某种数值上的巧合。在应用中,更多的是反过来——我们已经意识到某两个事件在直观上应当是独立的了(例如先后两次的抛硬币的过程),然后按照独立的定义去验证确实如此。

链式法则

我们可以把条件概率的等式变形为P(AB)=P(AB)P(B)P(A\cap B) = P(A\mid B) \cdot P(B)。于是我们能够得到一个求解事件的交集的概率的链式法则(chain rule):

P(A1An)=P(AnA1An1)P(A1An1)==P(AnA1An1)P(An1A1An2)P(A3A1A2)P(A2A1)P(A1)\begin{aligned} &P(A_1 \cap \cdots \cap A_n)\\ =&P(A_n\mid A_1 \cap \cdots \cap A_{n-1}) \cdot P(A_1 \cap \cdots \cap A_{n-1})\\ =&\cdots \\ =&P(A_n\mid A_1 \cap \cdots \cap A_{n-1})\cdot P(A_{n-1}\mid A_1 \cap \cdots \cap A_{n-2}) \cdots\\&P(A_3\mid A_1 \cap A_2)\cdot P(A_2 \mid A_1)\cdot P(A_1) \end{aligned}

全概率公式

对于A,BFA,B \in \mathcal{F},可以证明P(A)=P(AB)+P(AB)P(A)=P(A \cap B)+P(A \cap \overline{B}):因为BBB\overline B是互不相交的,因此ABA\cap BABˉA\cap \bar B也互不相交,那么根据概率函数的条件三有P(AB)+P(ABˉ)=P((AB)(ABˉ))=P(A)P(A\cap B)+P(A\cap \bar B)=P((A\cap B)\cup (A\cap \bar B))=P(A)

在上一段中,B,BB,\overline{B}构成了全集Ω\Omega的一个partition。我们可以把以上结论推广到nn个事件构成的partition上:如果Ω\Omega有partition B1,,BnB_1, \cdots ,B_n,那么AF\forall A\in \mathcal{F},有:

P(A)=i=1nP(ABi)P(A)=\sum\limits_{i=1}^{n}P(A \cap B_i)

这称为全概率公式(law of total probability)

随机变量

我们再来考虑“掷两个骰子”的例子。当我们问“两次掷骰子的点数之和是多少?”这个问题时,问题的答案不是一个确定的数字,而应该是一系列可能的数字。点数之和最小可能是22,如果两次都掷出了11,但这只有1/361/36的概率会发生。相比之下,点数之和是66的概率达到5/365/36,因为(1,5),(2,4),(3,3),(4,2),(5,1)(1,5),(2,4),(3,3),(4,2),(5,1)都会产生这一结果。所以,这个问题的答案应该是一个“分布”:1/361/36的概率答案为222/362/36的概率答案为333/363/36的概率答案为444/364/36的概率答案为555/365/36的概率答案为666/366/36的概率答案为775/365/36的概率答案为884/364/36的概率答案为993/363/36的概率答案为10102/362/36的概率答案为11111/361/36的概率答案为1212

随机变量的定义

为了更好的描述这个问题,我们可以建立一个从样本空间到实数的函数X:ΩRX:\Omega \to \R。在“点数之和”的例子里,我们可以令X((x,y))=x+yX((x,y))=x+y。例如,(2,5)(2,5)这个样本会被XX映射到实数77。基于一些历史的原因,这样的函数称为随机变量(random variables)。在离散概率中,任何ΩR\Omega \to \R的函数都可以作为一个随机变量。

对于随机变量X:ΩRX:\Omega \to \R,我们用符号“X=aX=a”来表示“随机变量XX的取值为aa”这一事件,也即集合{sΩX(s)=a}\{s\in \Omega\mid X(s)=a\},也即函数XXaa上的原像X1(a)X^{-1}(a)。对于离散概率空间,这一集合要么存在要么为空。更一般的,对于R\R的子集AA也可以定义事件“XIX \in I”,它对应集合X1(I)X^{-1}(I),也即{sΩX(s)I}\{s \in \Omega\mid X(s) \in I\}

我们特别地定义一个记号1[A]\mathbb{1}[A](其中AA是一个事件),它是一个随机变量,称为事件AA的indicator。它满足:1[A](ω)=1\mathbb1 [A](\omega)=1当且仅当ωA\omega \in A,否则1[A](ω)=0\mathbb{1}[A](\omega)=0。它用来“指示(indicate)”事件AA发生与否。

我们可以枚举基本事件来计算P(X=a)P(X=a)

P(X=a)=X(s)=a,sΩP(s)P(X=a)=\sum\limits_{X(s)=a,s\in\Omega}P(s)

对于离散概率,可以定义两个随机变量X,YX,Y的“和”:(X+Y)(ω)=X(ω)+Y(ω)(X+Y)(\omega)=X(\omega)+Y(\omega)。它依然是一个随机变量。同理,也可以定义随机变量的乘积、商等等。

随机变量的分布

对于随机变量,我们通常最关心的就是当aa取各个不同值得时候P(X=a)P(X=a)的大小,这称为随机变量的分布(distribution)。对于离散的随机变量,我们可以定义一个R[0,1]\R\to [0,1]的函数pp来描述分布,其中

p(a):=P(X=a)p(a):=P(X=a)

pp称为概率质量函数(probability mass function)。

因为样本空间是有限的,所以pp只会在有限个点上有值,其余地方值都为00。显然,有aRp(a)=1\sum\limits_{a\in \R}p(a)=1

随机变量的独立性

“随机变量等于某个值”是一个事件,我们可以把关于事件性质的描述方法迁移到随机变量上。

对于随机变量X,YX,Y,称XXYY是独立的,当且仅当对于任意的a,bRa,b\in \R成立P((X=a)(Y=b))=P(X=a)P(Y=b)P((X=a)\cap (Y=b))=P(X=a)\cdot P(Y=b),记为XYX \perp Y

如果有限多个随机变量两两之间是独立的,就称这列随机变量两两独立(pairwise independent)。

称有限多个随机变量X1,,XnX_1,\cdots,X_n是“互相独立(mutually independent)”的,当且仅当对于a1,,anR,I[n]\forall a_1,\cdots,a_n\in\R,\forall I\subseteq [n]P[iI(Xi=ai)]=P[\bigcap\limits_{i \in I}(X_i=a_i)] = iIP(Xi=ai)\prod\limits_{i \in I}P(X_i=a_i)

随机变量的期望

期望(expectation)是随机变量的一个重要特征,它用来描述随机变量的“平均值”。在离散概率空间中,定义:

E[X]:=aRaP(X=a)\mathbb{E}[X] :=\sum\limits_{a\in \R}a\cdot P(X=a)

它也可以按照基本事件来给出:

E[X]=ωΩX(ω)P(ω)\mathbb{E}[X]=\sum\limits_{\omega \in \Omega}X(\omega)P(\omega)

容易证明这二者是等价的。

关于期望,一个最重要的事实称为“期望的线性性(linearity)”。它指出有限个随机变量的和(依然是一个随机变量)的期望总是等于这些随机变量的期望的和。对于有限个随机变量X1,,XnX_1,\cdots,X_n,始终满足:

E[i=1nXi]=i=1nE[Xi]\mathbb{E}\left[\sum\limits_{i=1}^{n}X_i\right]=\sum\limits_{i=1}^{n}\mathbb{E}[X_i]

我们对于两个随机变量的情况给出证明:E[X+Y]=ωΩ(X(ω)+Y(ω))P(ω)=\mathbb{E}[X+Y]=\sum\limits_{\omega\in \Omega}(X(\omega)+Y(\omega))P(\omega)= ωΩX(ω)P(ω)+\sum\limits_{\omega\in \Omega}X(\omega)P(\omega)+ ωΩY(ω)P(ω)\sum\limits_{\omega\in \Omega}Y(\omega)P(\omega) =E[X]+E[Y]=\mathbb{E}[X]+\mathbb{E}[Y],证毕。期望的线性性重要在于,它没有对随机变量提出任何的要求,即使两个随机变量不是“独立”的,也有期望的线性性。“期望的线性性”是“期望”的性质,不是“随机变量”的性质。期望的线性性会在我们计算时提供极大的方便。

Rmk. 从更高的角度看,期望的线性性其实来自于“加权求和”这一运算的线性性。这个性质在连续世界里就是“积分的线性性”。在离散概率中,期望的线性性可以看作积分线性性的离散表达。

当然,为了完善“线性性”这一概念,我们还应当证明

cR,E[cX]=cE[X]\forall c\in \R,\mathbb{E}[cX]=c\mathbb{E}[X]

这是容易的,E[cX]=ωΩcX(ω)P(ω)=cωΩX(ω)P(ω)=cE[X]\mathbb{E}[cX]=\sum\limits_{\omega\in \Omega}cX(\omega)P(\omega)=c\sum\limits_{\omega\in \Omega}X(\omega)P(\omega)=c\mathbb{E}[X]

Rmk. 必须要指出的是,期望的线性性只对“有限个变量”成立。当变量有无穷个时,它是不正确的。从连续世界的视角看,当变量有无穷个时“变量之和”是一个极限过程,期望本身是一个积分因此也是一个极限过程,因此期望的线性性就是一个“极限符号能否交换位置的问题”(重积分能否化为累次积分的问题),我们知道这是需要额外条件的。

条件期望

我们可以仿照条件概率,定义条件期望(conditional expectation)。对于随机变量XX和事件AFA\in\mathcal{F}

E[XA]:=aRaP(X=aA)\mathbb{E}[X\mid A]:=\sum\limits_{a\in \R}a\cdot P(X=a\mid A)

这等价于

E[XA]=ωX(ω)P(ωA)\mathbb{E}[X\mid A]=\sum\limits_{\omega}X(\omega)\cdot P(\omega\mid A)

条件期望表示“在事件AA发生的条件下”随机变量XX的期望。例如,如果随机变量XX表示掷骰子所得的点数,那么E[X]=3.5\mathbb{E}[X]=3.5。而当事件AA为“骰子点数为偶数”时,E[XA]=4\mathbb{E}[X\mid A]=4,因为在事件AA作为前提时XX取奇数的概率为0,所以1,3,51,3,5不会在统计平均数时被计入在内。

仿照全概率公式P(B)=i=1nP(BAi)P(B)=\sum\limits_{i=1}^{n}P(B \cap A_i),我们有:

E[X]=i=1nE[XAi]P(Ai)\mathbb{E}[X]=\sum\limits_{i=1}^{n}E[X\mid A_i]\cdot P(A_i)

证明:E[X]=aaP(X=a)=aai[n]P(X=aAi)=aai[n]P(Ai)P(X=aAi)\mathbb{E}[X]=\sum\limits_{a}a\cdot P(X=a)=\sum\limits_{a}a\cdot \sum\limits_{i\in [n]}P(X=a\cap A_i)=\sum\limits_{a}a\cdot \sum\limits_{i\in [n]}P(A_i)P(X=a\mid A_i) =i[n]P(Ai)aaP(X=aAi)=i[n]P(Ai)E[XAi]=\sum\limits_{i\in [n]}P(A_i)\sum\limits_{a}a\cdot P(X=a\mid A_i)=\sum\limits_{i\in [n]}P(A_i)\mathbb{E}[X\mid A_i]。不妨把这称为“全期望公式”。

几类特殊的离散分布

伯努利分布

p[0,1]p\in[0,1]是一个常数。如果随机变量XX满足P[X=1]=p,P[X=0]=1pP[X=1]=p,P[X=0]=1-p,那么称XX为伯努利(Bernoulli)随机变量,记为XBer(p)X\sim \text{Ber}(p)XX的分布称为伯努利分布。例如,抛硬币的结果就是一个伯努利分布XBer(1/2)X\sim\text{Ber}(1/2)

对于伯努利分布XBer(p)X\sim \text{Ber}(p)E[X]=1p+0(1p)=p\mathbb{E}[X]=1\cdot p+0\cdot (1-p)=p

二项分布

把伯努利变量XBer(p)X\sim \text{Ber}(p)独立重复nn次,第ii次的随机变量记为XiX_i,那么Y=i=1nXiY=\sum\limits_{i=1}^{n}X_i就称为一个二项(binomial)随机变量。它满足二项分布:P(Y=k)=(nk)pk(1p)nkP(Y=k)=\dbinom{n}{k}p^k(1-p)^{n-k}

二项随机变量的期望E[Y]=E[i=1nXi]\mathbb{E}[Y]=\mathbb{E}\left[\sum\limits_{i=1}^{n}X_i\right],根据期望的线性性,E[i=1nXi]=i=1nE[Xi]=i=1np=np\mathbb{E}\left[\sum\limits_{i=1}^{n}X_i\right]=\sum\limits_{i=1}^{n}\mathbb{E}[X_i]=\sum\limits_{i=1}^{n}p=np

几何分布

如果把二项分布理解为抛nn次硬币统计正面朝上的次数,那么几何(geometric)分布就可以理解为不停抛硬币直到第一次出现正面所需要的次数。设XBer(p)X\sim \text{Ber}(p),如果ZZ满足几何分布,那么P(Z=n)=(1p)n1pP(Z=n)=(1-p)^{n-1}p

如何计算几何分布的期望?从直觉上看,丢一个1/101/10概率出正面的硬币大约需要10次,因此我们可以猜测E[X]=1p\mathbb{E}[X]=\dfrac{1}{p}。事实确实如此,按照定义计算即可验证。

参考资料

[1] Chihao Zhang, SJTU Combinatorics in Computer Science (Spring 2023)
[2] Michael Mitzenmacher, Eli Upfal, Probability and Computing