贝尔曼最优方程【BOE】

强化学习笔记

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

第一章 强化学习基本概念
第二章 贝尔曼方程
第三章 贝尔曼最优方程


文章目录

  • 强化学习笔记
  • 一、最优策略
  • 二、贝尔曼最优方程(BOE)
  • 三、BOE的求解
    • 1 求解方法
    • 2 实例
  • 四、BOE的最优性
  • 参考资料


上一节讲了贝尔曼方程,这一节继续在贝尔曼方程的基础上讲贝尔曼最优方程,后面的策略迭代和值迭代算法都是根据贝尔曼最优方程来的.

一、最优策略

强化学习的最终目标是获得最优策略,所以有必要首先定义什么是最优策略。该定义基于状态值,比如,我们考虑两个给定策略 π 1 \pi_1 π1 π 2 \pi_2 π2。若任一状态 π 1 \pi_1 π1的状态值大于等于 π 2 \pi_2 π2的状态值,即:
v π 1 ( s ) ≥ v π 2 ( s ) , ∀ s ∈ S , v_{\pi_1}(s)\geq v_{\pi_2}(s),\quad\forall s\in\mathcal{S}, vπ1(s)vπ2(s),sS,
那么我们称 π 1 \pi_1 π1是比 π 2 \pi_2 π2更好的策略.最优策略就是所有可能的策略中最好的,定义如下:

截屏2024-03-19 16.34.52

如何得到这个策略呢?需要求解贝尔曼最优方程.

二、贝尔曼最优方程(BOE)

