值迭代和策略迭代【强化学习】

强化学习笔记

主要基于b站西湖大学赵世钰老师的【强化学习的数学原理】课程,个人觉得赵老师的课件深入浅出,很适合入门.

第一章 强化学习基本概念
第二章 贝尔曼方程
第三章 贝尔曼最优方程
第四章 值迭代和策略迭代


文章目录

  • 强化学习笔记
  • 一、Value Iteration
    • 1 原理
    • 2 实例
  • 二、Policy Iteration
    • 1 原理
    • 2 实例
    • 参考资料


一、Value Iteration

1 原理

上一章讲贝尔曼最优方程(BOE)时,介绍了如何求解贝尔曼最优方程,将压缩映射原理应用到BOE上,我们得到了一个求解BOE的迭代算法,而那个迭代算法就是Value Iteration.回顾一下迭代算法的格式:
v k + 1 = f ( v k ) = max ⁡ π ( r π + γ P π v k ) , k = 1 , 2 , 3 … v_{k+1}=f(v_k)=\max_{\pi}(r_\pi+\gamma P_\pi v_k),\quad k=1,2,3\ldots vk+1=f(vk)=πmax(rπ+γPπvk),k=1,2,3这个迭代可以分解为两个步骤:

  1. 步骤1:策略更新
    这一步就是根据 v k v_k vk,更新策略
    π k + 1 = arg ⁡ max ⁡ π ( r π + γ P π v k ) \begin{aligned}\pi_{k+1}=\arg\max_{\pi}(r_{\pi}+\gamma P_{\pi}v_{k})\end{aligned} πk+1=argπmax(rπ+γPπvk)
  2. 步骤2:状态值更新
    v k + 1 = r π k + 1 + γ P π k + 1 v k \begin{aligned}v_{k+1}&=r_{\pi_{k+1}}+\gamma P_{\pi_{k+1}}v_k\end{aligned} vk+1=rπk+1+γPπk+1vk

上面都是用向量的形式写的,我们来具体看一下每个状态 s s s每一步是怎么做的:

截屏2024-03-20 14.13.00

截屏2024-03-20 14.13.59

2 实例

仍然来看agent-网格例子,下图的 a 1 , a 2 , a 3 , a 4 , a 5 a_1,a_2,a_3,a_4,a_5 a1a2a3,a4,a5分别代表向上、向右、向下、向左、原地不动.

截屏2024-03-20 14.16.48

给定一个初始值 v 0 ( s ) v_0(s) v0(s),可以计算出 q 0 ( s , a ) q_0(s,a) q0(s,a),每个状态下选择最大的 q q q值对应的动作作为策略.

截屏2024-03-20 14.19.34

第一次迭代我们发现 s 1 s_1 s1的策略不是最优的,继续迭代,我们发现通过两次迭代就能得到最优策略,当然算法停止还得根据停机准则来.

截屏2024-03-20 14.21.53

二、Policy Iteration

1 原理

相较于值迭代算法,策略迭代算法是给定一个初始策略而不是给定一个初始的 v v v。下面首先介绍一下Policy Iteration算法框架:

  1. 首先给定随机初始策略 π 0 \pi_0 π0.
  2. 第一步:策略评估(PE)
    这一步是计算 π k \pi_k πk的状态值 v π k v_{\pi_k} vπk是:
    v π k = r π k + γ P π k v π k \begin{aligned}v_{\pi_k}&=r_{\pi_k}+\gamma P_{\pi_k}v_{\pi_k}\end{aligned} vπk=rπk+γPπkvπk
  3. 第二步:策略改进(Pl)
    基于上一步算出的 v π k v_{\pi_k} vπk,更新策略:
    π k + 1 = arg ⁡ max ⁡ π ( r π + γ P π v π k ) \pi_{k+1}=\arg\max_{\pi}(r_{\pi}+\gamma P_{\pi}v_{\pi_k}) πk+1=argπmax(rπ+γPπvπk)

