当前位置: 首页 > news >正文

Model-based RL动态规划(基于价值、基于策略,泛化迭代)

白盒环境和黑盒环境

白盒环境:知道环境的状态转移函数P(s’|s)或P(s’|s,a)和奖励函数R(s)或R(s,a):
  白盒环境下的学习相当于直接给出了有监督学习的数据分布(就是有了目标靶子),不需要采样了,直接最小化泛化误差更新模型参数。
  对于马尔可夫决策过程(MDP),在白盒环境下(即known MDP),就可以直接用动态规划算法(策略迭代算法、价值迭代算法)求解出最优状态价值函数和最优策略(控制),或者求出某一策略下的价值函数(预测)。

黑盒环境:不知道环境的状态转移函数P(s’|s)或P(s’|s,a)和奖励函数R(s)或R(s,a):
  黑盒环境就只能采集数据,尽可能的靠近靶子学习,即最小化数据的误差更新参数(训练出的模型是否接近真是模型就要看采集的数据的量)。
  大部分强化学习现实场景,马尔可夫决策过程(MDP)是黑盒环境。对于马尔可夫决策过程(MDP),在不知道环境的状态转移函数和奖励函数下(或者是known MDP,但环境太大太复杂无法去使用)就使用无模型的强化学习算法和基于模型的强化学习算法算出最优策略和最优价值函数(控制),或者求出某一策略下的价值函数(预测)。这两种方法都是基于采样的数据来更新的,直接使用和环境交互的过程中采样到的数据来学习。

确定性策略和随机性策略

策略就是评判智能体在特定时间点的表现。把每一个状态和它所对应的最佳行动建立联系。
策略分为两种,
· 确定性策略:某一个特定状态下的策略,永远都会给出同样的行动。
· 随机性策略:策略给出的是多种行动的可能性分布。

一 策略迭代

策略迭代包含两个主要步骤:策略评估(Policy Evaluation)和策略改进(Policy Improvement)。

策略评估
在策略评估步骤中,我们计算给定策略 π 的状态价值函数 Vπ(s)。这是通过迭代更新每个状态的价值来实现的,直到达到稳定状态。

更新公式
在这里插入图片描述
在这里插入图片描述
其中 π(at,st)表示状态 st 下选取动作 at的概率,p(st+1†st,at)表示状态 st转移到st+1的概率。

策略改进
策略改进步骤利用当前价值函数来生成一个更好的策略。这通过为每个状态选择最大化预期回报的动作来实现。

改进公式
在这里插入图片描述

策略迭代交替进行策略评估和策略改进,直到策略收敛。

初始策略的设置,可以采用随机策略或者某种启发式方法。随机策略是随机选择动作,目的是用各个动作与环境交互,探索环境,获取更全面的数据。启发式方法,是通过专家知识或经验指导,选择相对较优的策略,可以加快模型的收敛速度。

在这里插入图片描述

二 值迭代

值迭代是一种更直接的方法,它通过迭代更新状态价值函数来直接找到最优策略。
从上例的策略评估中可以看出,迭代10次和迭代无穷次所得到的贪心策略是⼀样的。因此,对于上面的问题,不一定让策略评估和策略改进反复交替多次,而是用贝尔曼最优方程,一次性确定各个状态的 Vπ(s),再用这些最优状态值函数Vπ(s)计算动作值函数 Q(s,a) ,最后取Q(s,a)最大的动作,这就是值函数迭代算法。

更新公式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

值迭代在每次迭代中对状态价值函数进行更新,直到收敛。最优策略可以通过选择在每个状态下最大化价值函数的动作来确定。
在这里插入图片描述

三 策略迭代 vs 值迭代

3.1 局限性

策略迭代算法和值迭代算法,当状态和动作数量有限时,经过有限次迭代即可收敛到近似最优策略,但都需要非常多的迭代次数才能完成,因此适合状态和动作都离散且数量不多的情况。

在实际应用中有如下的局限性:
(1)要求模型已知,即需要知道状态转移概率p和奖励函数r。但实际应用中,这个要求很难满足。如果事先不知道模型,就需先让智能体与环境交互来估计模型,即估计状态转移概率和奖励。因过程比较复杂,只能用于状态比较少的场合。
(2)效率问题。当状态数量较多时,算法效率比较低。在实际应用中,很多问题的状态数量和动作数量非常多.比如,围棋有19×19 = 361个位置,每个位置有黑子、白子或无子三种状态,整个棋局有 3361种状态。对于这种情况,无论是值迭代还是策略迭代,以当前计算机的计算能力,根本无法计算。比较有效的方法是通过一个函数,比如神经网络,来近似计算值函数,以减少复杂度,并提高泛化能力(应用范围和效果)。

3.2 两者对比

策略迭代:通常需要更多的时间来收敛,因为它在每个策略下进行完整的策略评估。但是,一旦收敛,就得到了最优策略。
值迭代:通常收敛速度更快,但可能在找到最优策略之前就停止迭代。

