强化学习——学习笔记2

在上一篇文章中对强化学习进行了基本的概述,在此篇文章中将继续深入强化学习的相关知识。

一、什么是DP、MC、TD?

动态规划法(DP):动态规划法离不开一个关键词,拆分 ,就是把求解的问题分解成若干个子阶段,前一问题的结果就是求解后一问题的子结构。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最后一个子问题就是初始问题的解。
举一个简单的例子:
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第n个月的兔子总数为多少?

对于这个问题,我们可以根据月份把问题划分为n个阶段,每个月的兔子数,都会等于前一个月的兔子数加上这个月新出生的兔子数,
所以 第n个月的兔子数=第n-1个月的兔子数+新出生的兔子数,而 新出生的兔子数=有繁殖能力的兔子数=两个月前的兔子数,即:第n个月的兔子数=第n-1个月的兔子数+第n-2个月的兔子数。
看着有点混乱?
再举一个例子:
有一个背包,可以装载重量为5kg的物品。
​ 有4个物品,他们的重量和价值如下。
​ 背包:载重5kg
​ 物品1
​ 重量: 1kg
​ 价值:¥3
​ 物品2
​ 重量:2kg
​ 价值:¥4
​ 物品3:
​ 重量: 3kg
​ 价值:¥5
​ 物品4
​ 重量:4kg
​ 价值:¥6
​ 那么请问,在不得超过背包的承重的情况下,将哪些物品放入背包,可以使得总价值最大?

对于上题,总重量是5kg,从四个物品中选,我们要求的问题就是:F(5,4)。
对于第四个物品就只有两种情况,我们可以选择选,或者是不选,不选的话就还是5kg,只从前面三个物品去选,F(5,3)。选的话就是还剩下1kg,从前面三个去选,F(1,3)
则有如下状态转移计算:
F ( 5 , 4 ) = m a x { F ( 1 , 3 ) + 6 , F ( 5 , 3 ) } F(5,4) = max \{ F(1,3) + 6, F(5,3) \} F(5,4)=max{F(1,3)+6,F(5,3)}

F ( W , N ) = m a x { F ( W − W n , N − 1 ) + V n , F ( W , N − 1 ) } F(W,N) =max \{F(W-W_n, N-1)+V_n,F(W,N-1)\} F(W,N)=max{F(WWn,N1)+Vn,F(W,N1)}(w是重量,n是从前n个去选, W n W_n Wn是第n个的重量, V n V_n Vn是第n个的价值)
当重量只剩下0kg的时候,就没有能够选择的物品了,最大价值就是0,所以F(0,n)=0,
当只是剩下的重量大于0,但是已经遍历到从前1个物品中选择时,那么能选择的物品就只有第一个,最大价值就是3,即F(n,1)=3。

从上面两个问题可以看出,动态规划一般只能应用于有最优子结构的问题。最优子结构的意思是局部最优解能决定全局最优解(对有些问题这个要求并不能完全满足,故有时需要引入一定的近似)。简单地说,问题能够分解成子问题来解决。

动态规划算法一般分为以下4个步骤:
1、描述最优解的结构
2、递归定义最优解的值
3、按自底向上的方式计算最优解的值 //此3步构成动态规划解的基础。
4、由计算出的结果构造一个最优解 //此步如果只要求计算最优解的值时,可省略

换言之,动态规划方法的最优化问题的两个要素:最优子结构性质,和子问题重叠性质

最优子结构
如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质(即满足最优化原理)。意思就是,总问题包含很多个子问题,而这些子问题的解也是最优的。
重叠子问题
子问题重叠性质是指在用递归算法自顶向下对问题进行求解时,每次产生的子问题并不总是新问题,有些子问题会被重复计算多次。动态规划算法正是利用了这种子问题的重叠性质,对每一个子问题只计算一次,然后将其计算结果保存在一个表格中,当再次需要计算已经计算过的子问题时,只是在表格中简单地查看一下结果,从而获得较高的效率。

