概率

一、介绍

%matplotlib inline
import torch
from torch.distributions import multinomial
from d2l import torch as d2l

[模拟一个骰子的概率]

fair_probs = torch.ones([6]) / 6
multinomial.Multinomial(1, fair_probs).sample()
tensor([0., 0., 1., 0., 0., 0.])

使用深度学习框架的函数同时抽取多个样本

multinomial.Multinomial(10, fair_probs).sample()
tensor([5., 3., 2., 0., 0., 0.])

模拟1000次投掷,然后统计1000次投掷后,每个数字被投中了多少次。

# 将结果存储为32位浮点数以进行除法
counts = multinomial.Multinomial(1000, fair_probs).sample()
counts / 1000  # 相对频率作为估计值
tensor([0.1550, 0.1820, 0.1770, 0.1710, 0.1600, 0.1550])

进行500组实验,每组抽取10个样本

counts = multinomial.Multinomial(10, fair_probs).sample((500,))
cum_counts = counts.cumsum(dim=0)
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();

image-20250930101001630

每条实线对应于骰子的6个值中的一个,并给出骰子在每组实验后出现值的估计概率。
当我们通过更多的实验获得更多的数据时,这666条实体曲线向真实概率收敛。

1. 概率论公理

在给定的样本空间S\mathcal{S}S中,事件A\mathcal{A}A的概率,表示为P(A)P(\mathcal{A})P(A),满足以下属性:

  • 对于任意事件A\mathcal{A}A,其概率从不会是负数,即P(A)≥0P(\mathcal{A}) \geq 0P(A)0
  • 整个样本空间的概率为111,即P(S)=1P(\mathcal{S}) = 1P(S)=1
  • 对于互斥(mutually exclusive)事件(对于所有i≠ji \neq ji=j都有Ai∩Aj=∅\mathcal{A}_i \cap \mathcal{A}_j = \emptysetAiAj=)的任意一个可数序列A1,A2,…\mathcal{A}_1, \mathcal{A}_2, \ldotsA1,A2,,序列中任意一个事件发生的概率等于它们各自发生的概率之和,即P(⋃i=1∞Ai)=∑i=1∞P(Ai)P(\bigcup_{i=1}^{\infty} \mathcal{A}_i) = \sum_{i=1}^{\infty} P(\mathcal{A}_i)P(i=1Ai)=i=1P(Ai)

以上也是概率论的公理,由科尔莫戈罗夫于1933年提出。

2. 随机变量

随机变量几乎可以是任何数量,并且它可以在随机实验的一组可能性中取一个值。
考虑一个随机变量XXX,其值在掷骰子的样本空间S={1,2,3,4,5,6}\mathcal{S}=\{1,2,3,4,5,6\}S={1,2,3,4,5,6}中。
我们可以将事件“看到一个555”表示为{X=5}\{X=5\}{X=5}X=5X=5X=5,其概率表示为P({X=5})P(\{X=5\})P({X=5})P(X=5)P(X=5)P(X=5)

二、处理多个随机变量

1. 联合概率

P(A=a,B=b)P(A=a,B=b)P(A=a,B=b)A=aA=aA=aB=bB=bB=b同时满足的概率是多少?
请注意,对于任何aaabbb的取值,P(A=a,B=b)≤P(A=a)P(A = a, B=b) \leq P(A=a)P(A=a,B=b)P(A=a)
这点是确定的,因为要同时发生A=aA=aA=aB=bB=bB=bA=aA=aA=a就必须发生,B=bB=bB=b也必须发生(反之亦然)。因此,A=aA=aA=aB=bB=bB=b同时发生的可能性不大于A=aA=aA=a或是B=bB=bB=b单独发生的可能性。

2. 条件概率

例如:0≤P(A=a,B=b)P(A=a)≤10 \leq \frac{P(A=a, B=b)}{P(A=a)} \leq 10P(A=a)P(A=a,B=b)1
P(B=b∣A=a)P(B=b \mid A=a)P(B=bA=a)表示它:它是B=bB=bB=b的概率,前提是A=aA=aA=a已发生。

3. 贝叶斯定理

P(A∣B)=P(B∣A)P(A)P(B).P(A \mid B) = \frac{P(B \mid A) P(A)}{P(B)}.P(AB)=P(B)P(BA)P(A).

4. 边际化

BBB的概率相当于计算AAA的所有可能选择,并将所有选择的联合概率聚合在一起:

P(B)=∑AP(A,B),P(B) = \sum_{A} P(A, B),P(B)=AP(A,B),

这也称为边际化(marginalization)。边际化结果的概率或分布称为边际概率(marginal probability)
边际分布(marginal distribution)。

5. 独立性

P(A∣B)=P(A)P(A \mid B) = P(A)P(AB)=P(A)称为AAABBB独立

三、期望和方差

随机变量XXX期望(expectation,或平均值(average))表示为

E[X]=∑xxP(X=x).E[X] = \sum_{x} x P(X = x).E[X]=xxP(X=x).

当函数f(x)f(x)f(x)的输入是从分布PPP中抽取的随机变量时,f(x)f(x)f(x)的期望值为

Ex∼P[f(x)]=∑xf(x)P(x).E_{x \sim P}[f(x)] = \sum_x f(x) P(x).ExP[f(x)]=xf(x)P(x).

在许多情况下,我们希望衡量随机变量XXX与其期望值的偏置。这可以通过方差来量化

Var[X]=E[(X−E[X])2]=E[X2]−E[X]2.\mathrm{Var}[X] = E\left[(X - E[X])^2\right] = E[X^2] - E[X]^2.Var[X]=E[(XE[X])2]=E[X2]E[X]2.

方差的平方根被称为标准差(standard deviation)。
随机变量函数的方差衡量的是:当从该随机变量分布中采样不同值xxx时,函数值偏离该函数的期望的程度:

Var[f(x)]=E[(f(x)−E[f(x)])2].\mathrm{Var}[f(x)] = E\left[\left(f(x) - E[f(x)]\right)^2\right].Var[f(x)]=E[(f(x)E[f(x)])2].

小结

  • 我们可以从概率分布中采样。
  • 我们可以使用联合分布、条件分布、Bayes定理、边缘化和独立性假设来分析多个随机变量。
  • 期望和方差为概率分布的关键特征的概括提供了实用的度量形式。

内容声明
本文基于开源教材《动手学深度学习》(Dive into Deep Learning, 作者:Aston Zhang、Zachary C. Lipton、Mu Li、Alexander J. Smola 等)整理,原始项目地址:https://github.com/d2l-ai/d2l-zh。
在整理过程中对部分内容进行了删改和补充,仅用于个人学习与交流,版权归原作者所有。


Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