【深度学习笔记】04 概率论基础

04 概率论基础

    • 概率论公理
    • 联合概率
    • 条件概率
    • 贝叶斯定理
    • 边际化
    • 独立性
    • 期望和方差
    • 模拟投掷骰子的概率随投掷次数增加的变化

概率论公理

概率(probability)可以被认为是将集合映射到真实值的函数。
在给定的样本空间 S \mathcal{S} S中,事件 A \mathcal{A} A的概率,
表示为 P ( A ) P(\mathcal{A}) P(A),满足以下属性:

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

联合概率

P ( A = a , B = b ) P(A=a,B=b) P(A=a,B=b)

给定任意值 a a a b b b,联合概率可以回答: A = a A=a A=a B = b B=b B=b同时满足的概率是多少?

对于任何 a a a b b b的取值, 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)

条件概率

0 ≤ P ( A = a , B = b ) P ( A = a ) ≤ 1 0 \leq \frac{P(A=a, B=b)}{P(A=a)} \leq 1 0P(A=a)P(A=a,B=b)1
我们称这个比率为条件概率(conditional probability),
并用 P ( B = b ∣ A = a ) P(B=b \mid A=a) P(B=bA=a)表示它:它是 B = b B=b B=b的概率,前提是 A = a A=a A=a已发生。

贝叶斯定理

根据乘法法则(multiplication rule )可得到 P ( A , B ) = P ( B ∣ A ) P ( A ) P(A, B) = P(B \mid A) P(A) P(A,B)=P(BA)P(A)
根据对称性,可得到 P ( A , B ) = P ( A ∣ B ) P ( B ) P(A, B) = P(A \mid B) P(B) P(A,B)=P(AB)P(B)
假设 P ( B ) > 0 P(B)>0 P(B)>0,求解其中一个条件变量,我们得到

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).

其中 P ( A , B ) P(A, B) P(A,B)是一个联合分布(joint distribution),
P ( A ∣ B ) P(A \mid B) P(AB)是一个条件分布(conditional distribution)。
这种分布可以在给定值 A = a , B = b A = a, B=b A=a,B=b上进行求值。

边际化

为了能进行事件概率求和,需要求和法则(sum rule),
B B B的概率相当于计算 A A A的所有可能选择,并将所有选择的联合概率聚合在一起:

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

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

独立性

如果两个随机变量 A A A B B B是独立的,意味着事件 A A A的发生跟 B B B事件的发生无关。
在这种情况下,通常将这一点表述为 A ⊥ B A \perp B AB
根据贝叶斯定理,马上就能同样得到 P ( A ∣ B ) = P ( A ) P(A \mid B) = P(A) P(AB)=P(A)
在所有其他情况下,我们称 A A A B B B依赖。

由于 P ( A ∣ B ) = P ( A , B ) P ( B ) = P ( A ) P(A \mid B) = \frac{P(A, B)}{P(B)} = P(A) P(AB)=P(B)P(A,B)=P(A)等价于 P ( A , B ) = P ( A ) P ( B ) P(A, B) = P(A)P(B) P(A,B)=P(A)P(B)
因此两个随机变量是独立的,当且仅当两个随机变量的联合分布是其各自分布的乘积。
同样地,给定另一个随机变量 C C C时,两个随机变量 A A A B B B条件独立的(conditionally independent),
当且仅当 P ( A , B ∣ C ) = P ( A ∣ C ) P ( B ∣ C ) P(A, B \mid C) = P(A \mid C)P(B \mid C) P(A,BC)=P(AC)P(BC)
这个情况表示为 A ⊥ B ∣ C A \perp B \mid C ABC

期望和方差

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

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

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

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

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

V a r [ X ] = E [ ( X − E [ X ] ) 2 ] = E [ X 2 ] − 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)。

随机变量函数的方差衡量的是:当从该随机变量分布中采样不同值 x x x时,
函数值偏离该函数的期望的程度:

V a r [ 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].

模拟投掷骰子的概率随投掷次数增加的变化

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

为了抽取像本,即掷骰子,我们只需为了抽取一个样本,
输出是另一个相同长度的向量:它在索引 i i i处的值是采样结果中 i i i出现的次数。

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

使用PyTorch框架的函数同时抽取多个样本,得到我们想要的任意形状的独立样本数组

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

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

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

进行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个值中的一个,并给出骰子在每组实验后出现值的估计概率。
当我们通过更多的实验获得更多的数据时,这 6 6 6条实体曲线向真实概率收敛。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/190931.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Servlet知识汇总

小王学习录 Ⅰ. servlet程序导入依赖创建目录编写代码打包程序部署程序验证简化打包和部署Ⅱ. Servlet Api1. HttpServlet2. HttpServletRequest3. HttpServletResponseⅢ. Cookie 和session1. Cookie2. Session(会话)3. session 和 cookie的区别4. session 和 cookie的联系5. …

5、Hydra与Crunch基本使用

文章目录 一、关于Hydra与Crunch二、在操作机上使用Crunch生成用户名和密码字典三、在操作机上使用Hydra对靶机FTP登录密码进行字典攻击 一、关于Hydra与Crunch Hydra(九头蛇)是一个相当强大的暴力密码破解工具。该工具支持几乎所有协议的在线密码破解&…

免费 2 个月!ChatGPT-4 和 Claude 2 都能用

你好,我是 EarlGrey,一名双语学习者,会一点编程,目前已翻译出版《Python 无师自通》、《Python 并行编程手册》等书籍。 点击上方蓝字关注我,获取最新编程及AI干货、高赞工具和项目分享。 在后台回复“books”&#xf…

一网打尽异步神器CompletableFuture