如果已经理解了上文中的动态规划算法基本知识,我们就可以蒋动态规划算法应用到强化学习中了。

求解最优策略 v ∗ ( s ) v_∗(s) v(s)
在这里插入图片描述

1、最优策略可以通过最大化 q π ( s , a ) q_π(s,a) qπ(s,a)找到。
在上一篇文章中提到如下公式:
在这里插入图片描述
在这里插入图片描述
2、从上面两个公式中可以看出,若想 q π ( s , a ) q_π(s,a) qπ(s,a)最大,则需要 π ∗ ( a ∣ s ) π_∗(a|s) π(as)最大,也就是 π ∗ ( a ∣ s ) = 1 π_∗(a|s)=1 π(as)=1

结合上面两个理论可以得出下式:
在这里插入图片描述
同时在上一篇文章中提出下式:
在这里插入图片描述
综合以上两个公式我们最终得出:
在这里插入图片描述
回归到DP问题,相当于当知道奖励函数和状态转换函数时,便可以根据下一个状态的价值来更新当前状态的价值,意味着可以把计算下一个可能状态的价值当成一个子问题,而把计算当前状态的价值看做当前问题。
下面展示DP求解最优策略的算法流程
在这里插入图片描述
蒙特卡洛法(MC):也称为统计模拟方法,就是通过大量的随机样本来估算或近似真实值,比如近似估算圆的面经、近似定积分、近似期望、近似随机梯度。
有如下例子:
可以通过这个式子来近似计算:圆的面积/ 正方形的面积 = 圆中点的个数/正方形中点的个数
在这里插入图片描述
类似的,也可以用蒙特卡洛法来估计一个策略在一个马尔可夫决策过程中的状态价值。考虑到 一个状态的价值是它的期望回报,那么如果我们用策略在马尔科夫决策过程上采样很多条序列,然后计算从这个状态出发的回报再求其期望。公式如下:
在这里插入图片描述
时序差分法(TD):
当面对状态价值函数的求解时
在这里插入图片描述
动态规划(DP)会把上述第三个等式的估计值作为目标,不是因为DP要求需要环境模型本身提供期望值,而是因为真实的 v π ( S t + 1 ) v_π(S_{t+1}) vπ(St+1)是未知的,所以只能使用当前的估计值 v π ( S t + 1 ) v_π(S_{t+1}) vπ(St+1)来替代:
在这里插入图片描述
且DP求解状态 S t S_t St的状态值函数时,需要利用所有后续状态 S t + 1 S_{t+1} St+1
在这里插入图片描述
蒙特卡洛方法(MC)会上述把第一个等式的估计值作为目标,毕竟第一个等式中的期望值是未知的,所以我们用样本回报来代替实际的期望回报。但MC求解状态 S t S_t St的状态值函数时,需要等一个完整序列结束,因为只有到此时, G t G_t Gt才是已知的:
在这里插入图片描述
而时序差分(TD)既要采样得到上述第一个等式的期望值,而且还要通过使用上述第三个等式中当前的估计值V来替代真实值 v π v_π vπ且TD每过一个time step就利用奖励 R t + 1 R_{t+1} Rt+1和值函数 V ( S t + 1 ) V(S_{t+1}) V(St+1)更新一次(当然,这里所说的one-step TD 方法,也可以两步一更新,三步一更新….)

考虑到 G t = R t + 1 + γ V ( S t + 1 ) G_t=R_t+1+γV(S_{t+1}) Gt=Rt+1+γV(St+1),可得:
在这里插入图片描述
TD与DP一致的是,时序差分方法也无需等待交互的最终结果,而可以基于下一个时刻的收益 R t + 1 R_{t+1} Rt+1和估计值 V ( S t + 1 ) V(S_{t+1}) V(St+1)就可以更新当前状态的价值函数,不需像MC等到N步以后即等一个完整序列结束后才能更新 V ( S t ) V(S_t) V(St)

