贝尔曼最优方程【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…

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

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

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

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

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

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

Docker 入门使用说明

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

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

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

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

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

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 服务 ,WIN R 打开运行,输入 services.msc 回车打开服务,找到 mysql 服务,停止。 然后 WIN R 打开运行,输入 CMD 打开控制台终端输…

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

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

shell脚本入门练习(非常详细)零基础入门到精通,收藏这一篇就够了

【脚本1】打印形状 打印等腰三角形、直角三角形、倒直角三角形、菱形 #!/bin/bash \# 等腰三角形 read \-p "Please input the length: " n for i in \seq 1 $n\ do for ((j\$n;j>i;j--)) do echo \-n " " done for m in \seq 1 $i\ do…

淘宝1688京东...商品详情数据采集,按关键词搜索商品列表

淘宝、1688、京东等电商平台的商品详情数据采集以及按关键词搜索商品列表,通常可以通过以下几种方法实现: 请求示例,API接口接入Anzexi58 一、使用API接口 这些电商平台通常都提供开放API接口,允许开发者调用接口获取所需的数据…

【Linux】网络编程套接字一

网络编程套接字一 1.预备知识1.1理解源IP地址和目的IP地址1.2认识端口号1.3认识TCP协议1.4认识UDP协议1.5网络字节序 2.socket编程接口3.UDP网络程序3.1UDP Server服务器端3.2UDP Client客户端 4.根据UDP客户端服务端做的设计4.1字典热加载4.2shell命令行4.3聊天室 5.windows客…

WSL下Ubuntu+RTX4090安装CUDA+cuDnn+Pytorch

安装驱动 首先需要明确的是,在WSL下安装Ubuntu,如果要使用主机的GPU卡,只需要在主机Windows上安装驱动,Linux中不需要安装驱动,可以在Linux中使用nvidia-smi命令查看驱动版本。 安装CUDA 避坑注意事项:如…

网络原理(6)——IP协议

目录 一、网段划分 现在的网络划分: 1、一般情况下的家庭网络环境 2、IP地址 3、子网掩码 4、网关 以前的网络划分: 二、特殊IP 1、环回 IP 2、主机号为全 0 的IP 3、广播地址IP 三、路由选择(路线规划) 一、网段划分…

毕业论文降重(gpt+完美降重指令),sci论文降重gpt指令——超级好用,重复率低于4%

1. 降重方法:gpt降重指令 2. gpt网站 https://yiyan.baidu.com/ https://chat.openai.com/ 3. 降重指令——非常好用!!sci论文,本硕大论文都可使用! 请帮我把下面句子重新组织,通过调整句子逻辑&#xff0…

通过命令在Windows入站出站放行上放行端口8090, 8443, 5222, 8021

可以通过循环结构来简化操作,下面分别创建入站和出站规则的示例: 入站规则 $ports 8090, 8443, 5222, 8021foreach ($port in $ports) {New-NetFirewallRule -DisplayName "Allow Inbound Port $($port)" -Direction Inbound -Action Allow…