下面我们具体来看一下每一步是怎么做的,首先来看PE,我们发现给定了策略,我们要求的是 v π k v_{\pi_k} vπk这不就是解贝尔曼方程吗!前面介绍过解贝尔曼方程的两种方法,所以这里我们同样可以用迭代法来求解得到一个 v π k v_{\pi_k} vπk的近似值.

截屏2024-03-20 15.46.15

再来看PI,得到 v π k v_{\pi_k} vπk之后我们需要更新策略,这里就和Value Iteration一样了,可以采用greedy policy的方式更新策略,根据 v π k v_{\pi_k} vπk计算 q ( s , a ) q(s,a) q(s,a),选择每个状态最大的 q q q对应的动作即可。

截屏2024-03-20 15.48.37

值得注意的是在第二步策略更新中,我们更新的策略一定比原策略好吗?可以证明确实是这样的,详见参考资料对应的章节,只要通过这样的迭代一定会收敛到最优策略。

2 实例

仍然来看agent-网格例子,(a)中是给定的初始策略。

截屏2024-03-20 15.59.21

第一步就是解贝尔曼方程,下面给了两种方法,算法中常用的是迭代法.

截屏2024-03-20 16.00.15

第二步是策略改进,和Value Iteration一样的做法.

截屏2024-03-20 16.00.55

参考资料

  1. Zhao, S… Mathematical Foundations of Reinforcement Learning. Springer Nature Press and Tsinghua University Press.
  2. Sutton, Richard S., and Andrew G. Barto. Reinforcement learning: An introduction. MIT press, 2018.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Docker的JMeter分布式压测!

一个JMeter实例可能无法产生足够的负载来对你的应用程序进行压力测试。如本网站所示,一个JMeter实例将能够控制许多其他的远程JMeter实例,并对你的应用程序产生更大的负载。JMeter使用Java RMI[远程方法调用]来与分布式网络中的对象进行交互。JMeter主站…

【运放】LM358和LM324

🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…

一个python实现的Kline框架

起因是想研究量化交易,然后核查算法的落角点,比如哪些指标的组合可以入场做单,没有一个形象化的工具算法写起来总是感觉差强人意。 初步想法是需要一个数据串,里面记录一组开高低收量,然后打开程序后可以将这个基础数…

【基于skyent的热更思考】

基于skyent的热更思考 skynet-inject热更原理关键源码分析热更方式拓扑图注意事项 skynet-inject热更原理 inject是一个用于动态加载 Lua 代码文件并执行其中定义的函数的功能。可以在运行时动态加载 Lua 代码文件,然后调用其中定义的函数,通过修改模块…

【小米汽车SU7实测】 小米汽车su7到底行不行?小米新能源轿车体验感怎么样?

小米汽车SU7是小米汽车的首款车型,定位“C级高性能生态科技轿车”,也是小米迈入新能源赛道的首次成果落地。 首先,让我们来谈谈它的性能。试驾过程中,小米SU7展现出了惊人的加速能力,0-100km/h加速仅需2.78秒&#xf…

射频前端架构之Phase8简介

Phase8系列方案有三种,分别是Phase8、Phase8M、Phase8M。 Phase8与Phase8M方案采用的是低频及中高频两颗L-PAMiD构成完成方案,目标是高端及旗舰手机,方案强调强大的射频能力,以及完整的CA、EN-DC支持,当然这两个方案的…

C++读取文本文件中的汉字出现乱码的原因及解决措施

