【强化学习】08——规划与学习(采样方法|决策时规划)
文章目录
- 优先级采样
- Example1 Prioritized Sweepingon Mazes
- 局限性及改进
- 期望更新和采样更新
- 不同分支因子下的表现
- 轨迹采样
- 总结
- 实时动态规划
- Example2 racetrack
- 决策时规划
- 启发式搜索
- Rollout算法
- 蒙特卡洛树搜索
- 参考
先做个简单的笔记整理,以后有时间再补上细节
优先级采样
均匀随机采样(uniformly sampling)会使得部分采样的结果对实际的更新毫无作用。如下图所示,在开始时,只有靠近终点部分的更新会产生作用,而其他情况则不会。因此,模拟的经验和更新应集中在一些特殊的状态动作。

可以使用后向聚焦(backward focusing)进行更好地更新。 后向聚焦是指很多状态的值发生变化带动前继状态的值发生变化。但有的值改变很多,有的改变很少,因此需要根据紧急程度,给这些更新设置优先度进行更新。
优先级采样(Prioritized Sweeping)可以解决上述问题。优先级采样通过设置优先级更新队列,根据值改变的幅度定义优先级: P ← ∣ R + γ max a Q ( S ′ , a ) − Q ( S , A ) ∣ P\leftarrow\left|R+\gamma\max_aQ\left(S^{\prime},a\right)-Q(S,A)\right| P← R+γamaxQ(S′,a)−Q(S,A)
算法伪代码:

Example1 Prioritized Sweepingon Mazes

- 横轴代表格子世界的大小
- 纵轴代表收敛到最优策略的更新次数
- 优先级采样收敛更快
局限性及改进
优先级采样在随机环境中利用期望更新(expected updates)的方法。但这样会浪费很多计算资源在一些低概率的状态转移(transitions)上,因此引入采样更新(sample updates)。
期望更新和采样更新

