【强化学习的数学原理】第02课-贝尔曼公式-笔记

news2024/11/27 5:13:01

学习资料:bilibili 西湖大学赵世钰老师的【强化学习的数学原理】课程。链接:强化学习的数学原理 西湖大学 赵世钰

文章目录

  • 一、为什么return重要?如何计算return?
  • 二、state value的定义
  • 三、Bellman公式的详细推导
  • 四、公式向量形式与求解
  • 五、Action value的定义
  • 六、本节课内容summary


一、为什么return重要?如何计算return?

在这里插入图片描述
上面三幅图分别代表三个策略,从直观上我们可以判断,左边策略是最好的,因为它不经过forbidden area就能到达终点;中间策略是最差的,因为它经过了forbidden area;右边策略是既不好也不差的,因为它有一定的概率经过forbioden area到达终点,也有一定的概率不经过forbidden area而直接到达终点。

那么,该如何用数学的方式来直观地表达不同策略的优劣呢?答案就是用return来表示

对于左边策略,计算return1:
在这里插入图片描述

对于中间策略,计算return2:
在这里插入图片描述
对于右边策略,计算return3:
严格来说这个return3已经不再是return的概念了,因为return的定义表明,return是根据一个轨迹trajectory计算出来的,而这里的return3是根据两个轨迹共同计算出来的。这里的return3其实是后面state value的概念。
在这里插入图片描述
得出结果,return1>return3>return2。所以,可以用return来直观地表达不同策略的优劣。

那么该如何计算return呢?
请看下图推导过程。发现从不同状态出发得到的return,依赖于从其他状态得到的return。这个idea在强化学习中被称为bootstrapping,常常指从自己出发,不断迭代所得到的结果。因此,下面有4个未知数v1-v4,同时也有4个方程,所以可以使用线性代数的方法解出未知数。
在这里插入图片描述
在这里插入图片描述
上图中的式子其实就是贝尔曼公式,但只适用于确定性问题。上面这个式子告诉我们:一个状态的value实际上依赖于其他状态的value。

下图是一个应用的小例子,可以辅助理解。
在这里插入图片描述

二、state value的定义

下图介绍了一些符号。
注意:
(1) R t + 1 R_{t+1} Rt+1其实也可以写成 R t R_{t} Rt,就是说在状态 S t S_{t} St下选择了动作 A t A_{t} At,得到了奖励 R t R_{t} Rt。这是说得通的,但一般都习惯性地写成 R t + 1 R_{t+1} Rt+1
(2)S、A、R都是随机变量,所以可以对它们求期望等操作。
(3)这个single-step process是由概率分布决定的。(见下图三行蓝字)
(4)我们假设我们已知模型,即已知概率分布。
在这里插入图片描述
考虑下面的trajectory。在状态 S t S_{t} St下选择了动作 A t A_{t} At,得到了奖励 R t R_{t} Rt,转移到状态 S t + 1 S_{t+1} St+1,再选择动作 A t + 1 A_{t+1} At+1……对这一个trajectory,可以求discounted return,结果用 G t G_t Gt表示。
在这里插入图片描述
有了上面的铺垫,下面来讨论state value。下图是对state value的定义。 G t G_t Gt表示一个trajectory的discounted return,而state value就是 G t G_t Gt的期望值/平均值,这个期望值是在当前状态s下来计算的,也就是对多个trajectory的平均。
state value表示为 v π ( s ) v_π(s) vπ(s),也可以表示为 v ( s , π ) v(s, π) v(s,π)

注意:
(1) v π ( s ) v_π(s) vπ(s)是关于s的一个函数,所以从不同的状态s出发,会得到不同的trajectory,因而discounted return也不同,期望值也不同。
(2) v π ( s ) v_π(s) vπ(s)是一个与策略相关的函数。不同的策略也会带来不同的state value。
(3) v π ( s ) v_π(s) vπ(s)代表状态s的价值,如果某一个状态s的state value更大,则代表从该状态s出发,可能得到更多的return。
(4)return 和 state value 有什么区别?return是针对单个trajectory求出来的奖励,而state value是对多个trajectory得到的奖励再求平均值。
在这里插入图片描述

例:针对图中3个策略分别计算其state value。
在这里插入图片描述

三、Bellman公式的详细推导

