03 贝尔曼公式

贝尔曼公式

    • 前言
    • 1、Motivating examples
    • 2、state value
    • 3、Bellman equation:Derivation
    • 4、Bellman equation:Matrix-vector form
    • 4、Bellman equation:Solve the state value
    • 5、Action value

前言

本文来自西湖大学赵世钰老师的B站视频。本节课主要介绍贝尔曼公式。
本节课概要:本节课需要抓住两个内容,state value 和 the Bellman equation。本次大纲如下:

在这里插入图片描述

1、Motivating examples

在这里插入图片描述
return就是有多条轨迹,沿着这些轨迹可以得到很多的rewards,把这些rewards求和,就得到return。为什么return这么重要呢?通过上图三个例子来做介绍,上面三幅图的环境是一样的,s4是目标,s2是forbidden area,白色的是accessible area。这三幅图不同的是在状态s1上的策略是不同的,第一幅图在s1会往下走,第二幅图在s1会往右走,第三幅图在s1有50%的概率往下走,50%的概率往右走,在其他位置上,它们的策略是一样的。
因此,我们需要回答,从s1出发,哪一个策略是最好的,哪一个策略是最差的,从直观上来说,第一幅图的策略是最好的,第二幅图的策略是最差的,第三幅图的策略不好也不差。因为第一幅图从s1出发不会进入到forbidden area,第二幅图会直接进入forbidden area,第三幅图有50%的概率进入到forbidden area。那么我们可以用数学来描述这一种直观,数学工具就是这个return。return之所以重要,是因为它告诉我们哪个策略好,哪个策略坏,即它能够评估策略。
下面我们分别来计算这三个例子对应的return:
在这里插入图片描述
对于第一幅图,从s1到s3,得到的reward为0,从s3到s4得到的reward为γ乘以1,然后就会一直呆在s4,得到的结果如上图。同样的方法我们可以得到第二幅图和第三幅图对应的return。策略3对应的return实际上就是我们接下来要学的state value。
在这里插入图片描述
在这里插入图片描述
下面做个总结:
在这里插入图片描述
下面进一步来讲一下return如何计算。
考虑从不同状态出发,计算的return。用vi表示从状态si出发得到的return。有两种方法,第一种方法为:
在这里插入图片描述
第二种方法为:
在这里插入图片描述
v1就是从s1出发,到达s2之后,就相当于从s2出发了,从s2出发一定得到的是v2,因此v1可以写成上述形式,依次类推。
但同样也面临着一些问题,在计算时我们要求解v,但还得事先知道v,这个好像陷入了一个不可能解决的问题。看似好像无法解决,但如果我们用数学的话,就可以解决了,首先我们将上图中的式子写成矩阵和向量的形式:
在这里插入图片描述
在这里插入图片描述
这是一个比较简单的,特别是针对确定性问题的贝尔曼公式,后面会更加正式地介绍一般化地贝尔曼公式。但这个公式也告诉我们,一个状态地value实际上依赖于其他状态地value,这个就是bootstrapping想法;另外就是matrix-vector form也是非常重要地,就是我们只看一个公式是没办法解决的,但我们把所有的公式全都组合到一起,得到一个matrix-vector form就很容易求出来。
下面我们在做一个例子来加深理解:
在这里插入图片描述

2、state value

这一部分介绍state value概念。为了介绍state value,我们首先引入一些符号:
在这里插入图片描述
首先看单步的,St是当前状态,在当前状态下采取的动作是At,得到的下一个reward是Rt+1,跳到下一个状态是St+1。t指的是当前时刻,t+1指的是下一时刻。
在这里插入图片描述
St、At、Rt+1都是随机变量,这也就意味着我们可以求解它们的期望。这样单步的过程可以推广到多步的trajectory。下图中的Gt也是一个随机变量。
在这里插入图片描述
有了以上基础,我们可以来定义state value了:在这里插入图片描述

