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

目录

  • 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.mzph.cn/news/195343.shtml

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

相关文章

4382系列数字荧光示波器

4382系列数字荧光示波器 简述&#xff1a; 4382系列手持式数字荧光示波器具有8个产品型号&#xff0c;带宽200MHz、350MHz、500MHz、1GHz&#xff0c;最高采样率5GSa/s&#xff0c;最大存储深度60kpts/CH&#xff0c;最快波形捕获率10万个波形/秒&#xff0c;独创的Any Acquire…

专业课145+总分440+东南大学920考研专业基础综合信号与系统数字电路经验分享

个人情况简介 今年考研440&#xff0c;专业课145&#xff0c;数一140&#xff0c;期间一年努力辛苦付出&#xff0c;就不多表了&#xff0c;考研之路虽然艰难&#xff0c;付出很多&#xff0c;当收获的时候&#xff0c;都是值得&#xff0c;考研还是非常公平&#xff0c;希望大…

SpringBoot错误处理机制解析

SpringBoot错误处理----源码解析 文章目录 1、默认机制2、使用ExceptionHandler标识一个方法&#xff0c;处理用Controller标注的该类发生的指定错误1&#xff09;.局部错误处理部分源码2&#xff09;.测试 3、 创建一个全局错误处理类集中处理错误&#xff0c;使用Controller…

基于java技术的电子商务支撑平台

摘 要 随着网络技术的发展&#xff0c;Internet变成了一种处理日常事务的交互式的环境。互联网上开展各种服务已经成为许多企业和部门的急切需求。Web的普遍使用从根本上改变了人们的生活方式、工作方式&#xff0c;也改变了企业的经营方式和服务方式。人们可以足不出户办理各…

财务管理在IT服务管理中的重要作用

官方网站 www.itilzj.com 文档资料: wenku.itilzj.com 财务管理作为一种管理组织财务资源的方法&#xff0c;在IT服务领域扮演着关键的角色。其涵盖的范围涉及预算编制、成本控制、投资决策、财务报告和绩效评估等多个方面&#xff0c;直接关系到IT服务的财务健康和整体运作。…

