强化学习的状态值函数与状态动作值函数

2023-10-30

在本文中,我们将学习贝尔曼方程和价值函数。

回报和返还(return)
正如前面所讨论的,强化学习agent如何最大化累积未来的回报。用于描述累积未来回报的词是返还,通常用R表示。我们还使用一个下标t来表示某个时间步长的返还。在数学符号中,它是这样的:

强化学习系列(下):贝尔曼方程

如果我们让这个级数趋于无穷,那么我们最终会得到无限的返还,这对于问题的定义并没有太大意义。因此,只有在我们期望返还的级数终止时,这个方程才有意义。我们将这种总是终止的任务称为“插曲式”(episodic)。纸牌游戏是解释“插曲式”问题的好例子。“插曲”开始于对每个人发牌,并且不可避免地会随着游戏规则的不同而结束。然后,下一“插曲”又开始了另一回合的游戏。

相比使用未来的累积回报作为返还,更常见的是使用未来的累积折现回报(cumulative discounted reward):

强化学习系列(下):贝尔曼方程

其中0<γ<1。以这种方式定义返还的两个好处是,返还在无穷级数中得到了很好的定义,而且它把更大的权重给了更早的回报,这意味着我们更关心即将得到的回报,而不是将来会得到更多的回报。我们为γ选择的值越小就越正确。这种情况在我们让γ等于0或1时就可以看到。如果γ等于1,这个方程就变成了对所有的回报都同样的关心,无论在什么时候。另一方面,当γ等于0时,我们只关心眼前的回报,而不关心以后的回报。这将导致我们的算法极其短视。它将学会采取目前最好的行动,但不会考虑行动对未来的影响。

策略
一个策略,写成π(s, a),描述了一种行动方式。它是一个函数,能够采取一个状态和一个行动,并返回在那个状态下采取这个行动的概率。因此,对于一个给定的状态,即

强化学习系列(下):贝尔曼方程

必须是真实的。在下面的例子中,当我们“饥饿”的时候,我们可以在两种行为之间做出选择,要么“吃”,要么“不吃”。

强化学习系列(下):贝尔曼方程

我们的策略应该描述如何在每个状态中采取行动,所以一个等概率的随机策略看起来就像

强化学习系列(下):贝尔曼方程

,在这里

强化学习系列(下):贝尔曼方程

(Eat)是行为“吃”,而

强化学习系列(下):贝尔曼方程

(Don’t Eat)是“不吃”。这意味着,如果你处于“饥饿”状态,选择“吃”和“不吃”的概率是相等的。

我们在强化学习中的目标是学习一种最优策略,定义为

强化学习系列(下):贝尔曼方程

。最优策略告诉我们如何采取行动来最大化每个状态的返还。因为这是一个很简单的例子,所以很容易看出,在这种情况下,最优策略是在“饥饿”时总是“吃”,那么就是

强化学习系列(下):贝尔曼方程

。在这个实例中,对于许多马尔可夫决策来说,最优策略是确定的。每个状态都有一个最优的行动。有时这被写成

强化学习系列(下):贝尔曼方程

,它是从状态到这些状态中的最优行动的映射。

价值函数
为了学习最优策略,我们利用了价值函数。在强化学习中有两种类型的价值函数:状态值函数(state value function),用V(s)表示,和行动值函数,用Q(s,a)表示。

状态值函数在遵循策略时描述一个状态的值。当从状态的行为以我们的策略π开始时,这就是预期的返还。

强化学习系列(下):贝尔曼方程

需要注意的是,即使在相同的环境中,价值函数也会根据策略发生变化。这是因为状态的价值取决于你的行动,因为你在那个特定的状态下的行动会影响你期望看到的回报。同时还要注意期望的重要性。期望(expectation)就像一个平均值;它就是你期望看到的返还。我们使用期望的原因是当你到达一个状态后会发生一些随机事件。你可能有一个随机的策略,这意味着我们需要把我们采取的所有不同行动的结果结合起来。此外,转换函数(transition function)可以是随机的,也就是说,我们可能不会以100%的概率结束任何状态。请记住上面的例子:当你选择一个行动时,环境将返回下一个状态。即使给出一个行动,也可能会有多个状态返还。当我们看贝尔曼方程时,会看到更多这样的情况。期望将所有这些随机因素考虑在内。