Future接口以及它的局限性 我们都知道,Java中创建线程的方式主要有两种方式,继承Thread或者实现Runnable接口。但是这两种都是有一个共同的缺点,那就是都无法获取到线程执行的结果,也就是没有返回值。于是在JDK1.5 以后为了解决这…

深入解析Selenium动作链:精通点击、拖拽、切换等操作

背景: 一些交互动作都是针对某个节点执行的。比如,对于输入框,我们就调用它的输入文字和清空文字方法;对于按钮,就调用它的点击方法。其实,还有另外一些操作,它们没有特定的执行对象&#xff0…

关于vs code Debug调试时候出现“找不到任务C/C++: g++.exe build active file” 解决方法

vs code Debug调试时候出现“找不到任务C/C: g.exe build active file” ,出现报错,Debug失败 后来经过摸索和上网查找资料解决问题 方法如下 在Vs code的操作页面左侧有几个配置文件 红框里的是需要将要修改的文件 查看tasks.json和launch.json框选&…

跟着chatgpt一起学|1.spark入门之MLLib

chatgpt在这一章表现的不好,所以我主要用它来帮我翻译文章提炼信息 1.前言 首先找到spark官网里关于MLLib的链接 spark内一共有2种支持机器学习的包, 一种是spark.ml,基于DataFrame的,也是目前主流的 另一种则是spark.mllib,是基于RDD的…

Python---函数的数据---拆包的应用案例(两个变量值互换,*args, **kwargs调用时传递参数用法)

案例: 使用至少3种方式交换两个变量的值 第一种方式:引入一个临时变量 c1 10 c2 2# 引入临时变量temp temp c2 c2 c1 c1 tempprint(c1, c2) 第二种方式:使用加法与减法运算交换两个变量的值(不需要引入临时变量&#xff09…

【单调栈】子数组的最小值之和

import java.util.Deque; import java.util.LinkedList;/** 参考链接:https://leetcode.cn/problems/sum-of-subarray-minimums/solutions/1930857/gong-xian-fa-dan-diao-zhan-san-chong-shi-gxa5/* https://leetcode.cn/problems/sum-of-subarray-minim…

[NOIP2006]明明的随机数

一、题目 登录—专业IT笔试面试备考平台_牛客网 二、代码 set去重,再利用vector进行排序 std::set是一个自带排序功能的容器,它已经按照一定的规则(默认是元素的小于比较)对元素进行了排序。因此,你不能直接对std::s…

栈和队列OJ题

目录 【1】括号匹配问题 思路分析 易错总结 Stack.h&Stack.c手撕栈 isValid括号匹配 【2】设计循环队列 今天接着栈&队列OJ题目。 【1】括号匹配问题 给定一个只包括 (,),{,},[,] 的字符串 s &#xff…

超实用!Spring Boot 常用注解详解与应用场景

目录 一、Web MVC 开发时,对于三层的类注解 1.1 Controller 1.2 Service 1.3 Repository 1.4 Component 二、依赖注入的注解 2.1 Autowired 2.2 Resource 2.3 Resource 与 Autowired 的区别 2.3.1 实例讲解 2.4 Value 2.5 Data 三、Web 常用的注解 3.1…

【研究中】sql server权限用户设置23.11.26

--更新时间2023.11.26 21:30 负责人:jerrysuse DBAliCMSIF EXISTS (select * from sysobjects where namehkcms_user)--判断是否存在此表DROP TABLE hkcms_user CREATE TABLE hkcms_user (id int primary key identity(1, 1),username char(32) NOT N…

【STM32单片机】简易计算器设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器,使用动态数码管模块、矩阵按键、蜂鸣器模块等。 主要功能: 系统运行后,数码管默认显示0,输入对应的操作数进行四则运…

(1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)

电子工业出版社 Publishing House Of Electronics Industry 北京BeiJing 版次:2018年10月第1版 印次:2023年2月第22次印刷 定价:68元 声明 作为项目管理协会(PMI)的标准和指南,本指南是通过相关人员的…

MySQL表的操作『增删改查』

✨个人主页: 北 海 🎉所属专栏: MySQL 学习 🎃操作环境: CentOS 7.6 阿里云远程服务器 🎁软件版本: MySQL 5.7.44 文章目录 1.创建表1.1.创建时指定属性 2.查看表2.1.查看表结构2.2.查看建表信息…

MYSQL 连接的使用

文章目录 前言连接介绍在命令提示符中使用 INNER JOINMySQL LEFT JOINMySQL RIGHT JOIN在PHP脚本中使用JOIN后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:Mysql 🐱‍👓博主在前端领域还有很多知识和技术需要掌握…

Kafka 如何实现顺序消息

版本说明 本文所有的讨论均在如下版本进行,其他版本可能会有所不同。 Kafka: 3.6.0Pulsar: 2.9.0RabbitMQ 3.7.8RocketMQ 5.0Go1.21github.com/segmentio/kafka-go v0.4.45 结论先行 Kafka 只能保证单一分区内的顺序消息,无法保证多分区间的顺序消息…

【咕咕送书 | 第六期】深入浅出阐述嵌入式虚拟机原理,实现“小而能”嵌入式虚拟机!

🎬 鸽芷咕:个人主页 🔥 个人专栏:《粉丝福利》 《linux深造日志》 ⛺️生活的理想,就是为了理想的生活! 文章目录 ⛳️ 写在前面参与规则引言一、为什么嵌入式系统需要虚拟化技术?1.1 专家推荐 二、本书适合谁&#x…

二级分类菜单及三级分类菜单的层级结构返回

前言 在开发投诉分类功能模块时,遇到过这样一个业务场景:后端需要按层级结构返回二级分类菜单所需数据,换言之,将具有父子关系的List结果集数据转为树状结构数据来返回 二级分类菜单 前期准备 这里简单复刻下真实场景中 出现的…