基于策略与基于价值的优势
从图中我们可以看到,策略直接指出了每一步的最佳行动,

  • 基于策略的方法往往比基于值的方法收敛到更好的解决方案。原因是,解决方案是梯度推出来的,而梯度总是指向微分函数的最陡峭方向。当运用误差函数并采用梯度下降法时,每一步都做都会让误差函数的值最小化。但是,如果几个动作间的差异比较小,基于值的方法产生的结果差异更大,无法保证收敛。
  • 值函数需要明确定义的环境,在该环境下动作会产生确定的结果。如果学习过程是随机的,那么在采取相同动作时,可能有不同的结果(观测),这样值函数就没法使用了。基于策略的方法不需要采取相同的动作来探索环境。
  • 在高维空间内,基于策略的方法的计算成本更低,计算的更快。这是因为基于值的方法要求我们为每一种可能的动作计算一个价值。如果空间中的动作太多了,值函数就不会收敛于一个解决方案。基于策略的方法不同,因为本质上只是让我们执行动作并且调整梯度。

四 泛化迭代

策略迭代法的中心是策略函数,通过策略评估+策略提升两个步骤使策略变得越来越好;
价值函数通过自我更新、动态规划的方式不断迭代更新价值函数,并最终求出策略函数。

  • 两个方法都要求策略函数和价值函数
  • 最终最优的策略函数都是由价值函数得到的
  • 价值函数依据函数的数值收敛
  • 策略函数依据策略收敛

我们发现了一个关键:那就是两者都需要训练策略函数和价值函数,只是侧重点不同。
策略迭代的核心是策略,为了使策略能够提升,价值函数可以求解得准确,也可以求解得不准确;
价值迭代的核心是价值,算法的核心部分根本没有出现与策略有关的内容,直到最后才出现了策略。

两种方法都十分看重自己关心的那部分,而可以选择忽略另一部分,因此可以看出两个方法都比较极端。既然我们找到了两个极端的方法,那么我们可不可以找到两种方法的中间带呢?当然是可以的,这就是本节要介绍的泛化迭代法,英文一般称为Generalized Policy Iteration,但我觉得这个词里只出现Policy是不够准确的。

在这里插入图片描述

上面这条线是价值函数,价值函数是连续的,所以这条线并不难得到。而对于价值迭代的算法,则是一直在上面那条线上行走
图中的折线主要表达了策略迭代的算法,我们选定某个策略,求解价值函数,然后更新策略,这样优化的轨迹会不断地在两条主线上跳动。

泛化迭代:
我们先做几轮价值迭代,然后再做策略迭代,这样的方法同样可以得到正确的结果,但是可能会有更快的速度。

相关文章:

Model-based RL动态规划(基于价值、基于策略,泛化迭代)

白盒环境和黑盒环境 白盒环境:知道环境的状态转移函数P(s’|s)或P(s’|s,a)和奖励函数R(s)或R(s,a):   白盒环境下的学习相当于直接给出了有监督学习的数据分布(就是有了目标靶子),不需要采样了,直接最小…...

外接串口板,通过串口打开adb模式

一、依赖库 import subprocess import serial from serial.tools import list_ports import logging import time 二、代码 import subprocessimport serial from serial.tools import list_ports import logging import timedef openAdb(com):# com []# for i in list_por…...

ssm微信小程序校园失物招领论文源码调试讲解

第二章 开发技术与环境配置 以Java语言为开发工具,利用了当前先进的SSM框架,以MyEclipse10为系统开发工具,MySQL为后台数据库,开发的一个微信小程序校园失物招领。 2.1 Java语言简介 Java是由SUN公司推出,该公司于20…...

iOS 15推出后利用邮件打开率的7种方法

自从苹果在2021年底推出iOS 15以来,邮件打开率就一直是一个让人头疼的指标。 Klaviyo市场情报主管Mindy Regnell表示:“对于启用了Apple邮件隐私保护(MPP)的用户来说,苹果会打开这些邮件并预先下载内容到他们的服务器…...

以太网--TCP/IP协议(一)

概述 以太网是局域网的一种,其他的比如还有令牌环、FDDI。和局域网对应的就是广域网,如Internet,城域网等。 从网络层次看,局域网协议主要偏重于低层(业内一般把物理层、数据链路层归为低层)。以太网协议…...

LeetCode刷题:找到第K大的元素