我们将使用的另一个价值函数是行动值函数。行动值函数告诉我们当跟随某个策略时,在某些状态下执行某个行动的值。给出状态和在π下的行动,这是期望的返还:

强化学习系列(下):贝尔曼方程

对状态值函数的注释同样适用于行动值函数。根据该策略,期望将考虑未来行动的随机性,以及来自环境的返还状态的随机性。

贝尔曼方程
理查德·贝尔曼推导出了以下公式,让我们可以开始解决这些马尔可夫决策问题。贝尔曼方程在强化学习中无处不在,对于理解强化算法的工作原理是非常必要的。但在我们了解贝尔曼方程之前,我们需要一个更有用的符号,定义为

强化学习系列(下):贝尔曼方程

强化学习系列(下):贝尔曼方程

,如下所示:

强化学习系列(下):贝尔曼方程

强化学习系列(下):贝尔曼方程

是过渡概率。如果我们从状态s开始,然后采取行动a,我们就会得到状态

强化学习系列(下):贝尔曼方程

和概率

强化学习系列(下):贝尔曼方程

强化学习系列(下):贝尔曼方程

强化学习系列(下):贝尔曼方程

是另一种写为期望(或平均)回报的方式,我们从状态s开始,采取行动a,然后移动到状态

强化学习系列(下):贝尔曼方程

最后,有了这些条件,我们就可以推导出贝尔曼方程了。我们将考虑贝尔曼方程的状态值函数。根据返还的定义,我们可以重写方程(1),如下所示:

强化学习系列(下):贝尔曼方程

如果我们从求和中得到第一个回报,我们可以这样重写它:

强化学习系列(下):贝尔曼方程

这里的期望描述的是,如果我们继续遵循策略π的状态s,我们期望返还的是什么。通过对所有可能的行动和所有可能的返还状态的求和,可以明确地编写为期望。下面的两个方程可以帮助我们完成下一个步骤。

强化学习系列(下):贝尔曼方程

通过在这两个部分之间分配期望,我们就可以把我们的方程转化成:

强化学习系列(下):贝尔曼方程

注意,方程(1)与这个方程的末尾形式相同。我们可以替换它,得到:

强化学习系列(下):贝尔曼方程

贝尔曼方程的行动值函数可以以类似的方式进行推导。本文结尾有具体过程,其结果如下:

强化学习系列(下):贝尔曼方程

贝尔曼方程的重要性在于,它们让我们表达了其它状态的价值。这意味着,如果我们知道

强化学习系列(下):贝尔曼方程

的值,我们可以很容易地计算出

强化学习系列(下):贝尔曼方程

的值。这为计算每个状态值的迭代方法打开了大门,因为如果我们知道下一个状态的值,我们就可以知道当前状态的值。最重要的事情是我们需要记住一些编号方程。最后,在贝尔曼方程中,我们可以开始研究如何计算最优策略,并编码我们的第一个强化学习agent。

在我们推导出贝尔曼方程的过程中,我们得到了这一系列的方程,从方程(2)开始:

强化学习系列(下):贝尔曼方程

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