大家好! 作者今天在写代码时遇到了读取文本文件中的汉字时出现乱码的情况,所以本文介绍Windows操作系统中,C读取文本文件中的汉字出现乱码情况原因及解决措施。 下面代码可以读取Stu.txt中的内容并输出: ifstream ifs; ifs.open(…

Python编程—Ajax数据爬取

Python编程—Ajax数据爬取 ​ 在浏览器中可以看到正常显示的页面数据,而使用requests得到的结果中并没有这些数据。这是因为requests获取的都是原始HTML文档,而浏览器中的页面是JavaScript处理数据后生成的结果,这些数据有多种来源&#xff…

模糊PID模糊化(三角隶属度函数SCL代码)

模糊PID系列文章大家可以查看PID专栏,这里我们再次对模糊化进行细分,为大家呈现不同的程序写法。 1、模糊控制模糊PID学习笔记 https://rxxw-control.blog.csdn.net/article/details/124380674https://rxxw-control.blog.csdn.net/article/details/1243806742、模糊PID(三角…

25.8 MySQL 数据处理之增删改

1. 数据完整性问题 数据完整性问题: 数据的插入, 更新, 删除等操作都需要满足数据库表的完整性约束条件, 否则这些操作将会失败. 完整性约束在数据库设计中起到了至关重要的作用, 它们确保了数据库中数据的准确性和一致性.约束条件的全称通常被称为完整性约束条件(Integrity Co…

物理查询优化(二):两表连接算法(附具体案例及代码分析)

前言 关系代数的一项重要操作是连接运算,多个表连接是建立在两表之间连接的基础上的。研究两表连接的方式,对连接效率的提高有着直接的影响。 连接方式是一个什么样的概念,或者说我们为何要有而且有好几种,对于不太了解数据库的人…

Sentry(Android)源码解析

本文字数:16030字 预计阅读时间:40分钟 01 前言 Sentry是一个日志记录、错误上报、性能监控的开源框架,支持众多平台: 其使用方式在本文不进行说明了,大家可参照官方文档:https://docs.sentry.io/platforms…

2000-2022年上市公司客户、供应商集中度数据

2000-2022年上市公司客户、供应商集中度数据 1、时间:2000-2022年 2、来源:上市公司年报 3、指标:年份、股票代码、股票简称、行业代码、省份、城市、省份代码、城市代码、上市状态、前五名客户产生的营业收入_亿元、占全年营业收入的比例…

告别写作瓶颈,AI写作软件为你开启新篇章

如今,文字的力量对于人们愈发凸显。然而,对许多人来说,写作却是一项困难而耗时的任务。从学生的论文到商务报告,从小说创作到文案,写作瓶颈常常成为人们面临的挑战。然而,随着人工智能技术的不断发展&#…

想来开视频号小店,你需要准备好这些内容!新手建议收藏!

大家好,我是电商小布。 视频号小店项目,作为当前在电商行业内推出时间最短的项目,内部发展潜力大,吸引到了很多小伙伴想要来入局其中。 而对于我们新手朋友来说,在开店的时候,不知道该准备哪些东西&#…

MySQL数据库-MySQL基础-下篇-函数、约束、多表查询、事务

文章目录 函数一、字符串函数练习 二、数值函数三、日期函数四、流程函数总结 约束概述约束演示外键约束概念语法删除/更新行为 总结 多表查询多表关系一对多(多对一)多对多一对一 多表查询概述内连接外连接自连接*联合查询-union, union all子查询标量子…

A股大变局:从“加速度”到“内在价值”

随着经济发展的变化,A股投资者认知正发生根本性转变,从追求“交易边际变化”到重新认知“内在价值”,“稳定价值类”资产配置价值上升。 广发证券在最新的报告中指出,市场过去偏爱企业“加速度”,但现在却更注重于企业…

分布式搜索引擎ES-RestClient查询文档快速入门

RestClient查询文档快速入门 文章目录 RestClient查询文档快速入门1.1、match_all1.2、全文检索查询1.3、精确查询1.4、复合查询-boolean query1.5、排序和分页1.6、高亮(解析查询高亮结果) 1.1、match_all package cn.mannor.hotel;import org.apache.…

C语言与sqlite3入门

c语言与sqlite3入门 1 sqlite3数据类型2 sqlite3指令3 sqlite3的sql语法3.1 创建表create3.2 删除表drop3.3 插入数据insert into3.4 查询select from3.5 where子句3.6 修改数据update3.7 删除数据delete3.8 排序Order By3.9 分组GROUP BY3.10 约束 4 c语言执行sqlite34.1 下载…

打造稳健测评体系:亚马逊测评的关键环节解析

亚马逊测评,简而言之,便是通过真实的购买体验,对产品进行的客观评价。这种评价不仅为卖家提供了产品优化的方向,更为消费者提供了决策的依据,使得产品得以在市场中脱颖而出。然而,现今许多卖家选择自主管理…