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

news2024/11/13 12:12:23

强化学习笔记

主要基于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.

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

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

相关文章

springboot企业级抽奖项目业务三(活动模块)

梅开三度 开发流程 该业务基于rouyi生成好了mapper和service的代码,现在需要在controller层写接口 实际操作流程: 看接口文档一>controller里定义函数一>看给出的工具类一>补全controller里的函数一>运行测试 接口文档 在用户模块用户…

Cisco firepower 2140 run ASA and config failover

1 背景 here we got 2 cisco firepower 2140 hardware appliance we’re planning to run ASA on it. and config failover for Primary Unit and Secondary Unit 现场2台Cisco firepower 2140防火墙, 运行ASA模式, 双机组HA,心跳线使用E1/1…

爬虫实践(1)

这一篇只提登录模拟,主要介绍chrome开发者窗口的使用,实际上相关接口调用都是用到cookie,需要再加一篇从token到cookie,以保证实践的完整性 以migu登录为例,分析其登录过程,之后可以使用任意语言模拟登录&…

如何利用FLUENT计算流体力学方法解决大气与环境领域流动问题

ANSYS FLUENT是目前全球领先的商用CFD 软件,市场占有率达70%左右,是工程师和研究者不可多得的有力工具。由于采用了多种求解方法和多重网格加速收敛技术,因而FLUENT能达到最佳的收敛速度和求解精度。灵活的非结构化网格和基于解的自适应网格技…

设置MATLAB三维绘图的视角

MATLAB三维绘图plot3在生成绘图后,默认显示视角是斜着的: 使用view(2)命令可以使其转成XoY平面(从上往下看的视角):

【第二部分--Python之基础】02

二、运算符与程序流程控制 1、运算符 1.1 算术运算符 算术运算符用于组织整数类型和浮点类型的数据,有一元运算符和二元运算符之分。 一元算术运算符有两个:(正号)和-(负号),例如&#xff1…

自动驾驶-如何进行多传感器的融合

自动驾驶-如何进行多传感器的融合 附赠自动驾驶学习资料和量产经验:链接 引言 自动驾驶中主要使用的感知传感器是摄像头和激光雷达,这两种模态的数据都可以进行目标检测和语义分割并用于自动驾驶中,但是如果只使用单一的传感器进行上述工作…

【Python】enumerate函数的使用方法,小白一看就懂

enumerate函数的使用方法: season[‘a’,‘b’,‘c’,‘d’] for i in enumerate(season): print(i) season[‘a’,‘b’,‘c’,‘d’] for i,eliment in enumerate(season): print(i,eliment) 输出结果为: 练习题: 2.给出10个学生姓名…

国内ip地址随意更换的潜在风险和策略

在数字化时代,IP地址是互联网通信的基础,而国内IP地址的随意更换可能带来一系列安全风险和问题。虎观代理小二将探讨国内IP地址随意更换的潜在影响以及如何有效应对这一挑战。 1.什么是国内IP地址? 国内IP地址是指在国内分配和使用的IP地址&…

【漏洞复现】用友U8C任意文件读取漏洞

声明:亲爱的读者,我们诚挚地提醒您,Aniya网络安全的技术文章仅供个人研究学习参考。任何因传播或利用本实验室提供的信息而造成的直接或间接后果及损失,均由使用者自行承担责任。Aniya网络安全及作者对此概不负责。如有侵权&#…

ChatGPT 对 ELT的理解

本文主要内容来自 ChatGPT 4.0 到底什么是 ETL?在数据库内部,把数据从 ODS 层加工成 DWD,再加工成 DWS,这个过程和 ETL 的关系是什么?带着这些问题,我问了一下 ChatGPT,总结如下。 数据在两个数…

工厂能耗管控物联网解决方案

工厂能耗管控物联网解决方案 工厂能耗管控物联网解决方案是一种创新的、基于先进技术手段的能源管理系统,它深度融合了物联网(IoT)、云计算、大数据分析以及人工智能等前沿科技,以实现对工业生产过程中能源消耗的实时监测、精确计…

小学科学期刊投稿邮箱论文发表

《小学科学》是由国家新闻出版总署批准的教育理论类半月刊,由长春出版传媒集团有限责任公司主管主办,旨在为广大一线科学教师、教研员和其他教育工作者提供一个展示传播、交流、研讨科学教育及教研成果的平台,促进小学科学教育工作者的沟通与…

智能楼宇3D可视化解决方案

什么是智能楼宇? 智能楼宇是为提高楼宇的使用合理性与效率,配置合适的建筑环境系统与楼宇自动化系统、办公自动化与管理信息系统以及先进的通信系统,并通过结构化综合布线系统集成为智能化系统的大楼。 面临的问题 信息孤岛,无法统一管理 各个子系统独立工作、独立管理,…

达梦数据库自动备份(全库)+还原(全库) 控制台

一 前提 1.安装达梦数据库DB8(请参照以前文章) 我的数据库安装目录是 /app/dmDB8 2.已创建实例 (请参照上一篇文章) 二 准备测试数据 三 自动备份步骤 1.开启归档模式 开启DM管理工具管理控制台 弹不出来工具的 输入命令 xhost 第一步 将服务器转换为配置状态 右键-&g…

冒泡排序 快速排序 归并排序 其他排序

书接上回.. 目录 2.3 交换排序 2.3.1冒泡排序 2.3.2 快速排序 快速排序的优化: 快速排序非递归 2.4 归并排序 基本思想 归并排序非递归 海量数据的排序问题 排序算法时间空间复杂度和稳定性总结 四. 其他非基于比较排序 (了解) 2.3 交换排序 基本思想:…

缺省和重载。引用——初识c++

. 个人主页&#xff1a;晓风飞 专栏&#xff1a;数据结构|Linux|C语言 路漫漫其修远兮&#xff0c;吾将上下而求索 文章目录 C输入&输出cout 和cin<<>> 缺省参数全缺省半缺省应用场景声明和定义分离的情况 函数重载1.参数的类型不同2.参数的个数不同3.参数的顺…

systemd-journal(二)之配置文件详解journal-remote.conf,journald.conf,journald.conf

文章目录 写在前面概述journal-remote.conf&#xff0c; journal-remote.conf.d概要配置目录和优先级选项SealSplitModeServerKeyFileServerCertificateFileTrustedCertificateFileMaxUse, KeepFree, MaxFileSize, MaxFiles journal-upload.conf&#xff0c; journal-upload.co…

mmocr安装和使用

https://github.com/open-mmlab/mmocr/blob/main/README_zh-CN.md https://mmocr.readthedocs.io/en/dev-1.x/get_started/quick_run.html 介绍 MMOCR 是基于 PyTorch 和 mmdetection 的开源工具箱&#xff0c;专注于文本检测&#xff0c;文本识别以及相应的下游任务&#xf…

Chromium 通过IDL方式添加扩展API,并且在普通网页也可以调用

先严格按照Chromium 通过IDL方式添加扩展API - 知乎、chromium 41 extensions 自定义 api 接口_chromium自定义扩展api-CSDN博客 里提到的方式&#xff0c;加入扩展api。然后最关键的地方来了&#xff1a; 到src\extensions\renderer\native_extension_bindings_system.cc \sr…