强化学习的状态值函数与状态动作值函数 的相关文章

  • python sqlite3

    含数据库连接 表创建 增删改查 查看sqlite数据库的软件推荐使用sqlitestudio 下载地址 sqlitestudio SQLite文档类资源 CSDN下载 coding utf 8 乐乐感知学堂公众号 author https
  • SQL Server如何备份数据库

    一 首先把当前的数据库备份成一个文件 1 按照操作来 选择对应的数据库 确定备份文件的存储位置 点击确定 生成备份文件 2 然后可以通过该备份文件还原数据库 右键数据库点击还原文件和文件组 然后设置目标数据库的名字 如果数据库中已经存在相同
  • TSINGSEE青犀视频安防监控管理平台EasyNVR如何配置鉴权?

    视频监控汇聚平台EasyNVR是基于RTSP Onvif协议的视频平台 可支持将接入的视频流进行全平台 全终端的分发 分发的视频流包括RTSP RTMP HTTP FLV WS FLV HLS WebRTC等格式 为了满足用户的集成与二次开
  • Qt 串口类QSerialPort 使用笔记

    Qt 串口类QSerialPort 使用笔记 虽然现在大多数的家用PC机上已经不提供RS232接口了 但是由于RS232串口操作简单 通讯可靠 在工业领域中仍然有大量的应用 Qt以前的版本中 没有提供官方的对RS232串口的支持 编写串口程
  • virtual box安装Ubuntu操作系统

    在提供Ubuntu 18 10 Cosmic Cuttlefish映像的地址中有ubuntu 18 10 desktop amd64 iso和ubuntu 18 10 live server amd64 iso版本 它们是什么区别 简单的说
  • 机器学习——所有非支持向量的拉格朗日乘子一定为0

    问 SVM模型求解过程中所有非支持向量的拉格朗日乘子一定为0 答 正确 SVM模型的求解过程中 对于非支持向量的数据点 其对应的拉格朗日乘子为0 这是因为非支持向量数据点已经满足了约束条件 不需要对目标函数造成日对目标函数有贡献 简而言之
  • UDIMM、RDIMM和LRDIMM

    UDIMM RDIMM和LRDIMM UDIMM UDIMM 全称Unbuffered DIMM 即无缓冲双列直插内存模块 指地址和控制信号不经缓冲器 无需做任何时序调整 直接到达DIMM上的DRAM芯片 UDIMM由于在CPU和内存之间没
  • 基于python的Page Factory模式

    Pythium 基于 Python 的 Page Factory 设计模式测试库 类似于Java的Page Factory模式 旨在减少代码冗余 简单易用 具有高度的可扩展能力 支持以 annotation的方式定义元素 支持同一个元素多种
  • 【Unity 3D学习笔记】P&D 过河游戏智能实现

    P D 过河游戏智能帮助实现 实现状态图的自动生成 讲解图数据在程序中的表示方法 利用算法实现下一步的计算 对于过河游戏 首先需要知道其中各个状态之间的转换关系 绘制状态转移图如下 其中 P代表出发岸上的牧师 D代表出发岸上的恶魔 加号和减
  • 竞品分析该怎么做

    竞品分析 作用 知己知彼 百战不殆 为自身产品设计提供功能 可用性 关键技术等方面的参考 提高自身产品的差异化程度 为新立项的产品 拍脑袋想出来的 降低风险 如何选择竞品 行业内领先的产品 通常可以根据一些百度指数 行业排名 业务相似程度来
  • 四款Python在线模拟器

    一 菜鸟工具 地址 http c runoob com compile 9 打开的界面是酱紫的 左边是代码输入框 右边是结果输出框 特点 1 支持切换Python2 Python3版本 2 不支持常用导入模块 例如pandas等 3 运行速
  • 使用Python生成docx文档

    1 首先需要安装doxc的公共库 pip install python docx U 2 安装成功后 使用这个库的方法import docx 3 这样生成的docx内容会有汉字显示不出来 4 这样生成的docx会有乱码 需要调整字体格式添加
  • 解决linux磁盘空间不足的方法

    磁盘空间不足的解决办法 1 首先确定是否是磁盘空间不足 输入命令 df h 查看磁盘信息 很明显 Filesystem下的挂载点 dev vda1 下的50G容量已经耗尽 这时最简单的办法就是找到大且无用的文件并删除 首选就是log文件 2
  • Flutter 常见问题总结

    文章目录 1 内容简介 2 使用Column等容器包裹ListView报错的问题 3 Navigator operation requested does not include a Navigator 4 设置Container背景色 5
  • Java开发中使用sql简化开发

    引语 在Java开发中 我们更希望数据库能直接给我们必要的数据 然后在业务层面直接进行使用 所以写一个简单的sql语句有助于提高Java开发效率 本文由简单到复杂的小白吸收 还请多多指教 使用MySQL数据库 先创建一个简单的表 DROP
  • elemenui自己本地跑起存在的问题&做自定义组件迭代规范

    npm install安装依赖出现PhantomJS not found on PATH 问题 PhantomJS not found on PATH PhantomJS not found on PATH Downloading http
  • 在 React 中应用设计模式:策略模式

    这篇文章是关于我们许多人在 React 和前端开发中遇到的一个问题 有时甚至没有意识到这是一个问题 在不同的组件 钩子 实用程序等中实现了一段逻辑 让我们深入了解问题的详细信息以及如何解决它 正如标题所暗示的 我们将使用策略模式来解决它 问
  • react性能优化的几种方法

    react性能优化的6中方法 1 避免使用内联函数 每次render渲染时 都会创建一个新的函数实例 应该在组件内部创建一个函数 讲事件绑定到函数 这样每次调用render时 就不会创建单独的函数实例 2 使用react fragement
  • 实验五(数据结构与算法实验) 稀疏矩阵

    实验五 数据结构与算法实验 稀疏矩阵 稀疏矩阵ADT的实现 在现实应用中 一些规模很大的特殊矩阵具有重要的地位 特殊矩阵可以采用二维数组存储 简单直接 顺序存储方式保持了矩阵中元素之间的二维线性关系 矩阵操作的算法都很简单 但是其空间的利用
  • 【深入理解C++】引用

    文章目录 1 变量的别名 2 变量的多个别名 3 引用存在的价值 4 引用的大小 5 从汇编角度看引用 6 结构体的引用 7 指针的引用 8 数组的引用 1 变量的别名 在 C 语言中 使用指针 Pointer 可以间接获取 修改某个变量的

