【动手学深度学习PyTorch】概率
概率
一、介绍
%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();

每条实线对应于骰子的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 = \emptysetAi∩Aj=∅)的任意一个可数序列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=1∞Ai)=∑i=1∞P(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=a和B=bB=bB=b同时满足的概率是多少?
请注意,对于任何aaa和bbb的取值,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=a和B=bB=bB=b,A=aA=aA=a就必须发生,B=bB=bB=b也必须发生(反之亦然)。因此,A=aA=aA=a和B=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 10≤P(A=a)P(A=a,B=b)≤1
用P(B=b∣A=a)P(B=b \mid A=a)P(B=b∣A=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(A∣B)=P(B)P(B∣A)P(A).
4. 边际化
即BBB的概率相当于计算AAA的所有可能选择,并将所有选择的联合概率聚合在一起:
P(B)=∑AP(A,B),P(B) = \sum_{A} P(A, B),P(B)=A∑P(A,B),
这也称为边际化(marginalization)。边际化结果的概率或分布称为边际概率(marginal probability)
或边际分布(marginal distribution)。
5. 独立性
P(A∣B)=P(A)P(A \mid B) = P(A)P(A∣B)=P(A)称为AAA和BBB独立
三、期望和方差
随机变量XXX的期望(expectation,或平均值(average))表示为
E[X]=∑xxP(X=x).E[X] = \sum_{x} x P(X = x).E[X]=x∑xP(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).Ex∼P[f(x)]=x∑f(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[(X−E[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。
在整理过程中对部分内容进行了删改和补充,仅用于个人学习与交流,版权归原作者所有。
更多推荐



所有评论(0)