Pytorch深度强化学习1-4:策略改进定理与贝尔曼最优方程详细推导

news2024/7/4 4:46:17

目录

  • 0 专栏介绍
  • 1 贝尔曼最优方程
  • 2 贪心策略与策略改进
  • 3 策略迭代与价值迭代
  • 4 算法流程

0 专栏介绍

本专栏重点介绍强化学习技术的数学原理,并且采用Pytorch框架对常见的强化学习算法、案例进行实现,帮助读者理解并快速上手开发。同时,辅以各种机器学习、数据处理技术,扩充人工智能的底层知识。

🚀详情:《Pytorch深度强化学习》


1 贝尔曼最优方程

在Pytorch深度强化学习1-3:策略评估与贝尔曼期望方程详细推导中,我们介绍了贝尔曼递推公式(Bellman Equation)或称贝尔曼期望方程,如下

{ V γ π ( s ) = ∑ a ∈ A π ( s , a ) ∑ s ′ ∈ S P s → s ′ a [ R s → s ′ a + γ V γ π ( s ′ ) ] Q γ π ( s , a ) = ∑ s ′ ∈ S P s → s ′ a [ R s → s ′ a + γ ∑ a ′ ∈ A π ( s ′ , a ′ ) Q γ π ( s ′ , a ′ ) ] {\begin{cases} V_{\gamma}^{\pi}\left( s \right) =\sum_{a\in A}{\pi \left( s,a \right)}\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ R_{s\rightarrow s'}^{a}+\gamma V_{\gamma}^{\pi}\left( s' \right) \right]\\ Q_{\gamma}^{\pi}\left( s,a \right) =\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ R_{s\rightarrow s'}^{a}+\gamma \sum_{a'\in A}{\pi \left( s',a' \right) Q_{\gamma}^{\pi}\left( s',a' \right)} \right]\\\end{cases}} {Vγπ(s)=aAπ(s,a)sSPssa[Rssa+γVγπ(s)]Qγπ(s,a)=sSPssa[Rssa+γaAπ(s,a)Qγπ(s,a)]

贝尔曼期望方程用于策略评估,即衡量策略的好坏。

自然地,我们会想到,能否计算出最优策略呢?这就引出本节的主题——贝尔曼最优方程。

我们对上面的贝尔曼期望方程做一些变化:将期望视作随机变量不同取值的加权和,权重即为概率分布。现在将随机变量的最大取值权重赋为1,其余取值赋为0,将得到随机变量的最大值。因此随机变量的最大值是一种特殊的期望,符合

E ( x ) ⩽ max ⁡ ( x ) \mathbb{E} \left( x \right) \leqslant \max \left( x \right) E(x)max(x)

状态值函数 V π ( s ) V^{\pi}\left( s \right) Vπ(s)是期望的形式,欲使 V π ( s ) V^{\pi}\left( s \right) Vπ(s)数值最大,最优策略 π ∗ \pi ^* π对应的条件概率分布应是0-1序列,其中权重1赋予回报最大的动作,即

{ V γ ∗ ( s ) = max ⁡ a ∈ A ∑ s ′ ∈ S P s → s ′ a [ R s → s ′ a + γ V γ ∗ ( s ′ ) ] Q γ ∗ ( s , a ) = ∑ s ′ ∈ S P s → s ′ a [ R s → s ′ a + γ max ⁡ a ′ ∈ A Q γ ∗ ( s ′ , a ′ ) ] { \begin{cases} V_{\gamma}^{*}\left( s \right) =\underset{a\in A}{\max}\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ R_{s\rightarrow s'}^{a}+\gamma V_{\gamma}^{*}\left( s' \right) \right]\\ Q_{\gamma}^{*}\left( s,a \right) =\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ R_{s\rightarrow s'}^{a}+\gamma \underset{a'\in A}{\max}Q_{\gamma}^{*}\left( s',a' \right) \right]\\\end{cases}} Vγ(s)=aAmaxsSPssa[Rssa+γVγ(s)]Qγ(s,a)=sSPssa[Rssa+γaAmaxQγ(s,a)]

