Pytorch深度强化学习1-5:详解蒙特卡洛强化学习原理

news2025/1/11 2:28:19

目录

  • 0 专栏介绍
  • 1 蒙特卡洛强化学习
  • 2 策略评估原理
  • 3 策略改进原理
    • 3.1 同轨蒙特卡洛强化学习
    • 3.2 离轨蒙特卡洛强化学习

0 专栏介绍

本专栏重点介绍强化学习技术的数学原理,并且采用Pytorch框架对常见的强化学习算法、案例进行实现,帮助读者理解并快速上手开发。同时,辅以各种机器学习、数据处理技术,扩充人工智能的底层知识。

🚀详情:《Pytorch深度强化学习》


在这里插入图片描述

1 蒙特卡洛强化学习

在Pytorch深度强化学习1-4:策略改进定理与贝尔曼最优方程详细推导中,我们介绍了贝尔曼最优方程

{ V γ ∗ ( s ) = max ⁡ a ∈ A ∑ s ′ ∈ S P s → s ′ a [ R s → s ′ a + γ V γ ∗ ( s ′ ) ] Q γ ∗ ( s , a ) = ∑ s ′ ∈ S P s → s ′ a [ R s → s ′ a + γ max ⁡ a ′ ∈ A Q γ ∗ ( s ′ , a ′ ) ] { \begin{cases} V_{\gamma}^{*}\left( s \right) =\underset{a\in A}{\max}\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ R_{s\rightarrow s'}^{a}+\gamma V_{\gamma}^{*}\left( s' \right) \right]\\ Q_{\gamma}^{*}\left( s,a \right) =\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ R_{s\rightarrow s'}^{a}+\gamma \underset{a'\in A}{\max}Q_{\gamma}^{*}\left( s',a' \right) \right]\\\end{cases}} Vγ(s)=aAmaxsSPssa[Rssa+γVγ(s)]Qγ(s,a)=sSPssa[Rssa+γaAmaxQγ(s,a)]

然而,在现实的强化学习任务中,转移概率、奖赏函数甚至环境中存在哪些状态往往很难得知,因此有模型强化学习在实际应用中不可行。本节借助有模型学习的思想推广到更一般的免模型学习(model-free learning)中,即假设转移概率和环境状态未知,奖赏也仅是根据经验或需求设计

蒙特卡洛强化学习是免模型学习中的一种,其核心思想是使用蒙特卡洛方法来估计各个状态-动作对的值函数。通过对大量的样本进行采样,并根据它们的累积奖励来评估状态-动作对的价值,智能体可以逐步学习到最优策略。

2 策略评估原理

在有模型学习中,采用的是贝尔曼算子迭代进行策略评估,即

Q γ π ( s , a ) = ∑ s ′ ∈ S P s → s ′ a [ R s → s ′ a + γ ∑ a ′ ∈ A π ( s ′ , a ′ ) Q γ π ( s ′ , a ′ ) ] Q_{\gamma}^{\pi}\left( s,a \right) =\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ R_{s\rightarrow s'}^{a}+\gamma \sum_{a'\in A}{\pi \left( s',a' \right) Q_{\gamma}^{\pi}\left( s',a' \right)} \right] Qγπ(s,a)=sSPssa[Rssa+γaAπ(s,a)Qγπ(s,a)]