总之,TD结合了DP和MC,与DP一致的点是与MC不一致,与DP不一致的点恰又与MC一致,某种意义上来说,结合了前两大方法各自的优点,从而使得在实际使用中更灵活,具体而言如下图所示:
在这里插入图片描述
顺带再举一个例子,好比行军打仗时,为了得到更好的行军路线,将军派一人前去探路
MC的做法相当于一条道走到黑 没走个10公里不回头;
DP相当于所有道比如10条道 每条道都走个1公里 不错过任何一条可能成为最好道的可能,最后10条道都走完1公里后才返回汇报;
TD则相当于先选一条道走个1公里即返回汇报,之后再走下一条道的1公里;

参考自:https://blog.csdn.net/v_JULY_v/article/details/128965854

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

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

相关文章

【JavaScript脚本宇宙】点燃你的Web开发:数据绑定和MV*框架

逐一剖析:JavaScript框架和库的概述、特点与应用 前言 在当今技术日新月异的时代,JavaScript库和框架已成为前端开发的重要工具。这篇文章将详细介绍六种不同的JavaScript库和框架,帮助读者了解他们的主要特性、使用示例和适用场景。 欢迎订…

gif帧数修改怎么操作?一键掌握GIF帧数修改技巧!

gif帧数修改怎么操作?在数字化信息爆炸的时代,GIF动图因其生动有趣的特性而备受广大网友喜爱。然而,很多时候我们可能会遇到GIF动图帧数过多或过少,导致动画效果不尽如人意的情况。那么,如何对GIF动图的帧数进行修改呢…

探索微软Edge开发者工具:优化前端开发的艺术与科学

探索微软Edge开发者工具:优化前端开发的艺术与科学 引言:Edge开发者工具概览一、基础操作:步入DevTools的大门1.1 启动与界面布局1.2 快速导航与定制 二、元素审查与样式调整2.1 精准元素选取2.2 实时CSS编辑2.3 自动完成与内联文档 三、Java…

YOLOv10最详细全面讲解1- 目标检测-准备自己的数据集(YOLOv5,YOLOv8均适用)

YOLOv10没想到出来的如此之快,作为一名YOLO的爱好者,以YOLOv5和YOLOv8的经验,打算出一套从数据集装备->环境配置->训练->验证->目标追踪全系列教程。请大家多多点赞和收藏!!!YOLOv5和YOLOv8亲测…

dubbo复习:(13)把服务划分为不同的group 和version,只有服务端和客户端group和version匹配才能通信