这就演化成了最优贝尔曼方程

在这里插入图片描述

Richard Ernest Bellman

2 贪心策略与策略改进

设当前策略为 π \pi π,则总可以将其改进为 π ′ ( s ) = a r g max ⁡ a ∈ A Q π ( s , a ) \pi '\left( s \right) =\mathrm{arg}\max _{a\in A}Q^{\pi}\left( s,a \right) π(s)=argmaxaAQπ(s,a),也称为贪心策略,记作 G ( ⋅ ) G\left( \cdot \right) G()

证明

设贝尔曼最优算子为 B ∗ \mathcal{B} ^* B,其不依赖于具体策略,则

∣ ( B ∗ V π ) ( s ) − ( B ∗ V π ′ ) ( s ) ∣ = ∣ max ⁡ a ∈ A ∑ s ′ ∈ S P s → s ′ a [ R s → s ′ a + γ V π ( s ′ ) ] − max ⁡ a ∈ A ∑ s ′ ∈ S P s → s ′ a [ R s → s ′ a + γ V π ′ ( s ′ ) ] ∣ \left| \left( \mathcal{B} ^*V^{\pi} \right) \left( s \right) -\left( \mathcal{B} ^*V^{\pi '} \right) \left( s \right) \right|=\left| \underset{a\in A}{\max}\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ R_{s\rightarrow s'}^{a}+\gamma V^{\pi}\left( s' \right) \right] -\underset{a\in A}{\max}\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ R_{s\rightarrow s'}^{a}+\gamma V^{\pi '}\left( s' \right) \right] \right| (BVπ)(s)(BVπ)(s) = aAmaxsSPssa[Rssa+γVπ(s)]aAmaxsSPssa[Rssa+γVπ(s)]

根据不等式

∣ max ⁡ x f ( x ) − max ⁡ x g ( x ) ∣ = ∣ f ( x ∗ ) − max ⁡ x g ( x ) ∣    x ∗ 是 f ( x ) 最大值 ⩽ ∣ f ( x ∗ ) − g ( x ∗ ) ∣ ⩽ max ⁡ x ∣ f ( x ) − g ( x ) ∣ \begin{aligned}\left| \max _xf\left( x \right) -\max _xg\left( x \right) \right|&=\left| f\left( x^* \right) -\max _xg\left( x \right) \right|\,\, { x^*\text{是}f\left( x \right) \text{最大值}}\\&\leqslant \left| f\left( x^* \right) -g\left( x^* \right) \right|\\&\leqslant \max _x\left| f\left( x \right) -g\left( x \right) \right|\end{aligned} xmaxf(x)xmaxg(x) = f(x)xmaxg(x) xf(x)最大值f(x)g(x)xmaxf(x)g(x)

可得