随机推荐

  • AS3.0(ActionScript3.0)的开发工具

    转自Adobe 根据项目需求和可用资源 您可能希望使用几个工具中的一个 或结合使用多个工具 来编写和编辑 ActionScript 代码 Flash 创作工具除了创建图形和动画的功能之外 Adobe Flash CS3 Profession
  • portal.php无法打开,Discuz论坛为什么门户、论坛都只能访问到门户?论坛无法访问...

    最近无忧主机小编碰到一个非常奇怪的问题 正常情况下 discuz的门户和论坛是可以分开访问的 比如51php com forum php和51php com portal php 分别访问到的是论坛和门户 相信大部分的客户也是这样的 但是昨
  • sqlilabs靶场学习(part1:环境搭建)

    sqlilabs靶场学习 0x00 两个小目标 0x01 sqlilabs 简介 0x02 sqlilabs 环境搭建 1 db creds inc文件配置 2 setup db php文件创建表结构 0x03 测试关卡 0x00 两个小目
  • 架设传奇时打开DBC数据库出错或读取DBC失败解决方法

    架设传奇时打开DBC数据库出错或读取DBC失败解决方法 DBC右键 属性 高级 管理员身份运行 即可 转载于 https www cnblogs com tutublogs p 8136792 html
  • Python函数和模块运用实践

    1 函数的定义与调用 函数名尽量用英文单词命名 并且容易识别意思 函数的形参有4中类型的参数 位置参数 指定参数 缺省参数和不定长参数 在python实践过程中用的最多的是不定长参数 不定长参数方便代码重构 def introduction
  • 使用Clion开发STM32过程中的提示:此文件不属于任何项目目标,代码洞察功能可能无法正常工作(附带汉化方法)

    Catalog 一 问题描述 二 解决办法 三 附带Clion汉化方法 一 问题描述 笔者在学习STM32开发过程中 在使用CubeMX生成工程文件后 又新建了自己的User文件 在编译的过程中终端会提示 在文件中会提示 并且笔者检查代码确
  • SQLite基本操作

    SQLite SQLite是一个软件库 实现了自给自足的 无服务器的 零配置的 事务性的 SQL 数据库引擎 SQLite 源代码不受版权限制 SQLite 直接访问其存储文件 SQLite 是非常小的 是轻量级的 完全配置时小于 400K
  • Git安装与配置

    1 Git安装与配置 1 1 什么是Git Git是目前世界上最先进的分布式版本控制系统 Git是免费 开源的 最初Git是为辅助 Linux 内核开发的 来替代 BitKeeper 作者 Linux和Git之父李纳斯 托沃兹 Linus
  • Java用JDBC通过远程连接PostgreSQL并实现操作

    工具及准备介绍 1 本文使用的开发软件是eclipse1 7 2 需要下载postgresqlpostgresql 9 2 1002 jdbc3 jar 需要的话在我的资源上下载 需要数据库管理软件Navicat 3 本文是用JDBC连接数
  • CSDN中如何转载他人的博客

    1 复制他人博客内容 打开需要转载的博客文章 在页面任意空白处点击鼠标右键 gt 检查 打开浏览器开发模式页面 在元素中找到名为article content的div 选中后右击 gt 复制 gt 复制 outerHTML 2 新写博客文章
  • 理想倍频器/分频器对相噪/杂散的影响

    结论 使用理想倍频器将信号频率提高 N N倍 会让相噪抬高 20log 10 N 20log 10 N dB 类似的 N N分频会让相噪降低 20log 10 N 20log 10 N dB 理想倍频器 对于信号 f t cos t t f
  • Stegsolve.jar工具包准备,避坑指南,教你正确启动Stegsolve

    目录 准备阶段 错误重现 错误分析 Stegsolve jar正确启动方法 准备阶段 下载地址 http www caesum com handbook Stegsolve jar 环境配置的过程 3分钟复制粘贴配置java环境变量 验证配
  • [Unity]有关curson/鼠标的详细AIP

    Unity 有关curson 鼠标的详细AIP 经常用到的与curson有关的API Cursor lockState Cursor lockState CursorLockMode None 光标行为未修改 Cursor lockStat
  • MySQL秘籍:让你的表操作炉火纯青

    每个人都有自己的一生 不要和别人去比较 比较只会让你感到沮丧和不满足 关注自己的成长和进步 并享受属于自己的旅程 作者 不能再留遗憾了 专栏 MySQL学习 本文章主要内容 学习MySQL的对表操作 查看表 创建表 删除表 对表进行增删改查
  • Vue 实现生成二维码(qrcodejs2),并生成图片(html2canvas)可实现保存和识别

    1 引包 npm install qrcodejs2 save npm install save html2canvas import html2canvas from html2canvas import QRCode from qrco
  • 传送文件到云服务器,传送文件到云服务器

    传送文件到云服务器 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具 将文件上传到云服务器 例如QQ exe 在本地主机和Windows云服务器上分别安装数据传输工具 将文件上传到云服务器 例如QQ e
  • Linux基础笔记4

    绝对路径 以根目录为参照物 从根目录开始 一级一级进入目录 相对路径 以当前目录作为参照物 进行目录查找 1 1 目录操作 ls 显示目录下的内容 查看 etc passwd文件 文件夹下的信息 ls l etc passwd 查看当前文件
  • zookeeper连接,报caught end of stream exception EndOfStreamException: Unable to read additional data fro

    最近发现线上的zookeeper的日志zookeeper out 文件居然有6G 后来设置下日志为滚动输出 但是改了之后 发现一天的日志量就是100多M 滚动日志一天就被冲掉了 这个不科学 再仔细查看下日志里的内容 发现有很多连接建立好 马
  • C++ std::remove/std::remove_if/erase用法探讨

    std remove 不会改变输入vector string的长度 其过程相当于去除指定的字符 剩余字符往前靠 后面的和原始字符保持一致 需要注意的是 remove函数是通过覆盖移去的 如果容器最后一个值刚好是需要删除的 则它无法覆盖掉容器
  • 强化学习的状态值函数与状态动作值函数

    在本文中 我们将学习贝尔曼方程和价值函数 回报和返还 return 正如前面所讨论的 强化学习agent如何最大化累积未来的回报 用于描述累积未来回报的词是返还 通常用R表示 我们还使用一个下标t来表示某个时间步长的返还 在数学符号中 它是