第一点:state value function 是关于状态s的函数,从不同的s出发,得到的轨迹不同,显然得到的discount return也不同,求平均也是不同的;第二点:state value function是一个策略的函数,显然不同的策略会得到不同的轨迹,不同的轨迹又会得到不同的return,进而会得到不同的state value。最后一点是,这个state value不仅仅是一个数值的value,它也代表一种价值,当一个state value比较大的时候,就代表这个状态是比较有价值的,因为从这个状态出发,我们会得到更多的return。
最后来回答这样一个问题:state value和return有什么区别?return是针对单个trajectory求的return,而state value是对多个trajectory得到的return再求平均值,如果我们从一个状态出发,有可能得到多个trajectory,此时return和state value是有区别的,但是如果我们从一个状态出发,一切都是确定性的,也就是说只能得到一条trajectory,此时从那个状态出发得到的return和state value是一样的
下面我们来看一个例子:
在这里插入图片描述
上述三幅图分别对应三个策略,假设从左到右分别是π1、π2、π3,接下来我们计算在这三个不同策略下,同一个状态s1的state value。计算vπ1(s1)、vπ2(s1)、vπ3(s1)可知,第一幅图对应的策略是最好的。(上图所举例子是求确定性的trajectory下的state value)

3、Bellman equation:Derivation

我们首先来学习的是如何来推到贝尔曼公式。本小节重点如下:
在这里插入图片描述
总结:我们要学会用贝尔曼公式计算上节中提到的state value,贝尔曼公式用一句话可以概况来说就是它描述了不同状态的state value之间的关系

在这里插入图片描述
首先考虑这样一个trajectory,从状态St出发,采取动作At,得到Rt+1和St+1,以此类推,得到了上图中的一个trajectory。这样的一个trajectory可以计算它的discounted return Gt,从上图推导后的公式来看,Gt就等于我立刻能得到的immediate reward Rt+1,再加上从下一时刻出发得到的Gt+1乘以discount rate γ。
在这里插入图片描述
从上图可以看出,state value可以用蓝色的两个期望来表示,分别计算这两个期望就能得到贝尔曼公式。下图就是第一个期望的计算方法:
在这里插入图片描述
第一项期望实际上就是immediate rewards的mean,第二项的期望公式见下图:
在这里插入图片描述
第二项是从当前状态s出发所得到的下一时刻的return的mean。从当前状态出发,可以有多个选择,可以跳到s撇,跳到不同s撇的概率是p(s撇|s),跳到s撇得到的期望值是E(Gt+1|St=s,St+1=s撇),E(Gt+1|St=s,St+1=s撇)指的是当前状态是s,下一时刻状态是s撇,计算从下一个状态出发,所得到的return的mean。E(Gt+1|St=s,St+1=s撇)中的St=s是可以去掉的,因为我已经知道了下一个状态是s撇,就不用关心之前是什么状态了。E(Gt+1|St+1=s撇)就是针对s撇的state value,用vπ(s撇)。从s到s撇的概率p(s撇|s)就是从状态s出发,选取不同的动作a的概率,乘以当前状态下采取动作a得到s撇的概率,不同动作a求和就是p(s撇|s)。
总之,第二个期望就是未来rewards的一个均值。
在这里插入图片描述
至此,我们就可以给出贝尔曼公式的表达式了:
在这里插入图片描述
上图中的公式就是贝尔曼公式,它实际上描述了不同状态的state value之间的关系。公式左边是s的state value,右边是s撇的state value。另外,这个式子包含两项,一项是immediate reward,另一项是future reward。上述式子应该是对状态空间中所有的状态都成立的,所以,如果我们有n个状态,我们就会有n个这样的式子,通过n个这样的式子,我们就可以把state value给求解出来,但我们通常就写上述一个式子,大家千万不要以为贝尔曼公式就只有这一个式子。

