概率¶
简单地说,机器学习就是做出预测。
现在让我们更认真地考虑第一个例子:根据照片区分猫和狗。 这听起来可能很简单,但对于机器却可能是一个艰巨的挑战。 首先,问题的难度可能取决于图像的分辨率。
如上图所示,虽然人类很容易以$160 \times 160$像素的分辨率识别猫和狗, 但它在$40\times40$像素上变得具有挑战性,而且在$10 \times 10$像素下几乎是不可能的。 换句话说,我们在很远的距离(从而降低分辨率)区分猫和狗的能力可能会变为猜测。 概率给了我们一种正式的途径来说明我们的确定性水平。
现在考虑第二个例子:给出一些天气监测数据,我们想预测明天北京下雨的概率。 如果是夏天,下雨的概率是0.5。
在这两种情况下,我们都不确定结果,但这两种情况之间有一个关键区别。 在第一种情况中,图像实际上是狗或猫二选一。 在第二种情况下,结果实际上是一个随机的事件。 因此,概率是一种灵活的语言,用于说明我们的确定程度,并且它可以有效地应用于广泛的领域中。
2.6.1基本概率论¶
假设我们掷骰子,想知道看到1的几率有多大,而不是看到另一个数字。 如果骰子是公平的,那么$1$发生的概率为$\frac{1}{6}$。
然而现实生活中,对于我们从工厂收到的真实骰子,我们需要检查它是否有瑕疵。 检查骰子的唯一方法是多次投掷并记录结果。 对于每个骰子,我们将观察到$\{1, \ldots, 6\}$中的一个值。 对于每个值,一种自然的方法是将它出现的次数除以投掷的总次数, 即此事件(event)概率的估计值。 大数定律(law of large numbers)告诉我们: 随着投掷次数的增加,这个估计值会越来越接近真实的潜在概率。 让我们用代码试一试!
首先,我们导入必要的软件包。
%matplotlib inline
import torch
from torch.distributions import multinomial
from d2l import torch as d2l
在统计学中,我们把从概率分布中抽取样本的过程称为抽样(sampling)。 笼统来说,可以把分布(distribution)看作对事件的概率分配, 稍后我们将给出的更正式定义。 将概率分配给一些离散选择的分布称为多项分布(multinomial distribution)。
为了抽取一个样本,即掷骰子,我们只需传入一个概率向量。 输出是另一个相同长度的向量:它在索引$i$处的值是采样结果中$i$出现的次数。
fair_probs = torch.ones([6]) / 6
multinomial.Multinomial(10, fair_probs).sample()
tensor([1., 1., 3., 3., 2., 0.])
现在我们知道如何对骰子进行采样,我们可以模拟1000次投掷。
# 将结果存储为32位浮点数以进行除法
counts = multinomial.Multinomial(1000, fair_probs).sample()
counts / 1000 # 相对频率作为估计值
tensor([0.1820, 0.1660, 0.1550, 0.1740, 0.1590, 0.1640])
因为我们是从一个公平的骰子中生成的数据,我们知道每个结果都有真实的概率$\frac{1}{6}$, 大约是$0.167$,所以上面输出的估计值看起来不错。
我们也可以看到这些概率如何随着时间的推移收敛到真实概率。 让我们进行500组实验,每组抽取10个样本。
counts = multinomial.Multinomial(10, fair_probs).sample((500,))
print(counts)
cum_counts = counts.cumsum(dim=0) # 累加
print(cum_counts)
estimates = cum_counts / cum_counts.sum(dim=1, keepdims=True)
d2l.set_figsize((6, 4.5))
for i in range(6):
d2l.plt.plot(estimates[:, i].numpy(),
label=("P(die=" + str(i + 1) + ")"))
d2l.plt.axhline(y=0.167, color='black', linestyle='dashed')
d2l.plt.gca().set_xlabel('Groups of experiments')
d2l.plt.gca().set_ylabel('Estimated probability')
d2l.plt.legend();
tensor([[1., 1., 2., 3., 2., 1.], [2., 2., 2., 0., 3., 1.], [3., 1., 1., 1., 0., 4.], ..., [1., 3., 3., 1., 0., 2.], [2., 1., 2., 2., 2., 1.], [1., 0., 0., 4., 3., 2.]]) tensor([[ 1., 1., 2., 3., 2., 1.], [ 3., 3., 4., 3., 5., 2.], [ 6., 4., 5., 4., 5., 6.], ..., [851., 814., 849., 834., 822., 810.], [853., 815., 851., 836., 824., 811.], [854., 815., 851., 840., 827., 813.]])
每条实线对应于骰子的6个值中的一个,并给出骰子在每组实验后出现值的估计概率。 当我们通过更多的实验获得更多的数据时,这$6$条实体曲线向真实概率收敛。
1.概率论公理¶
在处理骰子掷出时,我们将集合$\mathcal{S} = \{1, 2, 3, 4, 5, 6\}$ 称为样本空间(sample space)或结果空间(outcome space), 其中每个元素都是结果(outcome)。 事件(event)是一组给定样本空间的随机结果。 例如,“看到$5$”($\{5\}$)和“看到奇数”($\{1, 3, 5\}$)都是掷出骰子的有效事件。 注意,如果一个随机实验的结果在$\mathcal{A}$中,则事件$\mathcal{A}$已经发生。 也就是说,如果投掷出$3$点,因为$3 \in \{1, 3, 5\}$,我们可以说,“看到奇数”的事件发生了。
概率(probability)可以被认为是将集合映射到真实值的函数。 在给定的样本空间$\mathcal{S}$中,事件$\mathcal{A}$的概率, 表示为$P(\mathcal{A})$,满足以下属性:
- 对于任意事件$\mathcal{A}$,其概率从不会是负数,即$P(\mathcal{A}) \geq 0$;
- 整个样本空间的概率为$1$,即$P(\mathcal{S}) = 1$;
- 对于互斥(mutually exclusive)事件(对于所有$i \neq j$都有$\mathcal{A}_i \cap \mathcal{A}_j = \emptyset$)的任意一个可数序列$\mathcal{A}_1, \mathcal{A}_2, \ldots$,序列中任意一个事件发生的概率等于它们各自发生的概率之和,即$P(\bigcup_{i=1}^{\infty} \mathcal{A}_i) = \sum_{i=1}^{\infty} P(\mathcal{A}_i)$。
以上也是概率论的公理,由科尔莫戈罗夫于1933年提出。 有了这个公理系统,我们可以避免任何关于随机性的哲学争论; 相反,我们可以用数学语言严格地推理。 例如,假设事件$\mathcal{A}_1$为整个样本空间, 且当所有$i > 1$时的$\mathcal{A}_i = \emptyset$, 那么我们可以证明$P(\emptyset) = 0$,即不可能发生事件的概率是$0$。
2.随机变量¶
在我们掷骰子的随机实验中,我们引入了随机变量(random variable)的概念。 随机变量几乎可以是任何数量,并且它可以在随机实验的一组可能性中取一个值。
请注意,离散(discrete)随机变量(如骰子的每一面) 和连续(continuous)随机变量(如人的体重和身高)之间存在微妙的区别。 现实生活中,测量两个人是否具有完全相同的身高没有太大意义。 如果我们进行足够精确的测量,最终会发现这个星球上没有两个人具有完全相同的身高。 在这种情况下,询问某人的身高是否落入给定的区间,比如是否在1.79米和1.81米之间更有意义。 在这些情况下,我们将这个看到某个数值的可能性量化为密度(density)。 高度恰好为1.80米的概率为0,但密度不是0。 在任何两个不同高度之间的区间,我们都有非零的概率。 在本节的其余部分中,我们将考虑离散空间中的概率。
2.6.2 处理多个随机变量¶
很多时候,我们会考虑多个随机变量。 比如,我们可能需要对疾病和症状之间的关系进行建模。 给定一个疾病和一个症状,比如“流感”和“咳嗽”,以某个概率存在或不存在于某个患者身上。 我们需要估计这些概率以及概率之间的关系,以便我们可以运用我们的推断来实现更好的医疗服务。
1.联合概率¶
第一个被称为联合概率(joint probability)$P(A=a,B=b)$。 给定任意值$a$和$b$,联合概率可以回答:$A=a$和$B=b$同时满足的概率是多少? 请注意,对于任何$a$和$b$的取值,$P(A = a, B=b) \leq P(A=a)$。
2.条件概率¶
联合概率的不等式带给我们一个有趣的比率: $0 \leq \frac{P(A=a, B=b)}{P(A=a)} \leq 1$。 我们称这个比率为条件概率(conditional probability), 并用$P(B=b \mid A=a)$表示它:它是$B=b$的概率,前提是$A=a$已发生。
3.贝叶斯定理¶
使用条件概率的定义,我们可以得出统计学中最有用的方程之一: Bayes定理(Bayes' theorem)。 根据乘法法则(multiplication rule )可得到$P(A, B) = P(B \mid A) P(A)$。 根据对称性,可得到$P(A, B) = P(A \mid B) P(B)$。 假设$P(B)>0$,求解其中一个条件变量,我们得到
$$P(A \mid B) = \frac{P(B \mid A) P(A)}{P(B)}.$$
请注意,这里我们使用紧凑的表示法: 其中$P(A, B)$是一个联合分布(joint distribution), $P(A \mid B)$是一个条件分布(conditional distribution)。 这种分布可以在给定值$A = a, B=b$上进行求值。
4.边际化¶
为了能进行事件概率求和,我们需要求和法则(sum rule), 即$B$的概率相当于计算$A$的所有可能选择,并将所有选择的联合概率聚合在一起:
$$P(B) = \sum_{A} P(A, B),$$
这也称为边际化(marginalization)。 边际化结果的概率或分布称为边际概率(marginal probability) 或边际分布(marginal distribution)。
5.独立性¶
另一个有用属性是依赖(dependence)与独立(independence)。 如果两个随机变量$A$和$B$是独立的,意味着事件$A$的发生跟$B$事件的发生无关。 在这种情况下,统计学家通常将这一点表述为$A \perp B$。 根据贝叶斯定理,马上就能同样得到$P(A \mid B) = P(A)$。 在所有其他情况下,我们称$A$和$B$依赖。 比如,两次连续抛出一个骰子的事件是相互独立的。 相比之下,灯开关的位置和房间的亮度并不是(因为可能存在灯泡坏掉、电源故障,或者开关故障)。
由于$P(A \mid B) = \frac{P(A, B)}{P(B)} = P(A)$等价于$P(A, B) = P(A)P(B)$, 因此两个随机变量是独立的,当且仅当两个随机变量的联合分布是其各自分布的乘积。 同样地,给定另一个随机变量$C$时,两个随机变量$A$和$B$是条件独立的(conditionally independent), 当且仅当$P(A, B \mid C) = P(A \mid C)P(B \mid C)$。 这个情况表示为$A \perp B \mid C$。
2.6.3 期望和方差¶
为了概括概率分布的关键特征,我们需要一些测量方法。 一个随机变量$X$的期望(expectation,或平均值(average))表示为
$$E[X] = \sum_{x} x P(X = x).$$
当函数$f(x)$的输入是从分布$P$中抽取的随机变量时,$f(x)$的期望值为
$$E_{x \sim P}[f(x)] = \sum_x f(x) P(x).$$
在许多情况下,我们希望衡量随机变量$X$与其期望值的偏置。这可以通过方差来量化
$$\mathrm{Var}[X] = E\left[(X - E[X])^2\right] = E[X^2] - E[X]^2.$$
方差的平方根被称为标准差(standard deviation)。 随机变量函数的方差衡量的是:当从该随机变量分布中采样不同值$x$时, 函数值偏离该函数的期望的程度:
$$\mathrm{Var}[f(x)] = E\left[\left(f(x) - E[f(x)]\right)^2\right].$$
小结¶
- 我们可以从概率分布中采样。
- 我们可以使用联合分布、条件分布、Bayes定理、边缘化和独立性假设来分析多个随机变量。
- 期望和方差为概率分布的关键特征的概括提供了实用的度量形式。
练习¶
- 进行$m=500$组实验,每组抽取$n=10$个样本。改变$m$和$n$,观察和分析实验结果。
- 给定两个概率为$P(\mathcal{A})$和$P(\mathcal{B})$的事件,计算$P(\mathcal{A} \cup \mathcal{B})$和$P(\mathcal{A} \cap \mathcal{B})$的上限和下限。(提示:使用友元图来展示这些情况。)
- 假设我们有一系列随机变量,例如$A$、$B$和$C$,其中$B$只依赖于$A$,而$C$只依赖于$B$,能简化联合概率$P(A, B, C)$吗?(提示:这是一个马尔可夫链。)
- 在 :numref:
subsec_probability_hiv_app
中,第一个测试更准确。为什么不运行第一个测试两次,而是同时运行第一个和第二个测试?
本文总阅读量次