强化学习(六)时序差分

news2025/2/25 20:39:28

时序差分(TD)是强化学习的核心,其是蒙特卡罗(MC)和动态规划(DP)的结合。

1、TD 预测

TD 和 MC 都是利用经验来解决预测问题。一种非平稳环境的一般访问蒙特卡罗方法是
V ( S t ) ← V ( S t ) + α [ G t − V ( S t ) ] V(S_t)\leftarrow V(S_t)+\alpha\left[G_t-V(S_t)\right] V(St)V(St)+α[GtV(St)]

MC 方法必须等到事件结束才能确定 V ( S t ) V(S_t) V(St) 的增量(因为结束 G t G_t Gt 才是已知的),而 TD 方法只需要等到下一个时间步长。在时间 t + 1 t+1 t+1 时,立即生成一个目标,并使用观察到的奖励 R t + 1 R_{t+1} Rt+1 和估计值 V ( S t + 1 ) V(S_{t+1}) V(St+1) 进行有用的更新,最简单的 TD 方法更新方式如下:
V ( S t ) ← V ( S t ) + α [ R t + 1 + γ V ( S t + 1 ) − V ( S t ) ] V(S_t)\leftarrow V(S_t)+\alpha\left[R_{t+1}+\gamma V(S_{t+1})-V(S_t)\right] V(St)V(St)+α[Rt+1+γV(St+1)V(St)]

MC 方法更新的目标是 G t G_t Gt,而 TD 方法的目标是 R t + 1 + γ V ( S t + 1 ) R_{t+1}+\gamma V(S_{t+1}) Rt+1+γV(St+1)。这种 TD 方法称为 T D ( 0 ) \mathrm{TD}(0) TD(0)在这里插入图片描述
v π ( s ) ≐ E π [ G t ∣ S t = s ] = E π [ R t + 1 + γ G t + 1 ∣ S t = s ] = E π [ R t + 1 + γ v π ( S t + 1 ) ] \begin{aligned} v_\pi(s)&\doteq\Bbb{E}_\pi\left[G_t|S_t=s\right]\\[1ex] &=\Bbb{E}_\pi\left[R_{t+1}+\gamma G_{t+1}|S_t=s\right]\\[1ex] &=\Bbb{E}_\pi\left[R_{t+1}+\gamma v_\pi(S_{t+1})\right] \end{aligned} vπ(s)Eπ[GtSt=s]=Eπ[Rt+1+γGt+1St=s]=Eπ[Rt+1+γvπ(St+1)]

由上式,MC 方法使用第二行的估计值作为目标,而 DP 方法使用第三行的估计值作为目标。MC 目标是一个估计值,因为期望值是未知的,我们是用平均样本收益代替实际的期望收益;DP 目标也是一个估计值,虽然环境模型完全已知,但是 v π ( S t + 1 ) v_\pi(S_{t+1}) vπ(St+1) 是未知的,使用的当前的估计值;TD 目标也是一个估计值,因为它对第三行中的期望值进行采样,且使用的当前的估计值而不是真实的 v π v_\pi vπ。因此,TD 方法结合了 MC 的采样和 DP 的自举。