贝尔曼最优方程(Bellman Optimal Equation,BOE),就是最优策略条件下的贝尔曼方程
v ( s ) = max ⁡ π ∑ a π ( a ∣ s ) ( ∑ r p ( r ∣ s , a ) r + γ ∑ s ′ p ( s ′ ∣ s , a ) v ( s ′ ) ) , ∀ s ∈ S = max ⁡ π ∑ a π ( a ∣ s ) q ( s , a ) s ∈ S \begin{aligned} v\left(s\right)& =\max_{\pi}\sum_{a}\pi(a|s)\left(\sum_{r}p(r|s,a)r+\gamma\sum_{s'}p(s'|s,a)v(s')\right),\quad\forall s\in\mathcal{S} \\ &=\max_{\pi}\sum_{a}\pi\left(a|s\right)q\left(s,a\right)\quad s\in{\mathcal S} \end{aligned} v(s)=πmaxaπ(as)(rp(rs,a)r+γsp(ss,a)v(s)),sS=πmaxaπ(as)q(s,a)sS
注意:

  1. p ( r ∣ s , a ) , p ( s ′ ∣ s , a ) p(r|s,a),p(s^{\prime}|s,a) p(rs,a),p(ss,a) 给定
  2. v ( s ) , v ( s ′ ) v(s),v(s^{\prime}) v(s),v(s) 是需要计算的变量
  3. π \pi π为优化变量

我们可以发现贝尔曼最优方程存在两个未知数 v v v π \pi π,一个方程怎么求解两个未知数呢?我们以下列式子说明,是可以求解的。
截屏2024-03-17 15.26.11

也就是说在求解时,可以固定一个变量,先求max的变量.

截屏2024-03-17 15.28.38

受上面例子的启发,考虑到 ∑ a π ( a ∣ s ) = 1 \sum_a\pi(a|s)=1 aπ(as)=1,我们有:

υ ( s ) = max ⁡ π ∑ a π ( a ∣ s ) ( ∑ r p ( r ∣ s , a ) r + γ ∑ s ′ p ( s ′ ∣ s , a ) v ( s ′ ) ) , = max ⁡ π ∑ a π ( a ∣ s ) q ( s , a ) = max ⁡ a ∈ A ( s ) q ( s , a ) \begin{aligned} \upsilon(s)& \begin{aligned}=\max_{\color{red}{\pi}}\sum_{a}\pi(a|s)\left(\sum_{r}p(r|s,a)r+\gamma\sum_{s'}p(s'|s,a)v(s')\right),\end{aligned} \\ &=\max_{\color{red}{\pi}}\sum_{a}\color{red}{\pi(a|s)}q(s,a) \\ &=\max_{\color{red}{a\in\mathcal{A}(s)}}q(s,a) \end{aligned} υ(s)=πmaxaπ(as)(rp(rs,a)r+γsp(ss,a)v(s)),=πmaxaπ(as)q(s,a)=aA(s)maxq(s,a)
我们通过先对 π \pi π变量求max,最后将问题转换为:
v ( s ) = max ⁡ a ∈ A ( s ) q ( s , a ) v(s)=\max_{\color{red}{a\in\mathcal{A}(s)}}q(s,a) v(s)=aA(s)maxq(s,a)而这个方程与 π \pi π无关了,只有一个变量,那就是 v ( s ) v(s) v(s)(向量形式),如何求解这个方程呢?下面介绍如何用迭代法进行求解.

三、BOE的求解

1 求解方法

我们考虑BOE的向量形式:
v = f ( v ) = max ⁡ π ( r π + γ P π v ) v=f(v)=\max_{\pi}(r_\pi+\gamma P_\pi v) v=f(v)=πmax(rπ+γPπv)而这个函数 f f f是一个压缩映射,压缩常数为 γ \gamma γ,证明见参考资料1的对应章节。什么是压缩映射?
定义(压缩映射)

如果存在 α ∈ ( 0 , 1 ) \alpha\in(0,1) α(0,1),使得函数 g g g ∀ x 1 , x 2 ∈ dom ⁡ g \forall x_1,x_2\in \operatorname{dom} g x1,x2domg满足
∥ g ( x 1 ) − g ( x 2 ) ∥ ≤ α ∥ x 1 − x 2 ∥ \|g(x_1)-g(x_2)\|\leq\alpha\|x_1-x_2\| g(x1)g(x2)αx1x2则我们称 g g g为一个压缩映射,称常数 α \alpha α为压缩常数.

f f f是压缩映射有什么用呢?这里需要先介绍一下压缩映射原理.

定理(压缩映射原理)

g g g [ a , b ] [a,b] [a,b] 上的一个压缩映射,则

  1. g g g [ a , b ] [ a, b] [a,b]存在唯一的不动点 ξ = g ( ξ ) \xi=g\left(\xi\right) ξ=g(ξ) ;
  2. 任何初始值 x 0 ∈ [ a , b ] x_0\in[a,b] x0[a,b] 和递推公式
    x n + 1 = g ( x n ) , n ∈ N ∗ x_{n+1}=g\left(x_n\right),n\in N^* xn+1=g(xn)nN 生成的数列 { x n } \{x_n\} {xn} 一定收敛于 ξ \xi ξ.

这也就是说,压缩映像原理给出了一个求不动点的方法,而BOE的 f f f是压缩映射,因此我们有

截屏2024-03-19 19.29.54

具体来看每一次迭代怎么算:

截屏2024-03-19 19.32.10

当我们计算每个状态 s s s时,我们由 v k ( s ′ ) v_k(s') vk(s)可以计算得到 q k ( s , a ) q_k(s,a) qk(s,a),然后再求最大就得到 v k + 1 ( s ) v_{k+1}(s) vk+1(s)了。值得注意的是上述方程右端取得最优值时,我们有:
π k + 1 ( a ∣ s ) = { 1 a = a ∗ , 0 a ≠ a ∗ . \pi_{k+1}(a|s)=\begin{cases} 1 & a=a^*,\\ 0 & a\neq a^*. \end{cases} πk+1(as)={10a=a,a=a.其中 a ∗ = arg ⁡ max ⁡ a q k ( s , a ) a^*=\arg\max\limits_a q_k(s,a) a=argamaxqk(s,a),这个策略被称为greedy policy,也就是每次都选择动作值(q值)最大的动作.

Note:

  • 值得注意的是,任意给 v 0 ∈ dom ⁡ f v_0\in\operatorname{dom} f v0domf,都能收敛到不动点.

2 实例

我们考虑如下这样一个问题,还是智能体走格子:

  • 状态集: s 1 , s 2 , s 3 s_1,s_2,s_3 s1,s2,s3其中 s 2 s_2 s2是目标状态.
  • 动作集: a l , a 0 , a r a_l,a_0,a_r al,a0,ar分别代表向左、原地不动、向右.
  • 奖励:进入 s 2 s_2 s2+1,走出格子-1。

截屏2024-03-19 19.45.20
回顾上一章讲动作值函数和状态值函数的关系,我们可以写出 q ( s , a ) q(s,a) q(s,a) v ( s ) v(s) v(s)的关系:
截屏2024-03-19 19.48.32
下面给定一个 v ( s ) v(s) v(s)的初始值,进行迭代:
截屏2024-03-19 19.53.21

显然,从直观上我们知道当前策略已经是最好的了。如果继续进行迭代,得到的策略不会再改变了,那么迭代算法怎么停止呢?停止准则可以通过如下公式进行判断:
∥ v k + 1 − v k ∥ ≤ ϵ \|v_{k+1}-v_k\|\leq\epsilon vk+1vkϵ其中 ϵ \epsilon ϵ是一个给定的很小的值,也就是相邻两次 v v v相差很小时,我们认为 v v v已经逼近精确值了.

四、BOE的最优性

上面介绍怎么求解BOE的过程中,我们同时通过greedy policy的方法得到了最优策略:
π ∗ = arg ⁡ max ⁡ π ( r π + γ P π v ∗ ) \pi^*= \arg\max\limits_\pi (r_\pi+\gamma P_\pi v^*) π=argπmax(rπ+γPπv)其中 v ∗ v^* v π ∗ \pi^* π对应的状态值,那么求解贝尔曼最优方程得到的这个 π ∗ \pi^* π是不是最优策略呢?有如下定理进行保证.

截屏2024-03-19 20.08.54

这个定理保证了,我们通过求解BOE得到的策略是最优策略,证明见参考资料1的对应章节.

截屏2024-03-19 20.10.41

参考资料

  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.mzph.cn/news/768793.shtml

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

相关文章

【linux】进程1 -- 属性

文章目录 进程PCBlinux查看进程 进程属性task_struct结构体一、进程标识符父子进程 二、进程状态磁盘睡眠 -- D 暂停和跟踪暂停 -- T和t僵尸进程 -- Z孤儿进程 三、进程优先级 进程 课本概念:程序的一个执行实例,正在执行的程序,操作系统进行…

反序列化漏洞简单知识

目录: 一、概念: 二、反序列化漏洞原因 三、序列化漏洞的魔术方法: 四、反序列化漏洞防御: 一、概念: 序列化: Web服务器将HttpSession对象保存到文件系统或数据库中,需要采用序列化的…

nodejs+vue反诈科普平台的设计与实现pythonflask-django-php

相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低反诈科普平台的运营人员成本,实现了反诈科普平台的标准化、制度化、程序化的管理,有效地防止了反诈科普平台的随意管理,提高了信息的处理速度和精确度,能够…

AIGC、3D模型、轻量化、格式转换、可视化、数字孪生引擎...

老子云3D可视化快速开发平台,集云压缩、云烘焙、云存储云展示于一体,使3D模型资源自动输出至移动端PC端、Web端,能在多设备、全平台进行展示和交互,是全球领先、自主可控的自动化3D云引擎。 平台架构 平台特性 基于 HTML5 和 Web…

IP 报头和以太网报头

IP 报头和以太网报头是计算机网络中两个重要的报头,它们分别用于网络层和数据链路层。虽然它们都包含用于路由和寻址信息,但它们在功能和结构上存在着一些关键差异。 IP 报头 IP 报头是网络层协议,它负责在网络上路由数据包。它包含以下信息…

微信小程序实现多张照片上传

hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页:code袁 💥 所属专栏&…

springboot+vue导出excel并下载

引入easyexcel依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.2</version></dependency>编写接口 /*** 批量导出** param ids* return*/PostMapping("/export"…

​如何下载virtualbox的旧版本​

1. 打开VirtualBox官网&#xff1a;https://www.virtualbox.org/wiki/Download_Old_Builds 2. 在页面上找到“VirtualBox 5.2.x”或者“VirtualBox 6.0.x”等旧版本的链接&#xff0c;点击进入。 3. 在页面上找到对应操作系统的下载链接&#xff0c;点击下载。 4. 下载完成后…

Linux 进程通信:命名管道、共享内存

目录 一、命名管道 1、概念 2、特点 3、原理 4、创建 5、匿名管道与命名管道的区别 6、命名管道的打开规则 二、命名管道—实现客户端和服务器之间的通信 1、Makefile 2、comm.hpp 3、Log.hpp 4、server.cxx 5、client.cxx 运行测试&#xff1a; 三、system V…

java泛型详解

java泛型详解 目录 一、泛型类 二、泛型方法 三、类型变量限定 四、类型擦除 4.1与4.2&#xff1a;虚拟机中没有泛型 4.3&#xff1a;翻译泛型表达式 五、继承规则&#xff08;通配符的上下限&#xff09; 捕获通配符。 六、约束与局限性 大部分的泛型文章只涉及到泛…

Matlab进阶绘图第47期—气泡分组蝴蝶图

气泡分组蝴蝶图是分组蝴蝶图与气泡图的组合——在分组蝴蝶图每组柱子上方添加大小不同的气泡&#xff0c;用于表示另外一个数据变量&#xff08;如每组柱子值的和&#xff09;的大小。 本文利用自己制作的BubbleButterfly工具&#xff0c;进行气泡分组蝴蝶图的绘制&#xff0c…

Docker 入门使用说明

Docker 入门使用说明 Docker 安装 Docker 官网&#xff1a;Docker Docker 安装说明&#xff1a;Docker 安装说明 这里由于 Docker 在实时更新&#xff0c;所以每次安装 Docker 用来导入 key 的链接可能会有变化&#xff0c;这里就参考官方的安装方法即可 Docker 常用命令说…

用go实现一个任务调度类 (泛型)

用go实现一个任务调度类 &#xff08;泛型&#xff09; 源码地址&#xff1a; https://github.com/robinfoxnan/BirdTalkServer/blob/main/server/core/workmanager.go 1.概述 实现了一个简单的任务管理系统&#xff0c;允许用户定义任务和工作者&#xff0c;并将任务分配给…

ARM 用串口来实现灯的点亮

main.c #include "uart4.h"//封装延时函数void delay(int ms){int i,j;for(i0;i<ms;i){for(j0;j<2000;j){}}}int main(){led_init();uart4_init();//char buf[128];char *str;//char i;while(1){/*igetchar();putchar(i1);putchar(\n);putchar(\r);*/strgets(…

013_Linux(上传rz,下载sz,tar,zip,unzip)

目录 一、上传、下载 1、通过鼠标操作 &#xff08;1&#xff09;下载 &#xff08;2&#xff09;上传 2、通过命令操作 rz、sz &#xff08;1&#xff09;下载 sz &#xff08;2&#xff09;上传 rz 二、压缩、解压 1、tar命令 &#xff08;1&#xff09;压缩 &…

Jenkins hudson.plugins.git.GitSCM.ALLOW_LOCAL_CHECKOUT 属性设置问题

ERROR: Checkout of Git remote ‘local/path’ aborted because it references a local directory, which may be insecure. You can allow local checkouts anyway by setting the system property ‘hudson.plugins.git.GitSCM.ALLOW_LOCAL_CHECKOUT’ to true. Finished: F…

PMP考试备考——项目管理标准

项目的定义和特性 项目 是为创造独特的产品、服务或成果而进行的临时性工作。这意味着项目具有以下几个关键特征&#xff1a; 临时性&#xff1a;项目有一个明确的开始和结束日期&#xff0c;不同于持续运营的工作。独特性&#xff1a;每个项目都有其独特之处&#xff0c;即使…

QT----基于QT的人脸考勤系统ubuntu系统运行,编译开发板

目录 1 Ubantu编译opencv和seetaface库1.1 Ubantu编译opencv1.2 Ubuntu编译seetaface1.3 安装qt 2 更改代码2.1 直接运行报错/usr/bin/ld: cannot find -lGL: No such file or directory2.2 遇到报错摄像头打不开2.3 修改部分代码2.4 解决中文语音输出问题 3 尝试交叉编译rk358…

【 Mysql8.0 忘记登录密码 可以试试 】

** Mysql8.0 忘记登录密码 可以试试 ** 2024-3-21 段子手168 1、首先停止 mysql 服务 &#xff0c;WIN R 打开运行&#xff0c;输入 services.msc 回车打开服务&#xff0c;找到 mysql 服务&#xff0c;停止。 然后 WIN R 打开运行&#xff0c;输入 CMD 打开控制台终端输…

yolov5训练并生成rknn模型部署在RK3588开发板上,实现NPU加速推理

简介 RK3588是瑞芯微&#xff08;Rockchip&#xff09;公司推出的一款高性能、低功耗的集成电路芯片。它采用了先进的28纳米工艺技术&#xff0c;并配备了八核心的ARM Cortex-A76和Cortex-A55处理器&#xff0c;以及ARM Mali-G76 GPU。该芯片支持多种接口和功能&#xff0c;适…