∣ ( B ∗ V π ) ( s ) − ( B ∗ V π ′ ) ( s ) ∣ ⩽ ∣ γ max ⁡ a ∈ A ∑ s ′ ∈ S P s → s ′ a [ V π ( s ′ ) − V π ′ ( s ′ ) ] ∣ ⩽ γ max ⁡ a ∈ A ∣ ∑ s ′ ∈ S P s → s ′ a [ V π ( s ′ ) − V π ′ ( s ′ ) ] ∣ ⩽ γ max ⁡ a ∈ A ∑ s ′ ∈ S P s → s ′ a ∣ V π ( s ′ ) − V π ′ ( s ′ ) ∣    绝对值不等式 = γ ∑ s ′ ∈ S P s → s ′ a ∗ ∣ V π ( s ′ ) − V π ′ ( s ′ ) ∣ ⩽ γ ∑ s ′ ∈ S P s → s ′ a ∗ max ⁡ s ′ ′ ∣ V π ( s ′ ′ ) − V π ′ ( s ′ ′ ) ∣ = γ ∥ V π − V π ′ ∥ ∞ \begin{aligned}\left| \left( \mathcal{B} ^*V^{\pi} \right) \left( s \right) -\left( \mathcal{B} ^*V^{\pi '} \right) \left( s \right) \right|&\leqslant \left| \gamma \underset{a\in A}{\max}\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ V^{\pi}\left( s' \right) -V^{\pi '}\left( s' \right) \right] \right|\\&\leqslant \gamma \underset{a\in A}{\max}\left| \sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ V^{\pi}\left( s' \right) -V^{\pi '}\left( s' \right) \right] \right|\\&\leqslant \gamma \underset{a\in A}{\max}\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left| V^{\pi}\left( s' \right) -V^{\pi '}\left( s' \right) \right|\,\, { \text{绝对值不等式}}\\&=\gamma \sum_{s'\in S}{P_{s\rightarrow s'}^{a^*}}\left| V^{\pi}\left( s' \right) -V^{\pi '}\left( s' \right) \right|\\&\leqslant \gamma \sum_{s'\in S}{P_{s\rightarrow s'}^{a^*}}\underset{s''}{\max}\left| V^{\pi}\left( s'' \right) -V^{\pi '}\left( s'' \right) \right|\\&=\gamma \left\| V^{\pi}-V^{\pi '} \right\| _{\infty}\end{aligned} (BVπ)(s)(BVπ)(s) γaAmaxsSPssa[Vπ(s)Vπ(s)] γaAmax sSPssa[Vπ(s)Vπ(s)] γaAmaxsSPssa Vπ(s)Vπ(s) 绝对值不等式=γsSPssa Vπ(s)Vπ(s) γsSPssas′′max Vπ(s′′)Vπ(s′′) =γ VπVπ

同样根据巴拿赫不动点定理可知映射 B ∗ \mathcal{B} ^* B存在唯一的不动点。易知当策略取为

π ′ ( s ) = a r g max ⁡ a ∈ A Q π ( s , a ) = a r g max ⁡ a ∈ A ∑ s ′ ∈ S P s → s ′ a [ R s → s ′ a + γ V γ π ( s ′ ) ] \begin{aligned}\pi '\left( s \right) &=\mathrm{arg}\max _{a\in A}Q^{\pi}\left( s,a \right) \\&=\underset{a\in A}{\mathrm{arg}\max}\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ R_{s\rightarrow s'}^{a}+\gamma V_{\gamma}^{\pi}\left( s' \right) \right]\end{aligned} π(s)=argaAmaxQπ(s,a)=aAargmaxsSPssa[Rssa+γVγπ(s)]

与贝尔曼最优方程等价,亦即贪心策略 G ( V π ) = π ′ G\left( V^{\pi} \right) =\pi ' G(Vπ)=π与贝尔曼最优算子 B ∗ \mathcal{B} ^* B等价

B ∗ V π = B G ( V π ) V π = B π ′ V π \mathcal{B} ^*V^{\pi}=\mathcal{B} ^{G\left( V^{\pi} \right)}V^{\pi}=\mathcal{B} ^{\pi '}V^{\pi} BVπ=BG(Vπ)Vπ=BπVπ

3 策略迭代与价值迭代

贪心策略指向的结果是

B ∗ V π = B G ( V π ) V π = B π ′ V π \mathcal{B} ^*V^{\pi}=\mathcal{B} ^{G\left( V^{\pi} \right)}V^{\pi}=\mathcal{B} ^{\pi '}V^{\pi} BVπ=BG(Vπ)Vπ=BπVπ

上式表明,代表策略评估的贝尔曼期望方程 和代表策略改进的贝尔曼最优方程 通过贪心策略联系在一起

根据最大值和期望值的不等式有 B ∗ V π ⩾ B π V π \mathcal{B} ^*V^{\pi}\geqslant \mathcal{B} ^{\pi}V^{\pi} BVπBπVπ。在应用策略改进时,对 π \pi π的策略评估应当已经收敛,所以此时 B π V π = V π \mathcal{B} ^{\pi}V^{\pi}=V^{\pi} BπVπ=Vπ,从而 B π ′ V π ⩾ V π \mathcal{B} ^{\pi '}V^{\pi}\geqslant V^{\pi} BπVπVπ

接着对 π ′ \pi ' π进行策略评估(应用无穷次期望算子)得到新的状态函数值

V π ′ = lim ⁡ k → ∞ ( B π ′ ) k V π V^{\pi '}=\lim _{k\rightarrow \infty}\left( \mathcal{B} ^{\pi '} \right) ^kV^{\pi} Vπ=klim(Bπ)kVπ

而应用 B π ′ \mathcal{B} ^{\pi '} Bπ是使状态函数值单调递增的过程,那么 V π ′ ⩾ V π V^{\pi '}\geqslant V^{\pi} VπVπ,即策略得到单调性的改善。又因为 B ∗ \mathcal{B} ^* B存在唯一的不动点,所以最终会迭代到唯一且最优的策略 π ∗ \pi ^* π

简言之,可以任取一个策略 π 0 \pi ^0 π0按策略改进定理迭代,最终收敛到最优 ,称为策略迭代(policy iteration)

lim ⁡ k → ∞ ( B ∗ ) k V π 0 = V π ∗ \lim _{k\rightarrow \infty}\left( \mathcal{B} ^* \right) ^kV^{\pi ^0}=V^{\pi ^*} klim(B)kVπ0=Vπ

根据不动点定理,状态值函数值 V π ∗ V^{\pi ^*} Vπ也是唯一且最优的,因此也可以先计算出 V π ∗ V^{\pi ^*} Vπ,再通过贪心策略间接得到最优策略 π ∗ \pi ^* π,称为价值迭代(value iteration)

4 算法流程

策略迭代算法流程

在这里插入图片描述

价值迭代算法流程

在这里插入图片描述


🔥 更多精彩专栏

  • 《ROS从入门到精通》
  • 《Pytorch深度学习实战》
  • 《机器学习强基计划》
  • 《运动规划实战精讲》

👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇

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

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

相关文章

PHP正则绕过解析

正则绕过 正则表达式PHP正则回溯PHP中的NULL和false回溯案例案例1案例2 正则表达式 在正则中有许多特殊的字符,不能直接使用,需要使用转义符\。如:$,(,),*,,.,?,[,,^,{。 这里大家会有疑问:为啥小括号(),这个就需要两个来转义&a…

C++ 对象数组

**数组元素不仅可以是基本数据类型,也可以是自定义类型。**例如,要存储和处理某单位全体雇员的信息,就可以建立一个雇员类的对象数组。对象数组的元素是对象,不仅具有数据成员,而且还有函数成员。 因此,和基…

iframe跨域解决方案

在 Web 开发中,跨域是指在一个域(例如,https://www.example.com)的页面中请求了另一个域(例如,https://api.example.com)的资源,浏览器出于安全考虑会阻止这样的请求。为了解决 ifra…

C#实现旋转图片验证码

开发环境:C#,VS2019,.NET Core 3.1,ASP.NET Core 1、建立一个验证码控制器 新建两个方法Create和Check,Create用于创建验证码(返回1张图片和令牌),Check用于验证(验证图…

Json文件编辑功能

1 Json格式 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于 ECMAScript(European Computer Manufacturers Association, 欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。…

Curve深陷安全事件,OKLink如何破局

出品|欧科云链研究院 作者|Matthew Lee 7月31号,Curve 在平台表示 Vyper 0.2.15 的稳定币池由于编译器的漏洞所以遭到攻击。具体因为重入锁功能的失效,所以黑客可以轻易发动重入攻击,即允许攻击者在单次交易中执行某…

【运维】在阿里云上搭建自己的图床,配合PicGo和Typora使用

本文将详细介绍如何在阿里云上搭建自己的图床,包括购买OSS服务、配置域名解析、创建OSS存储桶和设置图片上传规则等步骤。希望对您有所帮助! 一、购买OSS服务 首先,我们需要在阿里云官网购买OSS(Object Storage Service)服务。OSS是阿里云提…

【Linux命令200例】cp用于复制文件和目录(常用)

🏆作者简介,黑夜开发者,全栈领域新星创作者✌,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆本文已收录于专栏:Linux命令大全。 🏆本专栏我们会通过具体的系统的命令讲解加上鲜…

《golang设计模式》第一部分·创建型模式-05-工厂方法模式(Factory Method)

文章目录 1 概述2.1 角色2.2 类图 2 代码示例2. 1 设计2.2 代码2.3 类图 3. 简单工厂3.1 角色3.2 类图3.3 代码示例3.3.1 设计3.3.2 代码3.3.3 类图 1 概述 工厂方法类定义产品对象创建接口,但由子类实现具体产品对象的创建。 2.1 角色 Product(抽象产…

opencv-38 形态学操作-闭运算(先膨胀,后腐蚀)cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

闭运算是先膨胀、后腐蚀的运算,它有助于关闭前景物体内部的小孔,或去除物体上的小黑点,还可以将不同的前景图像进行连接。 例如,在图 8-17 中,通过先膨胀后腐蚀的闭运算去除了原始图像内部的小孔(内部闭合的…

MacBook截取网页长图

第一步:⌘Command Option I 第二步:⌘Command Shift P 第三步: 红框内输入Capture full size screenshot,回车,长图会自动下载。

软考高项(六)项目管理概述 ★重点集萃★

👑 个人主页 👑 :😜😜😜Fish_Vast😜😜😜 🐝 个人格言 🐝 :🧐🧐🧐说到做到,言出必行&am…

VR实景导航——开启3D可视化实景导航新体验

数字化时代,我们大家出门在外都是离不开各种导航软件,人们对导航的需求也越来越高,而传统的导航软件由于精度不够,无法满足人们对真实场景的需求,这个时候就需要VR实景导航为我们实景指引目的地的所在。 VR实景导航以其…

新一代开源流数据湖平台Apache Paimon入门实操-上

文章目录 概述定义核心功能适用场景架构原理总体架构统一存储基本概念文件布局 部署环境准备环境部署 实战Catalog文件系统Hive Catalog 创建表创建Catalog管理表查询创建表(CTAS)创建外部表创建临时表 修改表修改表修改列修改水印 概述 定义 Apache Pa…

【每日一题】—— C. Challenging Cliffs(Codeforces Round 726 (Div. 2))

🌏博客主页:PH_modest的博客主页 🚩当前专栏:每日一题 💌其他专栏: 🔴 每日反刍 🟡 C跬步积累 🟢 C语言跬步积累 🌈座右铭:广积粮,缓称…

SpringBoot 项目创建与运行

一、Spring Boot 1、什么是Spring Boot?为什么要学 Spring Boot Spring 的诞生是为了简化 Java 程序的开发的,而 Spring Boot 的诞生是为了简化 Spring 程序开发的。 Spring Boot 翻译一下就是 Spring 脚手架 盖房子的这个架子就是脚手架,…

【Linux】网络编程套接字

1 预备知识 1.1 IP地址 IP协议有两个版本,分别是IPv4和IPv6。没有特殊说明,默认都是IPv4对于IPv4,IP地址是一个四个字节32为的整数;对于IPv6来说,IP地址是128位的整数 我们通常也使用 “点分十进制” 的字符串表示IP…

C 语言高级1-内存分区,多级指针,位运算

目录 1. 内存分区 1.1 数据类型 1.1.1 数据类型概念 1.1.2 数据类型别名 1.1.3 void数据类型 1.1.4 sizeof操作符 1.1.5 数据类型总结 1.2 变量 1.1.1 变量的概念 3.1.2 变量名的本质 1.3 程序的内存分区模型 1.3.1 内存分区 1.3.1.1 运行之前 1.3.1.2运行之后 1…

无涯教程-Perl - 循环语句

在某些情况下,您需要多次执行一个代码块。通常,语句是按顺序执行的:函数中的第一个语句首先执行,然后第二个执行,依此类推。 Perl编程语言提供了以下类型的循环来处理循环需求。 Sr.No.Loop Type & 描述1 while loop在给定条…

Redis-1

Redis 理论部分 redis 速度快的原因 1、纯内存操作 2、单线程操作,避免了频繁的上下文切换和资源争用问题,多线程需要占用更多的 CPU 资源 3、采用了非阻塞 I/O 多路复用机制 4、提供了非常高效的数据结构,例如双向链表、压缩页表和跳跃…