另外, T D ( 0 ) \mathrm{TD}(0) TD(0) 算法中括号内是一种误差,即状态 S t S_t St 的当前估计值与更好的估计值 R t + 1 + γ V ( S t + 1 ) R_{t+1}+\gamma V(S_{t+1}) Rt+1+γV(St+1) 的差异,这个量称为 T D \mathrm{TD} TD 误差( T D   e r r o r TD\ error TD error,在强化学习中以各种形式出现:
δ t ≐ R t + 1 + γ V ( S t + 1 ) − V ( S t ) \delta_t\doteq R_{t+1}+\gamma V(S_{t+1})-V(S_t) δtRt+1+γV(St+1)V(St)

2、TD 预测的优点

显然,TD 方法比 DP 方法有一个优势,因为它无需环境模型已知。TD 方法比 MC 方法的一个明显的优势是,它以在线、完全增量的方式实现;另外 MC 方法需要等到一个回合结束,而 TD 方法只需要等待一个时间步,这很关键,某些特殊情形可能回合结束时间太长,甚至回合不会结束。

3、TD(0) 的最优性

假设只有有限的经验,例如 10 个回合或 100 个时间步长,在这种情况下,增量学习方法的常见手段是反复呈现经验,直到收敛到一个值。给定一个近似价值函数 V V V,MC 增量和 TD 增量

4、Sarsa:同策略 TD 控制

现在我们使用 TD 预测方法来解决控制问题,与之前一样,我们遵循广义策略迭代(GPI)的模式,与 MC 方法一样,我们面临着进行探索的需要,同样,方法分为两大类:同策略和异策略。本节提出一种同策略上的 TD 控制方法。

第一步是学习动作价值函数而不是状态价值函数,对于同策略方法,我们必须估计 q π ( s , a ) , ∀ s ∈ S , ∀ a ∈ A q_\pi(s,a),\forall s\in\cal S,\forall a\in\cal A qπ(s,a),sS,aA,一个回合由状态和状态-动作对的交替序列组成:
在这里插入图片描述
在前一章中,我们考虑从状态到状态的转换,并学习了状态的价值。现在我们考虑从状态-动作对到状态-动作对的转换,并学习状态-动作对的价值。形式上,这两种情况是一样的:它们都是带有奖励过程的马尔可夫链,保证 T D ( 0 ) \mathrm{TD}(0) TD(0) 下状态价值收敛的定理也适用于动作价值的相应算法:
Q ( S t , A t ) ← Q ( S t , A t ) + α [ R t + 1 + γ Q ( S t + 1 , A t + 1 ) − Q ( S t , A t ) ] Q(S_t,A_t)\leftarrow Q(S_t,A_t)+\alpha\left[R_{t+1}+\gamma Q(S_{t+1},A_{t+1})-Q(S_t,A_t)\right] Q(St,At)Q(St,At)+α[Rt+1+γQ(St+1,At+1)Q(St,At)]在这里插入图片描述

5、Q-learning:异策略 TD 控制

强化学习的早期突破之一就是开发了一种被称为 Q-learning 的异策略 TD 控制算法,定义如下
Q ( S t , A t ) ← Q ( S t , A t ) + α [ R t + 1 + γ max ⁡ a Q ( S t + 1 , a ) − Q ( S t , A t ) ] Q(S_t,A_t)\leftarrow Q(S_t,A_t)+\alpha\left[R_{t+1}+\gamma\max_a Q(S_{t+1},a)-Q(S_t,A_t)\right] Q(St,At)Q(St,At)+α[Rt+1+γamaxQ(St+1,a)Q(St,At)]在这里插入图片描述

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

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

相关文章

力扣-H指数

问题 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她&#xff09…

android开发平台,Java+性能优化+APP开发+NDK+跨平台技术

开头 通常作为一个Android APP开发者,我们并不关心Android的源代码实现,不过随着Android开发者越来越多,企业在筛选Android程序员时越来越看中一个程序员对于Android底层的理解和思考,这里的底层主要就是Android Framewok中各个组…

【Linux深入剖析】再续环境变量 | 进程地址空间

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 1.环境变量再续1.1 和…

图书管理系统(使用IO流实现数据的读取和写入)--version4.0

目录 一、项目要求: 二、项目环境 三、项目使用的知识点 四、项目代码 五、项目运行结果 六、项目难点分析 图书管理系统--versions1.0: 图书管理系统--versions1.0-CSDN博客文章浏览阅读981次,点赞29次,收藏17次。本文使用…

Encoding, Encryption, Tokenization 傻傻分不清楚

Encoding, Encryption, Tokenization 傻傻分不清楚 本文转自 公众号 ByteByteGo,如有侵权,请联系,立即删除 今天来聊聊编码 (Encoding), 加密 (Encryption) 和 令牌化 (Tokenization) 的区别。 编码、加密和标记化是三种不同的流程&#xff…

游泳耳机哪个牌子质量好?4大高口碑产品推荐入手

游泳耳机作为一种专业的水上音频装备,能够使游泳者在游泳过程中享受音乐的同时保持安全和舒适。随着科技的发展,市面上涌现出许多品牌和型号的游泳耳机,但是其中哪个牌子的质量更好呢?下面这篇文章将为大家介绍四大热门口碑产品&a…

项目流程图

实现便利店自助付款项目 服务器: 1、并发服务器(多进程、多线程、IO多路复用) 2、SQL数据库的创建和使用(增删改查) 3、以模块化编写项目代码,按照不同模块编写.h/.c文件 客户端: 1、QT客户端界…

dolphinscheduler伪集群部署教程

文章目录 前言一、配置免密登录1. 配置root用户免密登录2. 创建用户2.1 创建dolphinscheduler用户2.2 配置dolphinscheduler用户免密登录2.3 退出dolphinscheduler用户 二、安装准备1. 安装条件2. 安装jdk3. 安装MySQL4. 安装zookeeper4.1 zookeeper单机部署4.1.1 zookeeper3.1…

js 手写深拷贝方法

文章目录 一、深拷贝实现代码二、代码讲解2.1 obj.constructor(obj)2.2 防止循环引用 手写一个深拷贝是我们常见的面试题,在实现过程中我们需要考虑的类型很多,包括对象、数组、函数、日期等。以下就是深拷贝实现逻辑 一、深拷贝实现代码 const origin…

扫码看视频的效果怎么做?在电脑上制作视频活码只需3步

怎么做扫码看视频的效果呢?通过二维码来储存视频并用来做展示用途,是现在很常见的一种二维码应用类型,这种方式可以有效的提升内容的快速传播,而且用户体验也比较好。 那么如何通过视频二维码生成器的功能来制作自己的二维码图片…

提升媒体文字质量:常见错误及改进措施解析

在现代媒体出版中,文字质量直接影响着信息的传递效率和准确性。近期,中国产业报协会全国行业报质检办公室对中央及国家机关主管的84家行业报纸进行了质量检查,发现了一系列共性的文字使用错误。本文旨在深入探讨这些错误,并提出改…

Springboot中ApplicationContextInitializer的使用及源码分析

文章目录 一、认识ApplicationContextInitializer1、ApplicationContextInitializer的作用2、认识ApplicationContextInitializer接口3、ApplicationContextInitializer的常用用法(1)注册BeanFactoryPostProcessor(2)注册Applicat…

关于StartAI本地部署相关问题解答

很多小伙伴们都有接入自己本地SD的需求,对此小编整理了一些相关问题~ 一、本地部署相关条件 对于想要本地部署的小伙伴要了解,相对于使用StartAI试用引擎本地部署更加考验电脑硬件配置备噢~ 流畅使用要nvidia显卡,6g以上显存(最…

Google发布Genie硬杠Sora:通过大量无监督视频训练最终生成可交互虚拟世界

前言 Sora 问世才不到两个星期,谷歌的世界模型也来了,能力看似更强大(嗯,看似):它生成的虚拟世界自主可控 第一部分 首个基础世界模型Genie 1.1 Genie是什么 Genie是第一个以无监督方式从未标记的互联网视频中训练的生成式交互…

浅析前端的堆栈原理以及深浅拷贝原理

浅析前端的堆栈原理以及深浅拷贝原理 首先来看一个案例 const obj {name:hzw,age:18 } let objName2 obj objName2.age 12 console.log(obj,objName2) // {name: hzw, age: 12} {name: hzw, age: 12}这里是不是很奇怪,为什么,为什么我改变objName2的…

使用 Gradle 版本目录进行依赖管理 - Android

/ 前言 / 在软件开发中,依赖管理是一个至关重要的方面。合理的依赖版本控制有助于确保项目的稳定性、安全性和可维护性。 Gradle版本目录(Version Catalogs)是 Gradle 构建工具的一个强大功能,它为项目提供了一种集中管理依赖…

轻松玩转Git

轻松玩转Git 快速入门什么是Git为什么要做版本控制安装git Git实战单枪匹马开始干拓展新功能小结 紧急修复bug分支紧急修复bug方案命令总结工作流 上传GitHub第一天上班前在家上传代码初次在公司新电脑下载代码下班回到家继续写代码到公司继续开发在公司约妹子忘记提交代码回家…

算法——滑动窗口之最大连续1的个数、将x减到0的最小操作数、水果成篮

3.最大连续1的个数 题目:. - 力扣(LeetCode) 题目要求的是给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 。 按照题目正面去做,还要替换0,很麻烦 反正我们最后要求的是最长…

算法C++

枚举 1.化段为点 前缀和 eg:给一个数列&#xff0c;算x到y个数的和 #include <iostream> #include <vector> using namespace std;int main() {int n;cin>>n;vector<int> a(n);vector<int> sum(n1,0);for(int i0;i<n;i){scanf…

三种食物轮流吃,睡眠时间又长又香!

睡眠质量一直是人们关注的焦点&#xff0c;而饮食则被认为是影响睡眠的重要因素之一。近年来&#xff0c;有一种食物搭配方法备受瞩目&#xff0c;据说可以让人们的睡眠时间又长又香。这种方法并不复杂&#xff0c;只需要轮流食用三种特定食物&#xff0c;就能有效改善睡眠质量…