03 贝尔曼公式

news2024/11/26 0:47:52

贝尔曼公式

    • 前言
    • 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.coloradmin.cn/o/1177890.html

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

相关文章

海外问卷项目是怎么赚钱的?

大家好,我是橙河老师,今天聊一聊海外问卷项目是怎么赚钱的? 在海外国家,问卷调查这种商业模式一直都很流行,很多商业公司为了收集消费者的意见,会对外发有偿的调查问卷,从最开始的纸质调查&…

MySQL第五讲·关于外键和连接, 如何做到关联查询?

你好,我是安然无虞。 文章目录 外键和连接:如何做关联查询?如何创建外键?连接关联查询中的误区 外键和连接:如何做关联查询? 在实际的数据库应用开发过程中,我们经常需要把2个或2个以上的表进…

C语言函数初使用

目录 1知识点: 2一个小代码,后续知识点讲解: 3知识点: 定义函数 实例 函数声明 调用函数 函数参数 4总结: 1知识点: 函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,…

网站源码备份 [极客大挑战 2019]PHP1

打开题目 题目提示我们备份网站 我们输入/www.zip 下载zip文件&#xff0c;打开发现 打开index.php <?phpinclude class.php;$select $_GET[select];$resunserialize($select);?> 文件包含class.php&#xff0c;get传参一个select函数&#xff0c;反序列化select参…

HMM与LTP词性标注之命名实体识别与HMM

文章目录 知识图谱介绍NLP应用场景知识图谱&#xff08;Neo4j演示&#xff09;命名实体识别模型架构讲解HMM与CRFHMM五大要素&#xff08;两大状态与三大概率&#xff09;HMM案例分享HMM实体识别应用场景代码实现 知识图谱介绍 NLP应用场景 图谱的本质&#xff0c;就是把自然…

JS逆向爬虫---请求参数加密②【某麦数据analysis参数加密】

主页链接: https://www.qimai.cn/rank analysis逆向 完整参数生成代码如下&#xff1a; const {JSDOM} require(jsdom) const dom new JSDOM(<!DOCTYPE html><p>hello</p>) window dom.windowfunction customDecrypt(n, t) {t t || generateKey(); //…

ZZULIOJ 1108: 打印数字图形(函数专题) (C/C++)

1108: 打印数字图形&#xff08;函数专题&#xff09; 题目描述 从键盘输入一个整数n(1≤n≤9),打印出指定的数字图形。要求在程序中定义并调用如下函数&#xff1a;PrintSpace(m)用来输出m个空格&#xff1b;PrintDigit(m)来输出一行中的数字串"12…m…21"&#xff…

element树形结构下拉组件组装对应格式数据

element树形结构下拉组件组装对应格式数据 <el-row><el-col :span"24"><el-form-item label"购买渠道" prop"treeData" class"grid-content bg-purple"><el-cascaderv-model"testForm.treeData":optio…

鳄鱼指标的3颜色线都代表什么?澳福官网一段话明白了

投资者一直在使用鳄鱼指标进行交易&#xff0c;但是对指标上面的3种颜色的K线都代表什么不明白&#xff1f;直到看到澳福官网一段话才明白&#xff0c;原来这么简单&#xff01; 鳄鱼指标&#xff0c;这一工具是由三条移动平均线组合而成。具体来说&#xff0c;蓝线&#xff0…

8-3、T型加减速单片机程序【51单片机控制步进电机-TB6600系列】

摘要&#xff1a;根据前两节内容&#xff0c;已完成所有计算工作&#xff0c;本节内容介绍具体单片机程序流程及代码 一、程序流程图 根据前两节文章内容可知&#xff0c;T型加减速的关键内容是运动类型的判断以及定时器初值的计算&#xff0c;在输出运动参数后即可判断出运动…

前端代码优化小技巧

导读 今天分享一下开测前端代码的一些优化&#xff0c;及使用的一些小技巧&#xff0c;来优化我们的网站&#xff0c;前端开发中最常见的问题就是很少使用ES6方法导致代码冗余&#xff0c;不够清晰&#xff0c;定时器和闭包导致内存溢出及泄露,网站中css导致排版错乱&#xff…