在这里插入图片描述
状态值如何计算呢?vπ(s)依赖于vπ(s撇),而vπ(s撇)又依赖于其它状态值,看起来似乎没办法计算,这其实就是bootstrapping,我们可以用矩阵来进行计算。另外,这个式子依赖于很多概率,π(a|s)是policy,贝尔曼公式是依赖于概率的,我们要把state value给计算出来,实际上我们现在正在做的事情就叫policy evaluation,就是去evaluation这个policy是好是坏。
在这里插入图片描述
上图中的绿色箭头就是策略π。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果假设γ=0.9,得到的结果见上图。state value实际上是代表了他的价值,如果一个状态价值高,说明了这个状态是值得我们往那个方向走的,在上图中,为什么s2,s3,s4的价值高呢,是因为他们离target area是比较近的,而s1离得较远。计算得到这个状态值之后,我们就可以去改进这个策略,慢慢的我们就可以得到最优的策略。
在这里插入图片描述
在这里插入图片描述

4、Bellman equation:Matrix-vector form

在上节中,我们介绍了贝尔曼公式的推导,这节来介绍贝尔曼公式的矩阵和向量形式。
在这里插入图片描述
在这里插入图片描述

rπ(s)是从当前状态出发,得到了所有immediate reward的平均值。上式红色画的意思是展开相乘。
在这里插入图片描述
上图中,[Pπ]ij代表第i行第j列的元素是从si跳到sj的概率,[Pπ]ij这个矩阵也被称为状态转移矩阵

在这里插入图片描述

上图是当n=4时,我所得到的matrix-vector 形式,上图中的Pπ就是状态转移矩阵。在举一个例子,见下图:
在这里插入图片描述

4、Bellman equation:Solve the state value

在这里插入图片描述
首先我们来回答一下为什么要求解state value,实际上给定一个policy,然后我会列出来它的一个贝尔曼公式,再进一步求解贝尔曼公式得到state value,这样的一个过程实际上叫做policy evaluation。policy evaluation是强化学习中非常关键的一个问题,因为我们只有去评价一个策略到底好还是不好,我们才能进一步的去改进它,最后在找到最优的策略,所以求解贝尔曼公式进而得到state value是非常重要的一个问题。
在这里插入图片描述
求state value我们给出两种解决方案,第一种就是用求逆矩阵的方法直接求解,但是这种方法通常不会使用,因为当状态空间特别大的时候,矩阵的维度也会特别大,求逆的计算量也会特别大,所以实际当中我们使用的是迭代的方法。iterative solution方法就是从一开始随机猜一个vπ,记为v0,把这个v0带入到上图红色箭头所指的式子中,因为rπ和Pπ都是可以事先知道的,所以可以计算得到v1,然后再把v1带到右边,就又可以得到v2,依次类推,就会得到序列{v0,v1,v2,…vk},实际上我们可以证明当k趋近于无穷的时候,vk就收敛到了vπ,这个vπ就是真实的state value。为什么vk会收敛到vπ呢?下面是证明。
在这里插入图片描述
证明的思路是定义vk与vπ之间的误差,证明这个误差趋近于0即可。下面我们通过例子来进一步说明。
在这里插入图片描述
上图是两个比较好的policy,可以看到得到的状态值均为正,并且我们还可以看出,不同的策略可以得到相同的value值。下面我们在看两个不好的policy。
在这里插入图片描述
通过以上例子可以得出,我们可以计算state value来评价一个策略究竟是好还是坏。

5、Action value

在前几节,我们介绍了state value,以及描述state value的贝尔曼公式,下面我们将从state value转向action value。
在这里插入图片描述
state value和action value有什么区别与联系呢?state value指的是agent从一个状态出发,所得到的average returnaction value指的是agent从一个状态出发并且选择一个action之后得到的average return
为什么要关注action value:实际上我们一直讨论的是强化学习中的策略,策略指的是在一个状态我要选择什么样的action,action有很多,具体选择哪一个action就是通过action value来判断,action value大的意味着采取该action能够得到更多的reward。
在这里插入图片描述
由上图可知,state value可以和action value建立联系。有很多个action,在当前状态下,采取其中一个action的概率为π(a|s),乘以采取该动作后得到的average return。与π(a|s)相乘的那一项就是action value。
在这里插入图片描述
在这里插入图片描述
下面通过一个例子来理解action value:
上图中策略已经通过绿色箭头画出来了。
在这里插入图片描述
下面做一个总结:

在这里插入图片描述
state value满足贝尔曼公式,贝尔曼公式刻画了state value之间的公式,是求解state value的一个工具,上图是它的elementwise form,就是对每一个状态都存在这样一个式子。

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

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

相关文章

Jmeter之JSR223

一、JSR223组件 JSR是Java Specification Requests的缩写,意思是Java规范提案。JSR已成为Java界的一个重要标准. JSR223其实包含了有好几种组件,但是其用法都是一致的,并且都是执行一段代码,主要分类如下: JSR223 PreProcessor JSR223 Timer JSR223 S…

LeetCode热题100——链表

链表 1. 相交链表2. 反转链表3. 回文链表4. 环形链表5. 合并两个有序链表 1. 相交链表 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 // 题解:使用A/B循环遍…

最新ChatGPT商业运营系统源码+支持GPT4/支持ai绘画+支持Midjourney绘画

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

WebSocket Day03 : SpringMVC整合WebSocket

前言 在现代Web应用程序中,实时性和即时通信变得越来越重要。传统的HTTP请求-响应模式无法满足实时数据传输和双向通信的需求。随着技术的发展,WebSocket成为了一种强大而灵活的解决方案。 WebSocket是HTML5提供的一种新的通信协议,它通过一…

JavaEE的渊源

JavaEE的渊源 1. JavaEE的起源2. JavaEE与Spring的诞生3. JavaEE发展历程(2003-2007)4. JavaEE发展历程(2009-至今)5. Java的Spec数目与网络结构 1. JavaEE的起源 我们首先来讲一下JavaEE的起源 ,为什么要来讲起源 ? …

Unit1_3:分治算法之排序问题

文章目录 一、归并排序二、快速排序思路伪代码流程图时间复杂度改进 三、堆排序结构插入提取最小值排序抽象 四、比较排序总结决策树模型 一、归并排序 归并排序子操作的思路和Unit1_2逆序计算一样 下面写一下伪代码 if left < right thencenter←L(left right)/2];Merge…

使用 Clipdrop 替换长安三万里电影海报中的天空

长安三万里是一部不久前上映的古装动画电影&#xff0c;讲述了李白和高适的故事。电影海报中的天空是一片晴朗的月空&#xff0c;与扬州城的景色相得益彰。 最近&#xff0c;我发现了一款名为 Clipdrop 的软件&#xff0c;可以用来替换图片中的天空。这款软件使用人工智能技术&…

MyBatis缓存详解

1. MyBatis缓存 MyBatis中的缓存是用来提高性能&#xff0c;减少数据库交互次数的机制。它分为一级缓存&#xff08;Local Cache&#xff09;和二级缓存&#xff08;Global Cache&#xff09;。 1.1 一级缓存&#xff08;Local Cache&#xff09; 作用范围&#xff1a;一级缓…

深入了解汽车级功率MOSFET NVMFS2D3P04M8LT1G P沟道数据表

汽车级功率MOSFET是一种专门用于汽车电子领域的功率MOSFET。它具有高电压、高电流、高温、高可靠性等特点&#xff0c;能够满足汽车电子领域对功率器件的严格要求。汽车级功率MOSFET广泛应用于汽车电机驱动、泵电机控制、车身控制等方面&#xff0c;能够提高汽车电子系统的效率…

Flume从入门到精通一站式学习笔记