考虑到动力学特性 P s → s ′ a P_{s\rightarrow s'}^{a} Pssa和状态集合 S S S未知,因此上式无法计算。回归到定义

Q γ π ( s , a ) = E [ R t ] ∣ s t = s , a t = a Q_{\gamma}^{\pi}\left( s,a \right) =\mathbb{E} \left[ R_t \right] \mid_{s_t=s,a_t=a}^{} Qγπ(s,a)=E[Rt]st=s,at=a

可以用蒙特卡洛采样来近似逼近回报期望,即

Q γ π ( s , a ) ≈ 1 n ∑ i = 1 n R t , i Q_{\gamma}^{\pi}\left( s,a \right) \approx \frac{1}{n}\sum_{i=1}^n{R_{t,i}} Qγπ(s,a)n1i=1nRt,i

其中回报 R t , i = ∑ j = t + 1 ∞ γ j − t r j , i R_{t,i}=\sum\nolimits_{j=t+1}^{\infty}{\gamma ^{j-t}r_{j,i}} Rt,i=j=t+1γjtrj,i,问题转换为如何采样这些回报。蒙特卡洛强化学习提出如下的采样方法:

  • 设初始状态为 s 0 s_0 s0并给定终止状态 s T s_T sT
  • s 0 s_0 s0下根据当前策略 π ( a ∣ s 0 ) \pi \left( a|s_0 \right) π(as0)选择一个动作 a 0 a_0 a0
  • s 0 s_0 s0 a 0 a_0 a0确定的条件下,环境转换到下一个状态 s 1 s_1 s1并返回一个奖励 r 1 r_1 r1(这个过程是未知的动力学过程,由环境自身决定而不受智能体影响);
  • 重复上述过程直至达到终止状态 s T s_T sT

称有序数对 ( s t , a t , r t + 1 ) \left( s_t,a_t,r_{t+1} \right) (st,at,rt+1)为一个步骤,重复过程中产生的序列

< s 0 , a 0 , r 1 , s 1 , a 1 , r 2 , ⋯   , s T − 1 , a T − 1 , r T , s T > \left< s_0,a_0,r_1,s_1,a_1,r_2,\cdots ,s_{T-1},a_{T-1},r_T,s_T \right> s0,a0,r1,s1,a1,r2,,sT1,aT1,rT,sT

称为经验轨迹幕(episode)。由于策略 π \pi π是概率分布,因此即使不同幕都达到了给定的终态,中间执行轨迹可能存在差异,但任意两个幕之间独立同分布于 π \pi π

3 策略改进原理

蒙特卡洛强化学习中用来生成采样幕的策略称为行动策略(behavior policy),记为 b b b;实际应用的待评估、待改进的策略称为目标策略(target policy),记为 π \pi π。当 π = b \pi=b π=b时称为同轨策略方法(on-policy),否则称为离轨策略方法(off-policy)。必须指出,用于采样的策略必须是软性策略,即对 ∀ s ∈ S , a ∈ A ( s ) , b ( a ∣ s ) > 0 \forall s\in S,a\in A\left( s \right) ,b\left( a|s \right) >0 sS,aA(s),b(as)>0,若采样策略是确定性策略,则必然导致部分状态-动作对永远不会出现在幕中,造成样本缺失与误差

3.1 同轨蒙特卡洛强化学习

引入单步强化学习的 ϵ \epsilon ϵ-贪心思想,这部分请参考Pytorch深度强化学习1-2:详解K摇臂赌博机模型和ϵ-贪心算法,设

π = b ( a ∣ s ) = { a ∗ = a r g max ⁡ a ∈ A Q π ( s , a ) , 概率 1 − ϵ + ϵ ∣ A ( s ) ∣ A ( s ) / a ∗    , 概率 ϵ ∣ A ( s ) ∣ \pi =b\left( a|s \right) =\begin{cases} a^*=\mathrm{arg}\max _{a\in A}Q^{\pi}\left( s,a \right) , \text{概率}1-\epsilon +\frac{\epsilon}{|A\left( s \right) |}\\ A\left( s \right) / a^*\,\, , \text{概率}\frac{\epsilon}{|A\left( s \right) |}\\\end{cases} π=b(as)={a=argmaxaAQπ(s,a),概率1ϵ+A(s)ϵA(s)/a,概率A(s)ϵ

则算法流程如表所示

在这里插入图片描述

3.2 离轨蒙特卡洛强化学习

同轨策略中虽然保证了采样的随机性,但导致了以下问题

  • 引入先验误差: ϵ \epsilon ϵ是人为经验设置的,不合理的 ϵ \epsilon ϵ会为策略带来错误的先验分布;
  • 目标策略失去确定性

因此引入离轨策略,将行动策略和目标策略分而治之。

将基于策略 π \pi π的回报期望展开为回报与其概率分布加权的形式

Q π ( s , a ) = E π [ R ] ∣ s t = s , a t = a = ∑ R ⋅ P ( r t + 1 , s t + 1 , ⋯   , s T − 1 , a T − 1 , s T ∣ s t = s , a t = a ) \begin{aligned}Q^{\pi}\left( s,a \right) &=\mathbb{E} _{\pi}\left[ R \right] \mid_{s_t=s,a_t=a}^{}\\&=\sum{R\cdot P\left( r_{t+1},s_{t+1},\cdots ,s_{T-1},a_{T-1},s_T|s_t=s,a_t=a \right)}\end{aligned} Qπ(s,a)=Eπ[R]st=s,at=a=RP(rt+1,st+1,,sT1,aT1,sTst=s,at=a)

其中概率分布为从当前步骤到幕结束所有元素的联合分布。

根据马尔科夫性,下一个时刻的状态只取决于当前状态,则

Q π ( s , a ) = ∑ R ⋅ P ( r t + 1 , s t + 1 ∣ s t = s , a t = a ) π ( a t + 1 ∣ s t + 1 ) P ( r t + 2 , s t + 2 ∣ s t + 1 , a t + 1 ) ⋯ = ∑ R ∏ i = t + 1 T − 1 π ( a i ∣ s i ) P ( r i , s i ∣ s i − 1 , a i − 1 ) P ( s T ∣ s T − 1 , a T − 1 ) = ∑ ∏ i = t + 1 T − 1 π ( a i ∣ s i ) b ( a i ∣ s i ) [ R ∏ i = t + 1 T − 1 b ( a i ∣ s i ) P ( r i , s i ∣ s i − 1 , a i − 1 ) P ( s T ∣ s T − 1 , a T − 1 ) ] = ∑ ( ρ t + 1 : T − 1 R ) ∏ i = t + 1 T − 1 b ( a i ∣ s i ) P ( r i , s i ∣ s i − 1 , a i − 1 ) P ( s T ∣ s T − 1 , a T − 1 ) = E b [ ρ t + 1 : T − 1 R ] ∣ s t = s , a t = a \begin{aligned}Q^{\pi}\left( s,a \right) &=\sum{R\cdot P\left( r_{t+1},s_{t+1}|s_t=s,a_t=a \right) \pi \left( a_{t+1}|s_{t+1} \right) P\left( r_{t+2},s_{t+2}|s_{t+1},a_{t+1} \right)}\cdots \\&=\sum{R\prod_{i=t+1}^{T-1}{\pi \left( a_i|s_i \right)}P\left( r_i,s_i|s_{i-1},a_{i-1} \right) P\left( s_T|s_{T-1},a_{T-1} \right)}\\&=\sum{\prod_{i=t+1}^{T-1}{\frac{\pi \left( a_i|s_i \right)}{b\left( a_i|s_i \right)}}\left[ R\prod_{i=t+1}^{T-1}{b\left( a_i|s_i \right) P\left( r_i,s_i|s_{i-1},a_{i-1} \right) P\left( s_T|s_{T-1},a_{T-1} \right)} \right]}\\&=\sum{\left( \rho _{t+1:T-1}R \right)}\prod_{i=t+1}^{T-1}{b\left( a_i|s_i \right) P\left( r_i,s_i|s_{i-1},a_{i-1} \right) P\left( s_T|s_{T-1},a_{T-1} \right)}\\&=\mathbb{E} _b\left[ \rho _{t+1:T-1}R \right] \mid_{s_t=s,a_t=a}^{}\end{aligned} Qπ(s,a)=RP(rt+1,st+1st=s,at=a)π(at+1st+1)P(rt+2,st+2st+1,at+1)=Ri=t+1T1π(aisi)P(ri,sisi1,ai1)P(sTsT1,aT1)=i=t+1T1b(aisi)π(aisi)[Ri=t+1T1b(aisi)P(ri,sisi1,ai1)P(sTsT1,aT1)]=(ρt+1:T1R)i=t+1T1b(aisi)P(ri,sisi1,ai1)P(sTsT1,aT1)=Eb[ρt+1:T1R]st=s,at=a

其中 ρ t + 1 : T − 1 = ∏ i = t + 1 T − 1 π ( a i ∣ s i ) / b ( a i ∣ s i ) \rho _{t+1:T-1}=\prod\nolimits_{i=t+1}^{T-1}{{{\pi \left( a_i|s_i \right)}/{b\left( a_i|s_i \right)}}} ρt+1:T1=i=t+1T1π(aisi)/b(aisi)重要性因子,关联了行动策略与目标策略。不妨取行动策略 b b b为目标策略 π \pi π ϵ \epsilon ϵ贪心形式进行采样,而目标策略仍保持确定性策略,具体算法流程如表所示。

在这里插入图片描述


🔥 更多精彩专栏

  • 《ROS从入门到精通》
  • 《Pytorch深度学习实战》
  • 《机器学习强基计划》
  • 《运动规划实战精讲》

👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇

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

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

相关文章

centos安装Python3之后yum不能使用异常

场景&#xff1a; 需要在centos上安装Python3&#xff0c;但是安装Python3之后出现yum不能使用的问题。 问题描述 在centos上安装python3之后出现yum使用不了问题&#xff0c;使用yum会报如下信息&#xff1a; [roothadoop101~]# yum install wgetFile "/usr/bin/yum&q…

Synchronized关键字的底层原理

Synchronized实现 Synchronized创建的时候一个互斥的对象锁&#xff0c;每次只有一个线程可以获取该锁。 其底层主要是基于Monitor实现的&#xff0c;在对象的对象头中存储了MarkWord存储的就是Monitor的地址。 对象的内存结构 对象在内存中存储主要分为三个部分&#xff1a…

【IEEE独立出版|EI会议征稿】2024年第四届消费电子与计算机工程国际学术会议(ICCECE 2024)

2024年第四届消费电子与计算机工程国际学术会议&#xff08;ICCECE 2024&#xff09; 2024 4th International Conference on Consumer Electronics and Computer Engineering 进入21世纪以来&#xff0c;计算机技术的高速发展带来了消费电子产品的快速更迭。在技术迅速发展历…

docker配置redis主从、哨兵集群

docker配置redis主从、哨兵集群 搭建redis主从 准备工作 在/usr/local/software/redis/文件夹下建立如下的文件夹、文件 rootlocalhost redis]# mkdir -p 6379/conf 6379/data 6379/log [rootlocalhost redis]# mkdir -p 6380/conf 6380/data 6380/log [rootlocalhost re…

基于ssm的疫苗预约系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于ssm的疫苗预约系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring Spri…

【Python动漫系列】喜羊羊(完整代码)

文章目录 喜羊羊环境需求完整代码程序分析系列文章喜羊羊 喜羊羊是中国大陆一部儿童动画片《喜羊羊与灰太狼》中的主角之一。这部动画片自2005年开始播出,成为许多中国儿童最喜欢的动画之一。 喜羊羊是一只体型较小、毛色洁白的绵羊,性格机灵活泼,聪明机智。他是一只勇敢而…

python获取阿里云云解析dns的域名解析记录

最近由于工作原因接触到阿里云的服务&#xff0c;我需要实时获取所有的域名信息&#xff0c;用于对其进行扫描&#xff0c;因此写了一个自动化爬取脚本 给需要的人分享。 &#xff08;阿里云有官方的demo&#xff0c;有兴趣的可以自己看一下&#xff0c;后面也会放链接&#xf…

Cesium 顶点吸附和区域拾取

Cesium 顶点吸附和区域拾取 基于深度实现可以自定义拾取范围大小 // 顶点吸附// const result pickAreaHelper.pickNearest(viewer.scene, movement.endPosition, 32, 32);// 区域拾取const result pickAreaHelper.pickArea(viewer.scene, movement.endPosition, 32, 32);顶…

深度学习——第3章 Python程序设计语言(3.2 Python程序流程控制)

3.2 Python程序流程控制 目录 1.布尔数据类型及相关运算 2.顺序结构 3.选择&#xff08;分支&#xff09;结构 4.循环结构 无论是在机器学习还是深度学习中&#xff0c;Python已经成为主导性的编程语言。而且&#xff0c;现在许多主流的深度学习框架&#xff0c;例如PyTorc…

揭秘强化学习:Python 实践指南

一、说明 强化学习 (RL) 是机器学习和人工智能 (AI) 的一个子领域&#xff0c;专注于开发能够通过与环境交互进行学习的智能代理。与传统的监督和无监督学习不同&#xff0c;强化学习主要关注动态、顺序环境中的决策。它在人工智能中具有重要意义&#xff0c;特别是在自主代理必…

MySQL 忘记root密码后重置密码操作

在忘记 MySQL 密码的情况下&#xff0c;可以通过 --skip-grant-tables 关闭服务器的认证&#xff0c;然后重置 root 的密码&#xff0c;具体操作步骤如下。 步骤 1)&#xff1a;关闭正在运行的 MySQL 服务。打开 cmd 进入 MySQL 的 bin 目录。 步骤 2)&#xff1a;输入mysqld -…

【面试经典150 | 二分查找】搜索二维矩阵

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a;二分查找 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的数据结构等…

他山之石,可以攻玉|银行业数据中心数字化转型之模型篇 04(完结)

导语&#xff1a;他山之石&#xff0c;可以攻玉&#xff5c;银行业数据中心数字化转型之模型篇 04&#xff08;完结&#xff09; 银行业数据中心数字化转型是一项系统性工程既涉及管理层面转型——包括数字化转型战略、基础架构和技术架构转型、技术创新和知识体系转型&#xf…

Android 手机的高级终端 Termux 安装使用、busybox、安卓 手机 web

From&#xff1a;https://www.sqlsec.com/2018/05/termux.html Termux 高级终端安装使用配置教程 &#xff1a;https://www.cnblogs.com/cutesnow/p/11430833.html 神器Termux 的使用记录&#xff1a;https://cloud.tencent.com/developer/article/1609398 ​adb shell 下使用 …

【IEEE独立出版|Ei会议征稿中】第五届信息科学与并行、分布式处理国际学术会议(ISPDS 2024)

第五届信息科学与并行、分布式处理国际学术会议&#xff08;ISPDS 2023&#xff09; 2023 5th International Conference on Information Science, Parallel and Distributed Systems 第五届信息科学与并行、分布式处理国际学术会议&#xff08;ISPDS 2023&#xff09;定于20…

使用Redis构建简易社交网站(2)-处理用户关系

目的 本文目的&#xff1a;实现用户关注和取消关注功能。&#xff08;完整代码附在文章末尾&#xff09; 相关知识 在我之前的文章 《使用Redis构建简易社交网站(1)-创建用户与动态界面》中提到了如何实现简易社交网站中创建新用户和创建新动态功能。 那这篇文章将教会你掌…

Java 使用Graphics生成海报图片(附效果图)

生成流程 1、创建画布 2、开启画图 3、画布上加载背景图片 4、画布上指定坐标绘制二维码&#xff08;关于二维码实现的参考文后的链接&#xff09; 5、将最终的图存放在本地 6、将图片url返回给前端 主要代码&#xff1a; PostMapping(value "/getPoster")public R…

I/O口接口扩展----82C55

目录 一.扩展的I/O接口功能 二.端口的编址 1.独立编址 2.统一编制 三.I/O数据的传送方式 四.I/O接口电路----82C55 1.82C55的引脚及其内部结构 2.工作方式选择控制字及端口PC置位/复位控制字 3.82C55的三种工作方式 (1)方式0 (2)方式1 (3)方式2 4.AT89S52单片机与…

麒麟V10安装kerberos客户端

麒麟V10系统安装kerberos客户端 当系统具备yum镜像源的时候需要执行安装命令 yum install krb5-devel krb5-client krb5-libs -y 会提示报错 “未找到匹配的参数:krb5-client” 此时我们需要手动安装krb5-client 安装包链接放到了这里 链接: https://pan.baidu.com/s/1x1YVr6…

k8s中批量处理Pod应用的Job和CronJob控制器、处理守护型pod的DaemonSet控制器介绍

目录 一.Job控制器 1.简介 2.Jobs较完整解释 3.示例演示 4.注意&#xff1a;如上例的话&#xff0c;执行“kubectl delete -f myJob.yaml”就可以将job删掉 二.CronJob&#xff08;简写为cj&#xff09; 1.简介 2.CronJob较完整解释 3.案例演示 4.如上例的话&#xf…