一、接口定义 package cn.edu.tju.service;public interface DevelopService {String invoke(String param); }二、两个版本的实现: package cn.edu.tju.service;import org.apache.dubbo.config.annotation.DubboService;DubboService(group "group1"…

bert模型数据集加载方式

数据集构造 无论是机器学习还是深度学习对于数据集的构造都是十分重要。 现记录一下PyTorch 的 torch.utils.data.Dataset 类的子类。Dataset 类是PyTorch框架中用于处理数据的基本组件,它允许用户定义自己的数据集类,以满足特定任务的需求。 Dataset…

重学英语:输出的重要性

精通一门外语的四要素:听,说,读,写 输入:听,读 输出:写,说 因为输入是我们可以单独完成,不需要有人互动,所以我们做得最多 输出练习做得很少,…

Redis中的数据结构与内部编码

本篇文章主要是对 Redis 常见的数据结构进行讲解,同时还对其所对应的不同的内部编码进行讲解。希望本篇文章会对你有所帮助。 文章目录 一、五大数据结构 二、数据结构对应的编码方式 String hash list set zset 🙋‍♂️ 作者:Ggggggtm &…

js 面试题学习笔记一

1、什么是防抖和节流?有什么区别?如何实现? 防抖:触发高频事件后N秒内函数只会执行一次,如果N秒高频事件再次被触发,则重新计算时间。(a时间触发,5秒内执行一次,但是第4…

10G UDP协议栈 (9)UDP模块

目录 一、UDP协议简单介绍 二、UDP功能实现 三、仿真 一、UDP协议简单介绍 UDP协议和TCP协议同位于传输层,介于网络层(IP)和应用层之间:UDP数据部分为应用层报文,而UDP报文在IP中承载。 UDP 报文格式相对于简单&am…

电脑出现:excel词典(xllex.dll)文件丢失或损坏的错误提示怎么办?有效的将丢失的xllex.dll修复

当遇到 Excel 提示“词典 (xllex.dll) 文件丢失或损坏”的问题时,通常意味着该动态链接库文件(Dynamic Link Library,DLL),它与拼写检查功能相关联的,无法被正确找到或者合适地使用。那么有什么办法可以解决…

LLVM技术在GaussDB等数据库中的应用

目录 LLVM和数据库 LLVM适用场景 LLVM对所有类型的SQL都会有收益吗? LLVM在OLTP中就一定没有收益吗? GaussDB中的LLVM 1. LLVM在华为应用于数据库的时间线 2. GaussDB LLVM实现简析 3. GaussDB LLVM支持加速的场景 支持LLVM的表达式&#xff1a…

vue项目出现多次ElMessage

问题: 解决方法: let message null if (message null) { message ElMessage.error(“登录过期,请重新登录”); } 最终效果:只出现一个弹框

Orange AIpro Color triangle帧率测试

OpenGL概述 OpenGL ES是KHRNOS Group推出的嵌入式加速3D图像标准,它是嵌入式平台上的专业图形程序接口,它是OpenGL的一个子集,旨在提供高效、轻量级的图形渲染功能。现推出的最新版本是OpenGL ES 3.2。OpenGL和OpenCV OpenCL不同,…

实操专区-第15周-课堂练习专区-漏斗图与金字塔图

实操专区-第15周-课堂练习专区-漏斗图 下载安装ECharts,完成如下样式图形。 代码和截图上传 基本要求:下图3选1,完成代码和截图 完成 3.1.3.16 漏斗图中的任务点 基本要求:2个选一个完成,多做1个加2分。 请用班级学号姓…

银行对公贷款软件业务流程详解

对公贷款业务是指商业银行向企事业单位提供资金支持,用于资本扩充、生产经营、项目建设等方面的融资。其目的在于支持企事业单位的发展,推动经济增长。通过提供资金支持,企事业单位可以获得必要的资金来扩大生产规模、提高生产能力、研发新产…

第8周 分布式事务与数据一致性主流解决方案落地

第8周 分布式事务与数据一致性主流解决方案落地 1. 最终一致性原理与解析2. 微服务的解耦3. 本地消息存储4. 自定义事务管理器5. 本地消息删除********************************************************************************** 本周拓展数据的一致性落地,采用弱…

【Java EE】网络原理——HTTP请求

目录 1.认识URL 2.认识“方法(method)” 2.1GET方法 2.1.1使用Fiddler观察GET请求 2.1.2 GET请求的特点 2.2 POST方法 2.2.1 使用FIddler观察POST方法 2.2.2 POST请求的特点 3.认识请求“报头”(header) 3.1 Host 3.2 C…

Spring MVC 工作流程源码分析

前言: 我们知道 Spring MVC 的核心是前端控制器 DispatcherServlet,客户端所有的请求都会交给 DispatcherServlet 来处理,本篇我我们来分析 Spring MVC 处理客户端请求的流程,也就是工作流程。 Sping MVC 只是储备传送门&#x…

Java整合EasyExcel实战——3(上下列相同合并单元格策略)

参考&#xff1a;https://juejin.cn/post/7322156759443095561?searchId202405262043517631094B7CCB463FDA06https://juejin.cn/post/7322156759443095561?searchId202405262043517631094B7CCB463FDA06 准备条件 依赖 <dependency><groupId>com.alibaba</gr…