下图回顾了trajectory的含义,以及 G t G_t Gt可以被写成当前的即时回报 R t + 1 R_{t+1} Rt+1与未来回报 G t + 1 G_{t+1} Gt+1的和。然后我们再看state value的定义,state value本质上是对多个trajectory的累计回报求均值,而求均值这个操作是可以被拆分的,因此可以转化成下图中蓝字所呈现的形式。其中, E [ R t + 1 ∣ S t = s ] E[R_{t+1}|S_t=s] E[Rt+1St=s] 表示在状态s下获得的即时回报 R t + 1 R_{t+1} Rt+1的期望, E [ G t + 1 ∣ S t = s ] E[G_{t+1}|S_t=s] E[Gt+1St=s] 表示在状态s下,从下一个状态出发,走过多个trajectory的累计回报的均值。下面,分别计算 E [ R t + 1 ∣ S t = s ] E[R_{t+1}|S_t=s] E[Rt+1St=s] E [ G t + 1 ∣ S t = s ] E[G_{t+1}|S_t=s] E[Gt+1St=s]
在这里插入图片描述

首先,计算 E [ R t + 1 ∣ S t = s ] E[R_{t+1}|S_t=s] E[Rt+1St=s] E [ R t + 1 ∣ S t = s ] E[R_{t+1}|S_t=s] E[Rt+1St=s] 表示在状态s下获得的即时回报 R t + 1 R_{t+1} Rt+1的期望。在状态s下,我可以选择动作 a 1 a_1 a1 a 2 a_2 a2 a 3 a_3 a3…,而对于其中任意一个动作 a i a_i ai,都有可能带来不同的即时回报 r 1 r_1 r1 r 2 r_2 r2 r 3 r_3 r3…,所有这些即时回报的均值就是我们要求的 R t + 1 R_{t+1} Rt+1。所以,要求 E [ R t + 1 ∣ S t = s ] E[R_{t+1}|S_t=s] E[Rt+1St=s],先算在状态s下可能选择哪些动作a,以及选择动作a的概率 π ( a ∣ s ) π(a|s) π(as)有多大,如下图推导过程中第1行所示。然后再算 E [ R t + 1 ∣ S t = s , A t = a ] E[R_{t+1}|S_t=s, A_t=a] E[Rt+1St=s,At=a],即在状态s的情况下,选择动作a可能会带来哪些回报r,带来回报r的概率 p ( r ∣ s , a ) p(r|s,a) p(rs,a) 有多大。
在这里插入图片描述

然后,计算 E [ G t + 1 ∣ S t = s ] E[G_{t+1}|S_t=s] E[Gt+1St=s] E [ G t + 1 ∣ S t = s ] E[G_{t+1}|S_t=s] E[Gt+1St=s] 表示在状态s下,从下一个状态出发,走过多个trajectory的累计回报的均值。

先看下面推导过程中的第1行。要算 E [ G t + 1 ∣ S t = s ] E[G_{t+1}|S_t=s] E[Gt+1St=s],也就是要算从当前状态s出发,能够到达哪些状态?这些状态的每一个 G t + 1 G_{t+1} Gt+1 分别是什么?把所有的 G t + 1 G_{t+1} Gt+1 都求出来,再取一个均值,就得到了 E [ G t + 1 ∣ S t = s ] E[G_{t+1}|S_t=s] E[Gt+1St=s]。第1行中的 p ( s ′ ∣ s ) p(s'|s) p(ss) 表示从当前状态s出发,转移到状态s’的概率。 E [ G t + 1 ∣ S t = s , S t + 1 = s ′ ] E[G_{t+1}|S_t=s, S_{t+1}=s'] E[Gt+1St=s,St+1=s] 表示当前状态为s,下一个状态为s’时所获得的state value。

再看下面推导过程中的第2行。第2行其实是对第1行进行了简化。根据马尔科夫决策过程的无记忆性(memoryless property),在t+1时刻所获得的累计回报return G t + 1 G_{t+1} Gt+1 只和 t+1 时刻的状态有关,和 t 时刻的状态是没关系的,所以可以去掉公式中的 S t = s S_t=s St=s 部分。

再看下面推导过程中的第3行。 E [ G t + 1 ∣ S t + 1 = s ′ ] E[G_{t+1}|S_{t+1}=s'] E[Gt+1St+1=s] 其实就是 v π ( s ′ ) v_π(s') vπ(s) ,可以再进一步简化。

