深度强化学习 第 2 章 蒙特卡洛

news2024/11/20 7:12:19

2.1随机变量

强化学习中会经常用到两个概念: 随机变量、 观测值。
本书用大写字母表示随机变量,小写字母表示观测值,避免造成混淆。
在这里插入图片描述
下面我们定义概率质量函数(probability mass function,缩写 PMF)和概率密度函数(probability density function,缩写 PDF)

  • 概率质量函数(PMF)描述一个离散概率分布——即变量的取值范围 X 是个离散
    集合。

在这里插入图片描述

  • 概率密度函数(PDF)描述一个连续概率分布——即变量的取值范围 X 是个连续集合。
    在这里插入图片描述
    注意,跟离散分布不同,连续分布的 p(x)不等于 P(X = x)。概率密度函数有这样的性质:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.2蒙特卡洛估计

蒙特卡洛(Monte Carlo)是一大类随机算法(randomized algorithms)的总称,它们通过随机样本来估算真实值。本节用几个例子讲解蒙特卡洛算法。

2.2.1 例一:近似 π \pi π

在这里插入图片描述

在这里插入图片描述

2.2.2 例二:估算阴影部分面积

在这里插入图片描述在这里插入图片描述

2.2.3 例三:近似定积分

在这里插入图片描述

一元函数的定积分

在这里插入图片描述

多元函数的定积分

在这里插入图片描述

举例讲解多元函数的蒙特卡洛积分

在这里插入图片描述

2.2.4 例四:近似期望

蒙特卡洛还可以用来近似期望,这在整本书中会反复应用。

在这里插入图片描述
下面介绍一种更好的算法。既然我们知道概率密度函数 p(x),我们最好是按照 p(x)
做非均匀抽样,而不是均匀抽样。按照 p(x) 做非均匀抽样,可以比均匀抽样有更快的收敛。具体步骤如下:

在这里插入图片描述

注 如果按照上述方式做编程实现,需要储存函数值 f(x1), · · · , f(xn)。但用如下的方式做编程实现,可以减小内存开销。
q n = 1 n ∑ i = 1 n f ( x i ) q_n=\frac{1}{n}\sum\limits_{i=1}^nf(x_i) qn=n1i=1nf(xi)
初始化 q 0 = 0 q_0=0 q0=0 从 t = 1 到 n 从t=1到n t=1n
q n = ( 1 − 1 t ) ⋅ q t − 1 + 1 t ⋅ f ( x t ) q_n=(1-\frac{1}{t})\cdot q_{t-1}+ \frac{1}{t} \cdot f(x_t) qn=(1t1)qt1+t1f(xt)

2.2.5 例五:随机梯度

我们可以用蒙特卡洛近似期望来理解随机梯度算法
在这里插入图片描述
在这里插入图片描述

在这个描述中,作者提到了经验风险最小化(empirical risk minimization)问题以及在神经网络训练中使用的随机梯度下降(SGD)方法。这些方法常用于机器学习中的模型训练,特别是在深度学习中。
让我对这个描述进行进一步解释:

  1. 经验风险最小化问题:在机器学习中,我们通常试图训练一个模型(例如,神经网络),以便它在未见的数据上表现良好。为了实现这一目标,我们定义一个损失函数(例如,交叉熵损失),该损失函数度量模型的预测与真实标签之间的误差。经验风险最小化问题的目标是找到能够最小化在训练数据集上的损失函数的模型参数。
  2. 训练数据集 X:在描述中,训练数据集 X 包含 n 个样本数据点,其中每个数据点 x_i 是一个输入样本。
  3. 替代概率密度函数 p(x):在实际应用中,样本的真实概率密度函数 p(x) 通常是未知的,难以精确建模。因此,通常会使用一个离散的概率质量函数来代替真实的概率密度函数。在这种情况下,作者使用了一个均匀概率分布,即假设每个样本数据点被选中的概率都相等,这是一种常用的假设。
  4. 最小批 SGD:为了训练神经网络,通常使用随机梯度下降(SGD)的变种,例如最小批随机梯度下降。在每一轮迭代中,最小批 SGD 从训练数据集 X 中均匀随机抽取 B 个样本,其中 B 是所谓的批量大小。然后,对这些样本计算损失函数的梯度,并使用该梯度来更新神经网络的参数 w。这个过程迭代进行多次,直到满足停止条件(通常是达到一定的迭代次数或达到损失函数的收敛)。