文章目录 什么是FlumeFlume的特性Flume高级应用场景Flume的三大核心组件Source&#xff1a;数据源channelsink Flume安装部署Flume的使用案例&#xff1a;采集文件内容上传至HDFS案例&#xff1a;采集网站日志上传至HDFS 各种自定义组件例如&#xff1a;自定义source例如&#…

【RtpSeqNumOnlyRefFinder】webrtc m98: ManageFrameInternal 的帧决策过程分析

Jitterbuffer(FrameBuffer)需要组帧以后GOP内的参考关系 JeffreyLau 大神分析 了组帧原理而参考关系(RtpFrameReferenceFinder)的生成伴随了帧决策 FrameDecisionFrameDecision 影响力 帧的缓存。调用 OnAssembledFrame 传递已经拿到的RtpFrameObject 那么,RtpFrameObject…

安全性在外卖系统开发中的重要性

外卖系统的开发需要强调安全性&#xff0c;因为系统中涉及用户的个人信息、支付信息以及交易数据。确保这些信息的安全对于用户信任和系统的成功至关重要。以下是在外卖系统开发中提升安全性的一些建议。 数据加密 用户信息和支付数据应该经过加密处理。对于敏感信息&#x…

计算机的主存储器与辅助存储器

文章目录 前言一、主存储器&#xff08;内存&#xff09;1.主存储器特征2.主存储器构成3.主存储器和CPU如何交互4.主存储器和操作系统位数的关系 二、辅助存储器&#xff08;磁盘&#xff09;1.辅助存储器构成2.辅助存储器特征3.磁盘的调度算法3.1先来先服务算法3.2最短寻道时间…

错误:ERROR Cannot read properties of null (reading ‘type‘)

ERROR Cannot read properties of null (reading ‘type’) TypeError: Cannot read properties of null (reading ‘type’) <template><el-card><el-row :gutter"20" class"header"><el-col :span"7"><el-input pl…

大厂面试题-innoDB如何解决幻读

从三个方面来回答&#xff1a; 1、Mysql的事务隔离级别 Mysql有四种事务隔离级别&#xff0c;这四种隔离级别代表当存在多个事务并发冲突时&#xff0c;可能出现的脏读、不可重复读、幻读的问题。 其中InnoDB在RR的隔离级别下&#xff0c;解决了幻读的问题。 2、什么是幻读&…

Java前后端分离的在线考试系统源码

Java前后端分离的在线考试系统源码 技术栈 1&#xff0c;SpringBoot 2&#xff0c;Mybatis-plus 3&#xff0c;MySQL 5.7 4&#xff0c;Vue全家桶 5&#xff0c;ElementUI 6&#xff0c;Redis 7&#xff0c;Swagger 8&#xff0c;阿里云OSS 9&#xff0c;Log4j 考…

2023 electron最新最简版windows、mac打包、自动升级详解

这里我将讲解一下从0搭建一个electron最简版架子&#xff0c;以及如何实现打包自动化更新 之前我有写过两篇文章关于electron框架概述以及 常用api的使用&#xff0c;感兴趣的同学可以看看 Electron桌面应用开发 Electron桌面应用开发2 搭建electron 官方文档&#xff1a;ht…

Temu新规定强制要求卖家上传英代、欧代信息——站斧浏览器

根据官方消息&#xff1a;自10月15日起&#xff0c;Temu要求所有在欧洲站点销售的电子产品包装标识上都要加上英代和欧代信息&#xff0c;否则产品可能会被拒收。因此&#xff0c;欧洲站的卖家要抓紧时间完成欧代、英代合规&#xff0c;以免造成损失。 同时&#xff0c;近日Tem…

uboot启动linux kernel的流程

目录 前言流程图autoboot_commandrun_command_listdo_bootmdo_bootm_statesdo_bootm_linuxboot_prep_linuxboot_jump_linux 前言 本文在u-boot启动流程分析这篇文章的基础上&#xff0c;简要梳理uboot启动linux kernel的流程。 流程图 其中&#xff0c; autoboot_command位于…