19. 蒙特卡洛强化学习之策略控制

文章目录

1. MC学习中的策略控制是什么

根据策略评估阶段得到的策略 π \pi π下的行为值函数 Q ( s , a ) Q(s,a) Q(s,a)使用贪心算法改进策略的过程.

2. 基于贪心算法的策略改进的基本描述

  • 不考虑数值计算误差的贪心算法
    { a m a x = arg max ⁡ a ∈ A ( Q ( s , a ) ) π ( a ∣ s ) = { 1 a = a m a x 0 a ≠ a m a x s ∈ S \begin{cases} a_{max} = \argmax_{a\in A}\left(Q(s,a) \right)\\ \pi(a|s) = \begin{cases} 1\qquad a=a_{max}\\ 0\qquad a\ne a_{max} \end{cases} \end{cases}\qquad s\in S amax=argmaxaA(Q(s,a))π(as)={1a=amax0a=amaxsS
    不考虑数值计算误差的贪心算法,求得的最优行为只有1个( a m a x a_{max} amax),实际中,可能有两个不同的a的值,都使得Q(s,a)取最大值,甚至由于计算误差,原本有两个最优a,最后变成了一个,这可能会导致最优动作的选取不全面。
  • 考虑数值计算误差的贪心算法
    • 这一算法考虑了数值计算误差
    • 设定一个较小的数值计算误差阈值 ϵ > 0 \epsilon>0 ϵ>0
    • 则: a = b ⇔ ∣ a − b ∣ < ϵ a=b\Leftrightarrow |a-b|<\epsilon a=bab<ϵ
    • 则实际编程中按如下表达式更新策略
      { Q m a x ( s ) = max ⁡ a ∈ A Q ( s , a ) A m a x ( s ) = { a ∣ a ∈ A 且 Q m a x − Q ( s , a ) < ϵ } π ∗ ( a ∣ s ) = { 1 / l e n g t h ( A m a x ( s ) ) a ∈ A m a x ( s ) 0 a ∉ A m a x ( s ) s ∈ S \begin{cases} Q_{max}(s)&=\max_{a\in A} Q(s,a)\\ A_{max}(s)&=\{a|a\in A且Q_{max}-Q(s,a)<\epsilon \}\\ \pi^*(a|s)&=\begin{cases} 1/\mathrm{length}\left(A_{max}(s)\right) \quad a\in A_{max}(s)\\ 0 \qquad a\notin A_{max}(s) \end{cases} \end{cases}\qquad s\in S Qmax(s)Amax(s)π(as)=maxaAQ(s,a)={aaAQmaxQ(s,a)<ϵ}={1/length(Amax(s))aAmax(s)0a/Amax(s)sS

3.MC学习中完全使用贪心算法可行否

不可行!!!

为什么?

  • Q(s,a)是利用交互生成的完整轨迹更新自身的,理论上,只有当全部完整轨迹覆盖所有可能的状态行为对(s,a),Q(s,a)的估计值才为真实值,实际中不可能满足这一条件。
    • 例如:我们要根据12月的哪一天(相当于31个状态),从桂林市挑选性价比最高的米粉店吃米粉(相当于从行为空间中选取最优行为),理论上,我们应该每年12月份每一天,选择1个桂林米粉店吃米粉,对31天的每一天、每一个米粉店都试吃足够的次数,才能使我们对12月份的任何一天,哪家米粉店的性价比最高有尽可能接近于真实值的评估。这在实际中可行吗?
  • 既然Q(s,a)估计不是真实值,完全根据贪心算法选取的行为,就可能不是最优行为,换句话说,在某个状态s下,完全采用贪心算法就可能让我们漏掉能带来更高回报的行为,而那些行为在完全贪心算法的控制下,被选取的概率为0!
    • 例如:我记得有一套央视举办的闯关节目,这类节目通常设计了几道关卡,每当选手通过一道关卡,就能获得相应的奖金,而且越靠后的关卡,对应的奖金越高(有类似指数的关系)。这种节目的趣味性在于,当选手过了某一关卡后,面临选择:选择退出,能确保赢得过去累积获得的奖金,选择继续闯关,有可能闯关不成功而使自己空手而归,也有可能使奖金翻倍,如果是你,将如何选择?显然我们的困惑在于,没法估计我们的能力是否能应对下一关的挑战。这是一个概率问题。

4. 如何改进完全贪心算法

使用 ε − 贪心算法 ‾ \underline{\varepsilon-贪心算法} ε贪心算法

5. 何谓 ε − \varepsilon- ε贪心算法

5.1 基本思想

  • 相对于完全贪心算法,我把它称为 部分贪心算法 ‾ \underline{部分贪心算法} 部分贪心算法。完全贪心算法是完全利用过去的经验(过去经历的没有覆盖所有可能情况的完整轨迹),每次都选择自认为能带来最大累积回报的行为,这是纯经验论者的操作;而 ϵ − 贪心算法 \epsilon-贪心算法 ϵ贪心算法,即考虑过去经验(对既往经验的利用),又没有完全排除那些被纯经验论者无视的行为(对未充分了解的(状态-行为)对的探索)
  • ϵ − 贪心算法 \epsilon-贪心算法 ϵ贪心算法体现了强化学习的基本思想,即:利用与探索的平衡。在状态s下,给定 ϵ ∈ ( 0 , 1 ) \epsilon\in(0,1) ϵ(0,1),先让所有行为都有被选择的基准概率 ϵ n A \frac{\epsilon}{nA} nAϵ(nA位行为空间长度),在此基础上,把那些用完全贪心算法选取的最优行为的选取概率增加一点,使得所有行为被选取的概率总和仍然为1,显然, ϵ \epsilon ϵ大小反映了探索的比重,该值越大,则探索的比重越大,反之越小。其选择也是一种技巧,比如,考虑到随着经历的完整轨迹数的增多,经验的价值就越大,相应的 ϵ \epsilon ϵ应该逐渐减小(即越来越不需要过多地探索新情况)。

5.2 基于 ϵ − 贪心算法 \epsilon-贪心算法 ϵ贪心算法的策略控制的形式化描述

  • 输入 ϵ \epsilon ϵ,策略 π ( a ∣ s ) \pi(a|s) π(as),行为值函数 Q ( s , a ) Q(s,a) Q(s,a)
  • 输出:更新后的策略 π ( a ∣ s ) \pi(a|s) π(as)
  • 过程
    f o r s i n S : a m a x = arg max ⁡ a ∈ A ( Q ( s , a ) ) f o r a i n A : π ( a ∣ s ) = ϵ n A i f a = a m a x : π ( a ∣ s ) = π ( a ∣ s ) + ( 1 − ϵ ) \begin{align*} &for \quad s \quad in \quad S:\\ &\qquad a_{max}=\argmax_{a\in A}(Q(s,a))\\ &\qquad for \quad a \quad in \quad A:\\ &\qquad\qquad \pi(a|s)=\frac{\epsilon}{nA}\\ &\qquad\qquad if \quad a=a_{max}:\\ &\qquad\qquad\qquad \pi(a|s)=\pi(a|s)+(1-\epsilon) \end{align*} forsinS:amax=aAargmax(Q(s,a))forainA:π(as)=nAϵifa=amax:π(as)=π(as)+(1ϵ)
    注:这里采用了不考虑计算误差的贪心策略,也可以考虑使用带计算误差的贪心策略。具体请读者实践。

5.3 ϵ − 贪心法 \epsilon-贪心法 ϵ贪心法能保证策略收敛到最优否

理论上已经证明:
使用该策略可以改进任意一个给定的策略,并且在评估这个策略的同时能改进它,不断趋近最优策略

关于这个证明,有兴趣的朋友,可参考邹伟强化学习一书的第4章(P53)

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

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

相关文章

跳跃游戏,经典算法实战。

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

AES加解密模式

要想学习AES&#xff0c;首先要清楚三个基本的概念&#xff1a;密钥、填充、模式。 1、密钥 密钥是AES算法实现加密和解密的根本。对称加密算法之所以对称&#xff0c;是因为这类算法对明文的加密和解密需要使用同一个密钥。 AES支持三种长度的密钥&#xff1a; 128位&#xff…

(十)IIC总线-PCF8591-ADC/DAC

文章目录 IIC总线篇起始&#xff0c;终止信号应答信号发送&#xff0c;读取数据IIC通讯规则 PCF8591-ADC-DAC篇特性一般说明地址Control byte&#xff08;控制字&#xff09;简单了解一下DAC电阻分隔链应用为王DAC的应用ADC的应用ADC采集特点ADC读模式 ADC现象演示DAC现象演示 …

Spring Bean 是线程安全的吗?

如果你现在需要准备面试&#xff0c;可以关注我的公众号&#xff1a;”Tom聊架构“&#xff0c;回复暗号&#xff1a;”578“&#xff0c;领取一份我整理的50W字面试宝典&#xff0c;可以帮助你提高80%的面试通过率&#xff0c;价值很高&#xff01;&#xff01; Spring 框架中…

Linux文件和目录管理命令----unlink命令

unlink命令是Linux系统中一个用于删除文件的命令。与常见的rm命令不同,unlink命令不会将文件放入回收站,而是直接删除文件,并且不会提示用户确认操作,因此需要谨慎使用。 unlink命令的基本用法 unlink命令的基本语法如下: unlink 文件名其中,文件名 是要删除的文件的名…

使用Python爬取小红书笔记与评论(js注入方式获取x-s)

文章目录 1. 写在前面2. 分析加密入口3. 使用JS注入4. 爬虫工程化 【作者主页】&#xff1a;吴秋霖 【作者介绍】&#xff1a;Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作&#xff01; 【作者推荐】&#xff1a;对JS逆向感…

Java使用Mybatis获取数据库Geometry

Java使用Mybatis获取数据库Geometry 方案A 使用ST_AsText(l.coordinates) 查询速度会慢因转换字符串数据大小会大 将几何对象转换为文本 mapper层 select ST_AsText(coordinates) as coordinates from table1domain 层 public class Entry implements Serializable {priva…

Cesium 实战 - 模型亮度调整,自定义着色器(CustomShader)完美解决模型太暗的问题

Cesium 实战 - 自定义视频标签展示视频 模型变暗问题以往通过光线解决问题模型变暗原理解决问题完整代码在线示例在 Cesium 项目中,添加模型是比较基础的功能,Cesium 支持 glTF(GBL) 格式。 在实际应用中,经常会遇到模型特别暗的情况,对比而言,其他三维环境添加是正常的…

[足式机器人]Part2 Dr. CAN学习笔记-Advanced控制理论 Ch04-5稳定性stability-李雅普诺夫Lyapunov

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-Advanced控制理论 Ch04-5稳定性stability-李雅普诺夫Lyapunov Stability in the sense of Lyapunov Assympototic Stability

怎么做微信秒活动_掀起购物狂潮,引爆品牌影响力

微信秒杀活动&#xff1a;掀起购物狂潮&#xff0c;引爆品牌影响力 在数字化时代&#xff0c;微信已经成为人们日常生活中不可或缺的一部分。作为中国最大的社交媒体平台&#xff0c;微信不仅为人们提供了便捷的通讯方式&#xff0c;还为商家提供了一个广阔的营销舞台。其中&a…

借助小redbook.item_get_video API:电商如何增强客户体验

随着电商市场的竞争日益激烈&#xff0c;客户体验成为了电商企业能否在市场中立足的关键因素之一。如何提高客户体验&#xff0c;增加用户黏性&#xff0c;成为电商企业亟待解决的问题。小redbook.item_get_video API作为一种强大的电商个性化营销工具&#xff0c;可以帮助电商…

基于SpringBoot的医护人员排班系统(代码+数据库+文档)

&#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目 希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;一、研究背景 1.1 研究背景 随…

使用OTB数据集需要注意的一个问题

一般网上下载的otb100数据集只要98给序列&#xff0c;这样就会导致在跑数据集的时候出现错误。 需要进行修改&#xff0c;下面链接里面的是我在网上收集到的一个修改后的数据集&#xff0c;有100个视频序列。 otb100提取码&#xff1a;z4tp 除了上面这一步&#xff0c;有的还需…

JC/T 2080-2011 木铝复合门窗检测

木铝复合门窗是指由铝合金型材和实木型材镶装构成的木铝复合型材制作的门窗。 JC/T 2080-2011 木铝复合门窗检测项目 测试项目 测试标准 表面质量 JC/T 2080 装配质量 JC/T 2080 木材含水率 GB/T 1931 甲醛释放量 GB 18580 启闭力 GB/T 9158 反复启闭性能 JG/T 1…

Visual Studio 2017 “无法查找或打开PDB文件“ 解决方法

运行的时候提示无法查找或打开PDB文件 解决办法&#xff08;注意&#xff1a;必须使用管理员身份运行VS&#xff09; 第一步 打开调试窗口的选项 第二步 调试——>常规——>勾选启用源服务器支持 它会弹出警告窗口&#xff0c;点“是”即可 第三步 调试——>符号——…

记录误删除docker中极狐gitlab容器恢复过程

如题一次误操作导致删除了docker中极狐gitlab容器恢复过程 情况说明 创建容器时&#xff0c;我是用的是极狐官网推荐安装的步骤&#xff0c;具体按照官网步骤走就行 sudo docker run --detach \--hostname gitlab.example.com \--publish 443:443 --publish 80:80 --publish …

华为OD机试 - 反射计数(Java JS Python C)

题目描述 给定一个包含 0 和 1 的二维矩阵。 给定一个初始位置和速度,一个物体从给定的初始位置出发,在给定的速度下进行移动,遇到矩阵的边缘则发生镜面发射。 无论物体经过 0 还是 1,都不影响其速度。 请计算并给出经过 t 时间单位后,物体经过 1 点的次数。 矩阵以左…

web网页首页布局

效果展示&#xff1a; html代码&#xff1a; <!doctype html> <html> <head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge,chrome1"> <meta name"viewport" content&qu…

【C语言题解】 | 144. 二叉树的前序遍历

144. 二叉树的前序遍历 144. 二叉树的前序遍历代码 144. 二叉树的前序遍历 提示&#xff1a; 树中节点数目在范围 [0, 100] 内 函数原型&#xff1a; int* preorderTraversal(struct TreeNode* root, int* returnSize) {首先先观察一下这个函数原型&#xff0c;TreeNode* roo…

亿胜盈科HT4822 160mW免输出电容立体声耳机放大器

HT4822是一款无需输出隔直电容的立体声耳机放大器。支持差分和单端的模拟信号输入。 在3.6V供电下&#xff0c;THDN 1%&#xff0c;32ohm负载时能提供80mW的输出。其具有低至0.007%的THDN。 HT4822能在2.5V-6.0V电源条件下工作&#xff0c;具有过热保护和欠压保护等功能。 …