再看下面推导过程中的第4行。 p ( s ′ ∣ s ) p(s'|s) p(ss) 表示从当前状态s出发,转移到状态s’的概率,可对其进一步扩展。表示从当前状态s出发,选择状态a,转移到状态s’的概率 p ( s ′ ∣ s , a ) p(s'|s, a) p(ss,a),再乘上从当前状态s出发,选择动作a的概率 π ( a ∣ s ) π(a|s) π(as)
在这里插入图片描述
现在,可以给出贝尔曼公式的表达式。
在这里插入图片描述
Highlights:
(1)贝尔曼公式描述了不同状态的state value之间的关系。比如,在上式中,状态s的state value 和状态s’的state value,两者的关系就可以通过贝尔曼公式表达出来。
(2)公式包含两项,一部分是即时奖励,一部分是未来奖励。
(3)这个式子不仅仅针对一个状态s,对于状态空间S中的任意一个状态s,上述式子都是成立的。所以如果有n个状态,就对应着n个式子。
(4) v π ( s ) v_π(s) vπ(s) 的计算可以通过bootstrapping的方法。(n个方程,n个未知数,联立求解。)
(5)贝尔曼公式是依赖于policy π ( a ∣ s ) π(a|s) π(as) 的。所以对于任何一个policy π ( a ∣ s ) π(a|s) π(as) ,如果把state value计算出来,那也就能够评判这个policy π ( a ∣ s ) π(a|s) π(as) 的好坏了。这个过程就是policy evaluation。
(6) p ( s ′ ∣ s , a ) p(s'|s, a) p(ss,a) p ( r ∣ s , a ) p(r|s, a) p(rs,a) 被称作dynamic model。在本节学习过程中,假设这个model是已知的。若不知道这个model,仍然可以计算出state value,这是model free reinforcement learning相关的算法。

下面是一个小练习。参考下面这张图,根据贝尔曼公式,写出这张图对应的贝尔曼方程。得到最下面的结果。其实最终结果也可以通过直接手写方便地得到,0表示即时奖励(r=0), v π ( s 3 ) v_π(s_3) vπ(s3)表示未来的奖励,再乘上一个折扣因子γ即可。
在这里插入图片描述

四、公式向量形式与求解

把贝尔曼公式转换成 Matrix-vector form,更加有利于我们去求解。先对贝尔曼公式进行烟花,转换成下图所示的“即时奖励+未来奖励”的形式。
在这里插入图片描述
为了识别不同的状态,在下图的贝尔曼公式中,给状态标上号。如下图所示, v π ( s i ) v_{\pi}(s_i) vπ(si)等于即时奖励 r Π ( s i ) r_Π(s_i) rΠ(si)再加上未来奖励。从状态 s i s_i si 跳转到下一个状态有j中可能性,用转移概率乘上每个状态的state value,就是未来奖励。这个公式可以简化成下图中蓝字的形式。
在这里插入图片描述
举一个具体的例子,当只有4种状态的时候,贝尔曼公式可以写成下图的矩阵表示。
在这里插入图片描述
这是另一个例子:
在这里插入图片描述
为什么要求解state value?
求解出state value后,方便我们去评价一个policy究竟是好还是坏。这也被称作policy evaluation

如何求解state value?
在这里插入图片描述

策略一: closed-form solution
但是,如果状态空间比较大,那么矩阵的维数也比较大,不方便求解。
在这里插入图片描述
策略二: iterative solution
在k=0时,假设对于所有的状态s, v π ( s ) v_{\pi}(s) vπ(s) 都等于0,把0带入到贝尔曼公式进行计算,得到k=1时的所有 v π ( s ) v_{\pi}(s) vπ(s) , 再把所有k=1时的 v π ( s ) v_{\pi}(s) vπ(s) 代入到贝尔曼公式进行计算,得到k=2时的所有 v π ( s ) v_{\pi}(s) vπ(s) …… 一直以此类推下去。可以证明,当k趋向于 无穷的时候, v k v_k vk 会收敛到 v π v_\pi vπ (证明过程略)。
在这里插入图片描述
下图展示了两个比较好的策略所计算出的state value.可以发现, (1)靠近target area的格子,它们的state value都比较大,远离target area的格子,它们的state value都比较小;(2)仔细观察能发现,上下两个策略略有不同,但他们算出来的state value都是一样的。所以即使策略不同,算出来的state value也可能相同。
在这里插入图片描述
下面是两个比较差的策略。格子的state value基本都是负值。因此可以更直观地发现,可以通过计算state value来评判一个policy是不是好。
在这里插入图片描述

五、Action value的定义

state value 和 action value有什么区别和联系呢?
state value 指的是从一个状态出发所得到的average return;
action value 指的是从一个状态出发,并且选择了一个action,所得到的average return。

为什么要关注action value?
因为强化学习的目标是得到一个最优策略,策略实际上是由一系列的action组成(在哪个状态应该选择什么样的action)。那么,对于若干可选的action,我可以选择哪些呢?这就需要根据action value来做判断。
在这里插入图片描述
下图是关于action value的定义。有两点需要注意:
(1)action value 是一个关于状态-动作对 ( s , a ) (s, a) (s,a) 的函数。
(2)action value 的值依赖于策略 π {\pi} π
在这里插入图片描述

在数学上,action value 和 state value 有哪些联系?
本节开头种提到,state value 和 action value 实际上就差了一个动作a。所以 state value 可以写成 action value 再乘上 π ( a ∣ s ) \pi(a|s) π(as) 的形式。如下图所示。
在这里插入图片描述
根据之前的推导,贝尔曼公式可以写成下图公式(3)的形式。通过比较式(2)和式(3),可以推导出action value的表达式。如下图种式(4)所示。

公式(2)告诉我们,如果知道了action value,就可以算出state value。
公式(4)告诉我们,如果知道了state value,可以算出action value。

在这里插入图片描述
下图是一个例子,看图写action value。因为这个图比较简单,所以可以通过判断“即时奖励”和“未来奖励”的方式很快手写出来。
在这里插入图片描述
在这里插入图片描述
Highlights:
(1)action value是非常重要的,可以帮助我们确定该选择哪个action。
(2)如何计算action value?有两种方法。第一,可以先把state value都算出来,再套公式计算action value。第二,可以通过数据的方式,不计算state value而直接计算出action value(未来会介绍)。

六、本节课内容summary

在这里插入图片描述

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

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

相关文章

【数据结构实战篇】用C语言实现你的私有队列

🏝️专栏:【数据结构实战篇】 🌅主页:f狐o狸x 在前面的文章中我们用C语言实现了栈的数据结构,本期内容我们将实现队列的数据结构 一、队列的概念 队列:只允许在一端进行插入数据操作,在另一端…

实战项目负载均衡式在线 OJ

> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:能自己实现负载均衡式在线 OJ。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! > 专栏选自&#xff1…

银河麒麟桌面系统——桌面鼠标变成x,窗口无关闭按钮的解决办法

银河麒麟桌面系统——桌面鼠标变成x,窗口无关闭按钮的解决办法 1、支持环境2、详细操作说明步骤1:用root账户登录电脑步骤2:导航到kylin-wm-chooser目录步骤3:编辑default.conf文件步骤4:重启电脑 3、结语 &#x1f49…

数据结构--AVL树(平衡二叉树)

✅博客主页:爆打维c-CSDN博客​​​​​​ 🐾 🔹分享c、c知识及代码 🐾 🔹Gitee代码仓库 五彩斑斓黑1 (colorful-black-1) - Gitee.com 一、AVL树是什么?(含义、性质) 1.AVL树的概念 AVL树是最…

【Unity How】如何让物体跟随平台移动或旋转?

先看下最终要实现的效果: 当查找这个问题的资料时,发现多数的方案都是将物体设置为平台的子对象。 但是如果平台是非均匀缩放时,物体在移动或旋转时就会发生变形。 参考:Unity中父对象是非均匀缩放时出现倾斜或剪切现象 那有没有…

C语言函数递归经典题型——汉诺塔问题

一.汉诺塔问题介绍 Hanoi(汉诺)塔问题。古代有一个梵塔,塔内有3个座A、B、C,开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个老和尚想把这64个盘子从A座移…

Unity中动态生成贴图并保存成png图片实现

实现原理&#xff1a; 要生成长x宽y的贴图&#xff0c;就是生成x*y个像素填充到贴图中&#xff0c;如下图&#xff1a; 如果要改变局部颜色&#xff0c;就是从x1到x2(x1<x2),y1到y2(y1<y2)这个范围做处理&#xff0c; 或者要想做圆形就是计算距某个点&#xff08;x1,y1&…

vue3封装Element Plus table表格组件

支持绝大部分Element Plus原有设置属性&#xff0c;支持分页&#xff0c;支持动态适配高度 效果展示 组件代码&#xff1a; <template><div class"table-wrap" ref"tableWrap"><el-tableclass"w100 h100":data"tableInfo.…

ElasticSearch学习篇18_《检索技术核心20讲》LevelDB设计思想

目录 一些常见的设计思想以及基于LSM树的LevelDB是如何利用这些设计思想优化存储、检索效率的。 几种常见的设计思想 索引和数据分离减少磁盘IO读写分离分层思想 LevelDB的设计思想 读写分离设计分层设计与延迟合并LRU缓存加速检索 几种常见设计思想 索引与数据分离 索引…

路由器中继与桥接

一 . 背景 现在的路由器大多数已经开始支持多种网络连接模式&#xff0c;以下将以TP-Link迷你无线路由器为例进行展开介绍。在TP-Link迷你无线路由器上一般有AP&#xff08;接入点&#xff09;模式&#xff0c;Router&#xff08;无线路由&#xff09;模式&#xff0c;Repeate…

Bitcoin---P2SH;P2SH举例;P2SH的局限性

文章目录 1. 摘要2. P2SH举例3. P2SH局限性 1. 摘要 Pay-to-Script-Hash (P2SH) 交易输出的开发是为了简化更复杂和功能性脚本的使用&#xff0c;就像需要提供相应签名才能解锁的支付脚本&#xff08;即 P2PKH 脚本&#xff09;一样简单。为了轻松使用此类兑换脚本&#xff0c…

鸿蒙NEXT开发案例:文字转拼音

【引言】 在鸿蒙NEXT开发中&#xff0c;文字转拼音是一个常见的需求&#xff0c;本文将介绍如何利用鸿蒙系统和pinyin-pro库实现文字转拼音的功能。 【环境准备】 • 操作系统&#xff1a;Windows 10 • 开发工具&#xff1a;DevEco Studio NEXT Beta1 Build Version: 5.0.…

ffmpeg视频滤镜:提取缩略图-framestep

滤镜描述 官网地址 > FFmpeg Filters Documentation 这个滤镜会间隔N帧抽取一帧图片&#xff0c;因此这个可以用于设置视频的缩略图。总体上这个滤镜比较简单。 滤镜使用 滤镜参数 framestep AVOptions:step <int> ..FV....... set frame st…

eclipse-git项目提示NO-HEAD

1、出现该问题的过程 本人在用eclipse拉取git代码&#xff0c;刚拉取完&#xff0c;可能还没来得及跟本地的分支合并&#xff0c;电脑就卡动了。无奈只能重启电脑&#xff0c;打开eclipse&#xff0c;maven项目后面就出现了xxx NO-HEAD的提示。 2、问题解决 根据错误提示&am…

力扣hot100-->排序

排序 1. 56. 合并区间 中等 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 示例 1&#xff1a; 输…

鱼眼相机模型-MEI

参考文献&#xff1a; Single View Point Omnidirectional Camera Calibration from Planar Grids 1. 相机模型如下&#xff1a; // 相机坐标系下的点投影到畸变图像// 输入&#xff1a;相机坐标系点坐标cam 输出&#xff1a; 畸变图像素点坐标disPtvoid FisheyeCamAdapter::…

Reactor 模式的理论与实践

1. 引言 1.1 什么是 Reactor 模式&#xff1f; Reactor 模式是一种用于处理高性能 I/O 的设计模式&#xff0c;专注于通过非阻塞 I/O 和事件驱动机制实现高并发性能。它的核心思想是将 I/O 操作的事件分离出来&#xff0c;通过事件分发器&#xff08;Reactor&#xff09;将事…

windows下安装wsl的ubuntu,同时配置深度学习环境

写在前面&#xff0c;本次文章只是个人学习记录&#xff0c;不具备教程的作用。个别信息是网上的&#xff0c;我会标注&#xff0c;个人是gpt生成的 安装wsl 直接看这个就行&#xff1b;可以不用备份软件源。 https://blog.csdn.net/weixin_44301630/article/details/1223900…

深入探索 CnosDB 可观测性最佳实践:开篇

随着云计算、微服务、容器化和 DevOps 等技术的迅猛发展&#xff0c;现代软件系统变得愈加复杂和动态。传统的监控手段已经无法满足对系统状态的全面、实时、准确地了解。在这样的背景下&#xff0c;可观测性&#xff08;Observability&#xff09;作为一种新兴的技术理念应运而…

World of Warcraft /script SetRaidTarget(“target“, n, ““) n=8,7,6,5,4,3,2,1,0

魔兽世界执行当前目标标记方法 /script SetRaidTarget("target", n, "") n8,7,6,5,4,3,2,1,0 解析这个lua脚本 D:\Battle.net\World of Warcraft\_classic_\Interface\AddOns\wMarker wMarker.lua /script SetRaidTarget("target", 8, &quo…