期望更新
- Q ( s , a ) ← ∑ s ′ , r p ^ ( s ′ , r ∣ s , a ) [ r + γ max a ′ Q ( s ′ , a ′ ) ] . Q(s,a)\leftarrow\sum_{s',r}\hat{p}(s',r|s,a)\Big[r+\gamma\max_{a'}Q(s',a')\Big]. Q(s,a)←s′,r∑p^(s′,r∣s,a)[r+γa′maxQ(s′,a′)].
- 需要知道准确的分布模型
- 需要更大的计算量
- 没有偏差更准确
采样更新
- Q ( s , a ) ← Q ( s , a ) + α [ R + γ max a ′ Q ( S ′ , a ′ ) − Q ( s , a ) ] , Q(s,a)\leftarrow Q(s,a)+\alpha\Big[R+\gamma\max_{a'}Q(S',a')-Q(s,a)\Big], Q(s,a)←Q(s,a)+α[R+γa′maxQ(S′,a′)−Q(s,a)], • 只需要采样模型
• 计算量需求更低
• 受到采样误差(sampling error)的影响
不同分支因子下的表现
设定
• 𝑏 个后续状态等可能
• 初始估计误差为1
• 下一个状态值假设估计正确

结果
• 分支因子越多,采样更新越接近期望更新
• 大的随机分支因子和状态数量较多的情况下, 采样更新更好
越复杂的环境越适合进行采样更新。
轨迹采样

- 动态规划
• 对整个状态空间进行遍历
• 没有侧重实际需要关注的状态上 - 在状态空间中按照特定分布采样
• 根据当前策略下所观测的分布进行采样

轨迹采样
- 状态转移和奖励由模型决定
- 动作由当前的策略决定
优点
• 不需要知道当前策略下状态的分布
• 计算量少,简单有效
缺点
• 不断重复更新已经被访问的状态

- 不同的分支因子下的表现
- 确定性环境中表现比较好
总结
- 优先级采样
• 收敛更快
• 随机环境使用期望更新,计算量大 - 期望更新和采样更新
• 期望更新计算量大但是没有偏差
• 采样更新计算量小但是存在采样偏差 - 轨迹采样
• 采样更新,计算量小
• 不断重复某些访问过的状态
实时动态规划
和传统动态规划的区别
• 实时的轨迹采样
• 只更新轨迹访问的状态值
优势
• 能够跳过策略无关的状态
• 在解决状态集合规模大的问题上具有优势
• 满足一定条件下可以以概率1收敛到最优策略
Example2 racetrack

决策时规划
背景规划(Background Planning)
• 规划是为了更新很多状态值供后续动作的选择
• 如动态规划,Dyna
决策时规划(Decision-time Planning)
• 规划只着眼于当前状态的动作选择
• 在不需要快速反应的应用中很有效,如棋类游戏
启发式搜索
-
访问到当前状态(根节点),对后续可能的情况进行树结构展开
-
叶节点代表估计的值函数
-
回溯到当前状态(根节点),方式类似于值函数的更新方式

-
决策时规划,着重于当前状态
-
贪婪策略在单步情况下的扩展
-
启发式搜索看多步规划下,当前状态的最优行动
-
搜索越深,计算量越大,得到的动作越接近最优
-
性能提升不是源于多步更新,而是源于专注当前状态的后续可能
Rollout算法
- 从当前状态进行模拟的蒙特卡洛估计
- 选取最高估计值的动作
- 在下一个状态重复上述步骤
特点
- 决策时规划,从当前状态进行𝑟𝑜𝑙𝑙𝑜𝑢𝑡
- 直接目的类似于策略迭代和改进,寻找更优的策略
- 表现取决于蒙特卡洛方法估值的准确性

蒙特卡洛树搜索

参考
[1] 伯禹AI
[2] https://www.deepmind.com/learning-resources/introduction-to-reinforcement-learning-with-david-silver
[3] 动手学强化学习
[4] Reinforcement Learning
相关文章:
【强化学习】08——规划与学习(采样方法|决策时规划)
文章目录 优先级采样Example1 Prioritized Sweepingon Mazes局限性及改进 期望更新和采样更新不同分支因子下的表现 轨迹采样总结实时动态规划Example2 racetrack 决策时规划启发式搜索Rollout算法蒙特卡洛树搜索 参考 先做个简单的笔记整理,以后有时间再补上细节 …...
(链表) 25. K 个一组翻转链表 ——【Leetcode每日一题】
❓ 25. K 个一组翻转链表 难度:困难 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保…...
VisualStudio[WPF/.NET]基于CommunityToolkit.Mvvm架构开发
一、创建 "WPF应用程序" 新项目 项目模板选择如下: 暂时随机填一个目标框架,待会改: 二、修改“目标框架” 双击“解决方案资源管理器”中<项目>CU-APP, 打开<项目工程文件>CU-APP.csproj, 修改目标框架TargetFramew…...
深度学习_5_模型拟合_梯度下降原理
需求: 想要找到一条直线,能更好的拟合这一些点 如何确定上述直线就是最优解呢? 由计算机算出所有点与我们拟合直线的误差,常见的是均方误差 例如:P1与直线之间的误差为e1 将P1坐标带入直线并求误差得: 推广到所有点&a…...
大模型时代,AI如何成为数实融合的驱动力?
10月25日,百度APP、百家号联合中兴通讯举办的“时代的增量“主题沙龙第二期在北京顺利召开。本期沙龙围绕“数实融合新视角”邀请学界、业界、媒体从业者等领域专家出席,以产学研相结合的视角深入探讨数实融合的最新技术趋势,并围绕数实融合在…...
MS COCO数据集的评价标准以及不同指标的选择推荐(AP、mAP、MS COCO、AR、@、0.5、0.75、1、目标检测、评价指标)
目标检测模型性能衡量指标、MS COCO 数据集的评价标准以及不同指标的选择推荐 0. 引言 0.1 COCO 数据集评价指标 目标检测模型通过 pycocotools 在验证集上会得到 COCO 的评价列表,具体参数的含义是什么呢? 0.2 目标检测领域常用的公开数据集 PASCAL …...
css实现鼠标多样化
cursor pointer: 手型default: 箭头text: 文本输入光标move: …...
21.2 Python 使用Scapy实现端口探测
Scapy 是一款使用纯Python编写的跨平台网络数据包操控工具,它能够处理和嗅探各种网络数据包。能够很容易的创建,发送,捕获,分析和操作网络数据包,包括TCP,UDP,ICMP等协议,此外它还提…...
Qt设计一个自定义的登录框窗口
今天写了一个Qt登录、注册的小demo,后续完善会连接MySQL使用,过几天写完我会放在github上。 主要页面: 动态演示: 写完这个界面后,我终于知道了Qt为什么几乎没什么好看的窗口设计了,随便写一个简单大方的登…...
05 MIT线性代数-转置,置换,向量空间Transposes, permutations, spaces
1. Permutations P: execute row exchanges becomes PA LU for any invertible A Permutations P identity matrix with reordered rows mn (n-1) ... (3) (2) (1) counts recordings, counts all nxn permuations 对于nxn矩阵存在着n!个置换矩阵 , 2. Transpose: 2.…...
[数据结构】二叉树
1.概念 一棵二叉树是结点的一个有限集合,该集合: 1. 或者为空 2. 或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成 从上图我们可以发现: 1.二叉树不存在大于2 的度 2.二叉树的子树有左右之分,次序不能颠倒。是有…...
idea 中配置 maven
前文叙述: 配置 maven 一共要设置两个地方:1、为当前项目设置2、为新项目设置maven 的下载和安装可参考我之前写过的文章,具体的配置文章中也都有讲解。1、为当前项目进行 maven 配置 配置 VM Options: -DarchetypeCataloginternal2、为新项…...
Python---for循环嵌套
for循环嵌套,就是一个for循环里面嵌套另外一个for循环的写法。 当循环结构相互嵌套时,位于外层的循环结构常简称为外层循环或外循环,位于内层的循环结构常简称为内层循环或内循环。 基本语法: # 外层循环 for i in 序列1:# 内层…...
189. 轮转数组 --力扣 --JAVA
题目 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 解题思路 通过位移后位置对数组长度的取余来判断元素变换后的位置 代码展示 class Solution {public void rotate(int[] nums, int k) {int size nums.length;int[]…...
C# 使用waveIn实现声音采集
文章目录 前言一、需要的对象及方法二、整体流程三、关键实现1、使用Thread开启线程2、TaskCompletionSource实现异步3、将指针封装为Stream 四、完整代码1.接口2.具体实现 五、使用示例方式一方式二 总结 前言 之前实现了《C 使用waveIn实现声音采集》,后来C#项目…...
长连接的原理
Apollo的长连接实现是 Spring的DeferredResult来实现的,先看怎么用 import ...RestController RequestMapping("deferredResult") public class DeferredResultController {private Map<String, Consumer<DeferredResultResponse>> taskMap new HashMa…...
软考系列(系统架构师)- 2015年系统架构师软考案例分析考点
试题一 软件架构(质量属性效用树、架构风险、依够点、权衡点) 【问题1】(12分) 在架构评估过程中,质量属性效用树(utility tree)是对系统质量属性进行识别和优先级排序的重要工具。请给出合适的…...
小程序开发——小程序的视图与渲染
1.视图与渲染过程 基本概念: 视图层由WXML页面文件和样式文件WXSS共同组成。事件是视图层和逻辑层沟通的纽带,用户操作触发事件后可通过同名的事件处理函数执行相应的逻辑,处理完成后,更新的数据又将再次渲染到页面上。 WXML页面…...
用python实现操作mongodb的插入和查找操作
用python实现操作mongodb的插入和查找操作 import pymongoclient pymongo.MongoClient("mongo://localhost:27017") db client["app"] col db["C1"]# 插入一条数据 #user { # "name": "Sam", # "age":…...
代码审计及示例
简介: 代码安全测试是从安全的角度对代码进行的安全测试评估。 结合丰富的安全知识、编程经验、测试技术,利用静态分析和人工审核的方法寻找代码在架构和编码上的安全缺陷,在代码形成软件产品前将业务软件的安全风险降到最低。 方法&#x…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