总之,这段描述强调了在深度学习中的模型训练过程,其中采用经验风险最小化来优化模型参数,而代替真实的概率密度函数使用均匀概率分布,同时使用最小批 SGD 来提高训练效率。这是深度学习中常见的训练方法之一。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot面试题5:SpringBoot Starter的工作原理是什么?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:SpringBoot Starter的工作原理是什么? Spring Boot Starter 是一种便捷的方式来为 Spring Boot 应用程序引入一组特定功能的依赖项。它简化了项目…

【Java并发】聊聊LongAdder应用场景及其原理

应用场景 我们知道在实际的应用场景中,可能会对某个商品进行浏览次数进行迭代,或者抖音视频的点击,那么如何高效记录呢,首先如果是使用普通的num 进行多线程操作的话,那么一定会带来数据一致性问题,所以一…

【Unity基础】6.动画状态机

【Unity基础】6.动画状态机 大家好,我是Lampard~~ 欢迎来到Unity基础系列博客,所学知识来自B站阿发老师~感谢 (一)Animator Controller组件 (1)创建组件 Animator Controller组件是unity用于控制管…

【细读经典】delay model and timing analysis

Technology-Dependent LogicOptimization, part 1 序言 如图所示是现代工业流程中对于一个高层次的抽象描述如何到最后的芯片的流程图,其中逻辑综合作为一个非常重要的部分,主要被分为两个阶段: 工艺无关的优化(technology-independent opt…

shell脚本学习笔记03(小滴课堂)

在shell脚本中,表示变量除了可以使用$a(a是一个变量),还可以使用${a} 那这两种表示方式有什么区别么? 花括号可以和其它字符或者字母区分开来。 >追加内容 我们发现使用>会把原来的内容覆盖。 我们使用>>就不会覆盖了&#xff…

MAYA教程之模型的UV拆分与材质介绍

什么是UV 模型制作完成后,需要给模型进行贴图,就需要用到UV功能 UV编译器介绍 打开UI编译器 主菜单有一个 UV->UV编译器,可以点击打开 创建一个模型,可以看到模型默认的UV UV编译器功能使用 UV模式的选择 在UV编译器中…

从裸机启动开始运行一个C++程序(八)

前序文章请看: 从裸机启动开始运行一个C程序(七) 从裸机启动开始运行一个C程序(六) 从裸机启动开始运行一个C程序(五) 从裸机启动开始运行一个C程序(四) 从裸机启动开始运…

【C++】C++11 ——lambda表达式

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:C学习 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【C】C11…

阿里云香港云服务器公网带宽价格表及测试IP地址

阿里云服务器香港地域公网带宽价格表,1M带宽价格是30.0元/月,按使用流量1GB价格是1.0元,阿里云香港服务器测试IP地址:47.75.18.101,阿里云百科aliyunbaike.com来详细说下阿里云香港服务器1M带宽、5M带宽、6M带宽、10M带…

民宿酒店订房房态商城小程序的作用是什么

外出旅游出差,酒店民宿总是很好的选择,随着经济复苏,各地旅游及外出办公人次增多,酒店成绩随之增加,市场呈现多品牌酒店经营形式。 区别于以前,如今互联网深入各个行业,酒店经营也面临着困境。…

删除字符串特定的字符(fF)C语言

代码&#xff1a; #include <stdio.h> void funDel(char *str) {int i, j;for (i j 0; str[i] ! \0; i)if (str[i] ! f && str[i] ! F)str[j] str[i];str[j] \0; }int main() {char str[100];printf("请输入一个字符串&#xff1a;");gets(str);pr…

转化限制+分析变量变化引起的答案变化:Gym - 104065D

https://vjudge.net/contest/587311#problem/H 先转化一波条件&#xff1a; p i ≥ 1 X p_i\ge \frac 1 X pi​≥X1​ p i ≤ 1 1 − Y p_i\le \frac 1 {1-Y} pi​≤1−Y1​ 所以我们按 p p p 排序&#xff0c; s u m x sum_x sumx​ 必然是后缀&#xff0c; s u m y sum_y …

Python算术运算符:加减乘除 整除 取余 幂指数 小括号

运算案例 需求&#xff1a;用户手工输入梯形的上底、下底以及高&#xff0c;能直接通过Python打印出梯形的面积为多少。 做这个需求前&#xff0c;首先要知道Python的算数运算符有哪些。 2、算术运算符 所谓的算数运算符就是我们日常生活中的加减乘除等待。 运算符描述实例…

汉服商城小程序的作用是什么

汉服在日常生活中越来越常见&#xff0c;大街小巷也有不少年轻人装扮甚是漂亮帅气&#xff0c;有些地区甚至还有相关的比赛等&#xff0c;作为近几年曝光的服饰&#xff0c;汉服市场规模持续增加中&#xff0c;各地线上线下商家也多了起来。 然而在实际经营中&#xff0c;汉服…

Anylogic 读取和写入Excel文件

1、选择面板-连接-Excel文件&#xff0c;拖入到视图中 然后在excel文件的属性中进行绑定外部excel文件。 绑定完之后&#xff0c;在你需要读取的地方进行写代码&#xff0c; //定义开始读取的行数 //这里设为2&#xff0c;是因为第一行是数据名称 int row12; //读取excel文件信…

SpringBoot-黑马程序员-学习笔记(六)

目录 76.常用计量单位使用 77.bean属性校验 81.测试表现层 82.发送虚拟请求 94.springboot读写redis的客户端 100.ElasticSearch&#xff08;简称ES&#xff09; 一个分布式全文搜索引擎 76.常用计量单位使用 Data Component ConfigurationProperties(prefix "serve…

SpringMVC的响应处理

目录 传统同步业务数据的响应 请求资源转发 请求资源重定向 响应数据模型 直接回写数据给客户端 前后端分离异步业务数据响应 在前面的文章中&#xff0c;我们已经介绍了Spring接收请求的部分&#xff0c;接下来看Spring如何给客户端响应数据 传统同步业务数据的响应 准…

Matlab统计棋盘连通分量(空值区域)的大小和个数

一、基础设定 在20x20的棋盘矩阵中&#xff0c;设定黑子为1&#xff0c;空值为0 现需要统计空值&#xff08;连通分量&#xff09;的大小和个数并标记&#xff0c;如下图所示&#xff1a; 以此类推 其中&#xff0c;最大的连通分量如下&#xff1a; 二、Matlab程序 以下是红…

读写锁ReentrantReadWriteLockStampLock详解

如何设计一把读写锁&#xff1f;ReentrantReadWriteLock 读写锁设计思路 读写状态的设计 设计的精髓&#xff1a;用一个变量如何维护多种状态 在 ReentrantLock 中&#xff0c;使用 Sync ( 实际是 AQS )的 int 类型的 state 来表示同步状态&#xff0c;表示锁被一个线程重复获…

【网络基础】——传输层

目录 前言 传输层 端口号 端口号范围划分 知名端口号 进程与端口号的关系 netstat UDP协议 UDP协议位置 UDP协议格式 UDP协议特点 面向数据报 UDP缓冲区 UDP的使用注意事项 基于UDP的应用层协议 TCP协议 TCP简介 TCP协议格式 确认应答机制&#…