C++基础——对于C语言缺点的补充(2)

上篇文章中说到&#xff0c;为了解决C语言会出现人为定义的函数和库函数出现重定义的错误&#xff0c;C引入了一个新的概念&#xff0c;即命名空间&#xff0c;通过认为定义命名空间&#xff0c;来解决上述问题。 在本篇文章中&#xff0c;将继续介绍C相对于C语言不足来进行的补…

linux之信号

Linux之信号 什么是信号信号的产生方式signalsignactionkill信号集信号屏蔽 什么是信号 信号机制是一种使用信号来进行进程之间传递消息的方法&#xff0c;信号的全称为软中断信号&#xff0c;简称软中断。 信号的本质是软件层次上对中断的一种模拟&#xff08;软中断&#xff…

Hello Qt!

目录 1. 什么是Qt 2. Qt中的模块 3. 下载安装 4. QtCreator 4. Hello Qt 解释 .pro 解释 main.cpp 解释 mainwindow.ui 解释 mainwindow.h 解释 mainwindow.cpp 5. Qt 中的窗口类 5.1 基础窗口类 5.2 窗口的显示 6. Qt 的坐标体系 7. 内存回收 1. 什么是Qt 是一…

✔ ★【备战实习(面经+项目+算法)】 11.6 学习

✔ ★【备战实习&#xff08;面经项目算法&#xff09;】 坚持完成每天必做如何找到好工作1. 科学的学习方法&#xff08;专注&#xff01;效率&#xff01;记忆&#xff01;心流&#xff01;&#xff09;2. 每天认真完成必做项&#xff0c;踏实学习技术 认真完成每天必做&…

【斗破年番】萧炎给彩鳞承诺遭删,熏儿限时返场,古河沦为打工人

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析国漫资讯。 深度爆料&#xff0c;在斗破年番69话的最新剧情中&#xff0c;一场感人至深的情感戏份被删减了。在原著中&#xff0c;萧炎曾向美杜莎承诺&#xff0c;他会集齐材料&#xff0c;为她炼制出天雁九行翼。然而&a…

简单2招GET模型参数量计算和输入尺寸随卷积大小变化推导

本文将介绍两种简单且实用的方法&#xff0c;用于计算深度学习模型的参数量&#xff0c;并推导了输入尺寸随卷积大小的变化过程。这些方法可以帮助读者更好地理解模型的复杂度和输入尺寸的变化&#xff0c;为模型设计和优化提供指导。 比如论文中&#xff0c;通常会比较几种模…

机器学习概论

一、机器学习概述 1、机器学习与人工智能、深度学习的关系 人工智能&#xff1a;机器展现的人类智能机器学习&#xff1a;计算机利用已有的数据(经验)&#xff0c;得出了某种模型&#xff0c;并利用此模型预测未来的一种方法。深度学习&#xff1a;实现机器学习的一种技术 2…

龙迅LT6911UXC替换LT6911UXE 支持单PORT 4K60HZ 带HDCP

LT6911UXC 描述&#xff1a; 龙迅LT6911UXC是一个高性能的HDMI2.0到MIPI DSI/CSI & LVDS转换器。HDMI2.0输入支持高达6Gbps的数据速率&#xff0c;这为60Hz的视频提供了足够的带宽。同时&#xff0c;还支持使用HDCP2.2来进行数据解密。对于MIPI DSI/CSI输出&#xff0c;LT…

【二进制转换和与其有关的操作符详解】

文章目录 1.二进制与进制转换2. 2进制转8、10、16进制2.1 2进制转10进制2.2 2进制转8进制2.3 2进制转16进制 3. 8、10、16进制转2进制3.1 10进制转2进制3.2 8进制转2进制3.3 16进制转2进制 4.原码、反码、补码5.移位操作符&#xff08;<< >>&#xff09;5.1左移操作…