Csharp(C#)无标题栏窗体拖动代码

C#&#xff08;C Sharp&#xff09;是一种现代、通用的编程语言&#xff0c;由微软公司在2000年推出。C#是一种对象导向的编程语言&#xff0c;它兼具C语言的高效性和Visual Basic语言的易学性。C#主要应用于Windows桌面应用程序、Windows服务、Web应用程序、游戏开发等领域。C…

蓝桥杯每日一题2023.12.3

题目描述 1.移动距离 - 蓝桥云课 (lanqiao.cn) 题目分析 对于此题需要对行列的关系进行一定的探究&#xff0c;所求实际上为曼哈顿距离&#xff0c;只需要两个行列的绝对值想加即可&#xff0c;预处理使下标从0开始可以更加明确之间的关系&#xff0c;奇数行时这一行的数字需…

做外贸如何写开发信?外贸邮件营销怎么写?

外贸业务员写开发信的技巧&#xff1f;撰写客户开发信模板详解&#xff01; 外贸经营是一项竞争激烈的行业&#xff0c;写好开发信是吸引客户、建立合作关系的重要一环。蜂邮EDM将为您详细介绍如何撰写出色的开发信&#xff0c;以吸引客户的眼球&#xff0c;引领他们与您建立联…

【数电笔记】17-具体函数的卡诺图填入

目录 说明&#xff1a; 用卡诺图表示逻辑函数 1. 基本步骤 2. 例题 2.1 例1-真值表转换卡诺图 2.2 例2-标准与或式画卡诺图 2.3 例3-非标准与或式画卡诺图&#xff08;常见,重点掌握&#xff09; 说明&#xff1a; 笔记配套视频来源&#xff1a;B站&#xff1b;本系列笔…

el-pagination 纯前端分页

需求&#xff1a;后端把所有数据都返给前端&#xff0c;前端进行分页渲染。 实现思路&#xff1a;先把数据存储到一个大数组中&#xff0c;然后调用方法进行切割。主要使用数组的slice方法 所有代码&#xff1a; html <template><div style"padding: 20px&qu…

分享74个节日PPT,总有一款适合您

分享74个节日PPT&#xff0c;总有一款适合您 74个节日PPT下载链接&#xff1a;https://pan.baidu.com/s/18YHKkyJsplx-Gjj7ofpFrg?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易…

短波红外相机的原理及应用场景

短波红外 (简称SWIR&#xff0c;通常指0.9~1.7μm波长的光线) 是一种比可见光波长更长的光。这些光不能通过“肉眼”看到&#xff0c;也不能用“普通相机”检测到。由于被检测物体的材料特性&#xff0c;一些在可见光下无法看到的特性&#xff0c;却能在近红外光下呈现出来&…

深度学习数据集的划分(加载kaggle的dog数据,多gpu训练加载参数)待更新

待更新 把dog-breed-identification.zip 文件放到data文件目录下&#xff1a; 该文件解压之后得到如下&#xff1a; 遍历train中的所有文件&#xff0c;train_file.split(‘.’)[0]是根据.划分这个文件名&#xff0c;得到前缀和后缀&#xff0c;下标为0的是去掉后缀的文件名…

国家图书馆论文检索证明申请步骤

国家图书馆论文检索证明申请步骤 登录国家图书馆 咨询提交平台 点击论文收引查证 添加附件这一块&#xff0c;需要自己制作一个有格式的EXCEL 卷&#xff0c;期&#xff0c;页码如何查询&#xff1f; 输入自己的联系方式等待工作人员联系即可

接口获取数据控制台打印有值但是展开又没有了

谷歌浏览器只会展现响应式数据最后的结果&#xff0c;证明原来接口是有值的&#xff0c;后面对这个数据进行操作后&#xff0c;最终没有值了。所以对数据进行操作时最好对数据进行一次深拷贝 JSON.parse(JSON.stringify(data))

堆排序(C语言)

前言 在上一篇内容&#xff1a;大小堆的实现&#xff08;C语言&#xff09;&#xff0c;我们实现了关于创建大小堆的各函数与实现。但是如果突然要使用一个堆排序但是此时并没有一个现成的堆&#xff0c;这就需要花费时间去新建实现堆的插入删除这些操作从而实现一个堆&#xf…

通达信指标公式18:教你2行代码,选股出含有龙字辈的股票

“问财”是同花顺平台上一款专业的财经AI助手&#xff0c;融合了自然语言和语音问答机器人。它提供了多维度的股票、基金、债券数据&#xff0c;并支持自然语言搜索&#xff0c;能够轻松查找所需的信息。对于个人投资者来说&#xff0c;问财最好用的功能是它的条件选股和短线复…

【C++11/线程相关】thread类编写多线程、mutex互斥锁和lock_guard、atomic原子类型

目录 通过thread类编写C多线程程序线程间互斥——mutex互斥锁和lock_guardmutex互斥锁lock_guard 线程间通信C11实现生产者与消费者模型 基于CAS操作的atomic原子类型 橙色 通过thread类编写C多线程程序 为什么结果没有子线程中所打印的字符串呢&#xff1f;因为通过detach进…

代码随想录算法训练营 ---第五十三天

第一题&#xff1a; 简介&#xff1a; 本题和昨天的最大重复子串问题很相似&#xff0c;只不过本题不一定是连续的。 动规五部曲分析如下&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i][j]&#xff1a;长度为i-1 的字符串text1与长度为j-1的…

Vue实现图片预览(Viewer.js)

摘要&#xff1a; vue项目开发中遇到一个图片预览的需求&#xff0c;可以切换下一张&#xff0c;就是花里胡哨的&#xff0c;所以找viewer.js的插件 npm install v-viewer -S在项目main.js中加入&#xff1a; Viewer.setDefaults用于更改默认配置&#xff0c;比如我不想要显示…