本题其实就是考察排序算法,为了减低时间复杂度,所以采用堆排序 import java.security.Key; import java.util.Scanner;public class FindKtopElements {public static void main(String[] args) {Scanner scanner new Scanner(System.in);String lin…...

HTML页面配置高德地图,获取位置

HTML页面配置高德地图,获取位置 一、使用情况 1、之前项目用的前后端分离框架,所以用Vue接入的高德地图,自动搜索补全,是请求的后台返回的数据。 2、现在用单体项目,前端是Bootstrap,需要接高德地图&…...

HTTrack

--不破不立 HTTrack 是一个免费开源的网站离线浏览器。通过它可以将整个网站下载到本地的某个目录,包括 html、图片和脚本以及样式文件,并对其中的链接进行重构以便于在本地进行浏览。 1.官网下载地址:https://www.httrack.com/page/2/en/in…...

干货分享|分享一款微软出品的工作效率神器 PowerToys

工具介绍:Microsoft PowerToys 是一组实用工具,可帮助高级用户调整和简化其 Windows 体验,从而提高工作效率。 安装步骤:直接打开微软商店安装即可,并且可以保证下载到最新版本。 功能介绍: 高级粘贴 高级…...

神经网络的线性部分和非线性部分

神经网络的线性部分和非线性部分是其构成中的两个核心元素,它们共同决定了模型的能力和行为。让我们分别看一下这两部分: 1. 线性部分 线性部分通常是指神经网络中的加权和操作。这部分可以用以下形式表示: [ z W \cdot x b ] W 是权重…...

微信支付开发避坑指南

1 微信支付的坑 1.1 不能用前端传递过来的金额 订单的商品金额要从数据库获取,前端只传商品 id。 1.2 交易类型trade type字段不要传错 v2版API,不同交易类型,要调用的支付方式也不同。 1.3 二次签名 下单时,在拿到预支付交…...

Qt5.4.1连接odbc驱动操作达梦数据库

Qt5.4.1连接odbc驱动操作达梦数据库 1 环境介绍2 Qt5.4.1 安装2.1 图形化界面安装Qt5.4.12.2 配置Qt5.4.1 环境变量2.3 Qt5.4.1 生成 libqsqlodbc.so 并配置2.3.1 生成Makefile2.3.2 查看 libqsqlodbc.so 文件并配置 3 配置Qt测试用例4 达梦数据库学习使用列表 1 环境介绍 CPU…...

计算机组成原理(第一课)

计算机系统概述 1.发展史 摩尔定律:集成电路上可以容纳的晶体管数目在大约每经过18个月到24个月便会增加一倍 2.操作系统组成 存储程序程序控制 五个部分记住: 输入输出功能 I/O 记忆功能 访问 计算功能 计算 判断功能 判断 自我控制功能 自我控制…...

计算机网络练级第一级————认识网络

目录 网络搁哪? 网络的发展史(了解) 独立模式: 网络互联: 局域网时期: 广域网时期: 什么是协议 TCP/IP五层/四层模型 用官话来说: 我自己的话来说 第一层应用层&#xff1…...

Java基于微信小程序的家庭财务管理系统,附源码

博主介绍:✌Java徐师兄、7年大厂程序员经历。全网粉丝13w、csdn博客专家、掘金/华为云等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不…...

P2343 宝石管理系统

不会写平衡树怎么办&#xff0c;可以用STL的vector或者是pb_ds&#xff0c;这个东西太乱&#xff0c;还是STL好用 #include<bits/stdc.h> using namespace std; int read() {int x 0, f 1;char ch getchar();while (ch < 0 || ch > 9) {if (ch -) f -1;ch g…...

Spring6梳理6——依赖注入之Setter和构造器注入

以上笔记来源&#xff1a; 尚硅谷Spring零基础入门到进阶&#xff0c;一套搞定spring6全套视频教程&#xff08;源码级讲解&#xff09;https://www.bilibili.com/video/BV1kR4y1b7Qc 目录 一、引言 二、Java方法初始化过程 2.1 set方法及构造器方法实现Book对象初始化 三…...

【C++】C++入门基础,详细介绍命名空间,缺省参数,函数重载,引用,内联函数等

目录 1. 命名空间 1.1 使用命名空间的目的 1.2 命名空间定义 1.3 命名空间使用 2. 缺省参数 2.1 缺省参数概念 2.2 缺省参数分类 2.3 实际案例 2.4 注意事项 3. 函数重载 3.1 函数重载概念 3.2 函数重载原理 4. 引用 4.1 引用的概念 4.2 引用的特性 4.3 使用…...

Android使用Room后无法找到字符BR

一般来讲&#xff0c;无法找到BR字符多与Data Binding 相关。 在 Android Studio 中使用 Data Binding 时&#xff0c;如果突然出现 “BR 文件不可用” 或 “找不到符号 BR” 的错误&#xff0c;可能是由以下原因造成的&#xff1a; Data Binding 未启用&#xff1a;确保在你的…...

网络通讯安全基础知识(加密+解密+验签+证书)

1、加密解密基本概念 通讯的加密和解密‌主要涉及将原始信息&#xff08;明文&#xff09;转换为不可直接理解的格式&#xff08;密文&#xff09;&#xff0c;以及将密文还原为原始信息的过程。这一过程通常包括三个基本步骤&#xff1a;加密、传输和解密&#xff0c;其中加密…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...