TD时间差分算法

news/2025/2/25 19:34:47

TD算法用来估计value-state

给定data/experiece of algorithm,在这里插入图片描述
TD算法
在这里插入图片描述
其中TD error:
δ t = v ( s t ) − [ r t + 1 + γ v ( s t + 1 ) ] = v ( s t ) − v t ‾ \delta_t = v(s_t) -[r_{t+1}+ \gamma v(s_{t+1})]=v(s_t) - \overline{v_{t}} δt=v(st)[rt+1+γv(st+1)]=v(st)vt

其中 v t ‾ \overline{v_{t}} vt为目标值,该算法的目标是使得 v t v_t vt在下一个时刻t+1趋近于 v t ‾ \overline{v_{t}} vt.
证明:
在这里插入图片描述

最小化TD error为什么能求得最优策略?

假设最优策略为 π \pi π,
在这里插入图片描述
也就是说当 v t = v π v_t=v_{\pi} vt=vπ时,TD error = 0;所以最小化TD error可以求得最佳策略。

TD的数学含义

求解给定策略的Bellman公式:

Bellman exception equation:
在这里插入图片描述

TD就是求解该bellman公式的RM算法
推导过程:
在这里插入图片描述

在这里插入图片描述
可以看出这个解公式和TD算法非常相似,

TD与MC(蒙特卡洛)算法比较

TD:
  • online learning
  • Bootstrapping :更新value 的值依赖于之前对value的估计,需要随机初始值。
  • 低方差:随机采样值较少( R t + 1 R_{t+1} Rt+1 S t + 1 S_{t+1} St+1 A t + 1 A_{t+1} At+1
  • 有偏差:依赖于初始估计,如果初始估计不准,会造成误差。随着数据越来越多,bais会逐渐变小。
MC:
  • offline learning(必须要等到episode结束之后才能才能累计数据进行更新)只能处理episodic task;
  • Non-boostrapping:直接估计state/action values,不需要随机初始值。
  • 高方差:随机变量多: R t + 1 + R t + 2 + R t + 3 R_{t+1} + R_{t+2} + R_{t+3} Rt+1+Rt+2+Rt+3,且只用较少的采样数据来估计。假设整个episode的长度为L,每步的action的可能性有5个,那么会有 5 L 5^L 5L可能的episode。
  • 无偏估计:不依赖于初始估计。

Sarsa:

刚才介绍的TD算法只能估计state-values,Sarsa可以直接估计action values,并且结合policy improvement可以求解最优策略。

给定策略,如何估计action-value?
Sarsa(State-action-reward-state-action的缩写)就是将TD中的V换为Q:
在这里插入图片描述
Sarsa(policy evaluation)结合policy improvement求解最优策略:
首先在给定策略上求解bellman公式(TD算法
再进行policy improvement

和MC的不同:在对state进行估计update后,立马进行policy update,而不是积累很多数据对state进行一个相对准确的估计
在这里插入图片描述

Expected Sarsa:

与Sarsa的区别:
TD target由 r t + 1 + γ q ( s t + 1 , a t + 1 ) r_{t+1}+ \gamma q(s_{t+1},a_{t+1}) rt+1+γq(st+1,at+1)变为了 r t + 1 + γ v ( s t + 1 ) r_{t+1}+ \gamma v(s_{t+1}) rt+1+γv(st+1)

由于要计算期望,所以需要更多的数据;
由于不需要得到 a t + 1 a_{t+1} at+1,所以观测的随机变量变少了,随机性变少了,方差变小了
在这里插入图片描述

N-step Sarsa:

将Sarsa与MC相结合:
Sarsa基于一步的action来计算,N-step Sarsa等待n步的数据,再计算
在这里插入图片描述
N-step Sarsa 是一个更一般化的形式,当n=1,为Sarsa算法,当n-> ∞ \infty 时就变成了MC算法。N-step Sarsa是两个算法之间的一种平衡,可以平衡方差和偏差。
在这里插入图片描述


http://www.niftyadmin.cn/n/5865888.html

相关文章

Vue使用Three.js加载glb (gltf) 文件模型及实现简单的选中高亮、测距、测面积

安装&#xff1a; # three.jsnpm install --save three 附中文网&#xff1a; 5. gltf不同文件形式(.glb) | Three.js中文网 附官网&#xff1a; 安装 – three.js docs 完整代码&#xff08;简易demo&#xff09;&#xff1a; <template><div class"siteInspe…

【复习】计算机网络

网络模型 OSI 应用层&#xff1a;给应用程序提供统一的接口表示层&#xff1a;把数据转换成兼容另一个系统能识别的格式会话层&#xff1a;负责建立、管理、终止表示层实体之间的通信会话传输层&#xff1a;负责端到端的数据传输网络层&#xff1a;负责数据的路由、转发、分片…

2024-2025 学年广东省职业院校技能大赛 “信息安全管理与评估”赛项 技能测试试卷(二)

2024-2025 学年广东省职业院校技能大赛 “信息安全管理与评估”赛项 技能测试试卷&#xff08;二&#xff09; 第一部分&#xff1a;网络平台搭建与设备安全防护任务书第二部分&#xff1a;网络安全事件响应、数字取证调查、应用程序安全任务书任务 1&#xff1a;应急响应&…

3. Spring Cloud LoadBalancer 入门与使用

一、什么是 LoadBalancer? LoadBalancer(负载均衡器)是一种网络设备或软件机制&#xff0c;用于分发传入的网络流量负载(请求)到多个后端目标服务器上&#xff0c;从而实现系统资源的均衡利用和提高系统的可用性和性能。 1.1 负载均衡分类 服务器负载均衡是在服务端通过硬件…

Seata分布式事务【详解分布式事务AT模式、2PC两阶段提交协议、Seata Server(TC)环境搭建,附有示例+代码】

文章目录 六.Seata 分布式事务6.1 分布式事务介绍6.2 常见分布式事务解决方案6.3 2PC两阶段提交协议&#xff1a;Prepare&#xff1a;提交事务请求Commit&#xff1a;执行事务提交2PC问题 6.4 AT 模式介绍6.5 Seata是什么&#xff1f;6.6 Seata快速开始Seata Server&#xff08…

Apache Pinpoint工具介绍

Apache Pinpoint&#xff1a;分布式系统性能分析与链路追踪 一、Pinpoint 简介 Apache Pinpoint 是一个开源的 分布式追踪系统&#xff0c;专为微服务架构设计&#xff0c;支持 HTTP、RPC、MQTT 等协议的调用链追踪。其核心功能包括&#xff1a; 链路可视化&#xff1a;展示…

一个用于测试内存屏障差异的 C 语言示例程序

下面是一个用于测试内存屏障差异的 C 语言示例程序,演示在弱内存模型(如 ARM Cortex-A35)中,指令重排序可能导致的数据不一致问题,并对比不同同步机制的效果: 测试目标 验证以下场景: 无内存屏障:多线程环境下可能出现数据竞争。内存屏障:强制指令顺序,避免数据竞争…

香港多IP站群服务器

香港多IP站群服务器是指一种具有多个独立IP地址、能够同时运行多个网站或应用的服务器。这种服务器特别适用于需要大量IP地址来扩展和管理多个站点的企业或个人&#xff0c;尤其是在SEO优化、网络营销、以及需要避免IP封锁或限制的场景下。下面是对香港多IP站群服务器的详细扩展…