TD时间差分算法

server/2025/2/26 4:01:48/

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.ppmy.cn/server/170677.html

相关文章

GAMES104:18 网络游戏的架构基础-学习笔记

文章目录 课前QA一,网络协议Network Protocols1.0 Socket1.1 传输控制协议TCP(Transmission Control Protocol)1.2 用户数据报协议UDP(User Datagram Protocol)1.3 Reliable UDP1.3.1 自动重传请求ARQ(Automatic Repeat Request)1.3.1.1 滑窗…

Web自动化之Selenium添加网站Cookies实现免登录

在使用Selenium进行Web自动化时,添加网站Cookies是实现免登录的一种高效方法。通过模拟浏览器行为,我们可以将已登录状态的Cookies存储起来,并在下次自动化测试或爬虫任务中直接加载这些Cookies,从而跳过登录步骤。 Cookies简介 …

详解 @符号在 PyTorch 中的矩阵乘法规则

详解 符号在 PyTorch 中的矩阵乘法规则 在 PyTorch 和 NumPy 中, 符号被用作矩阵乘法运算符,它本质上等价于 torch.matmul() 或 numpy.matmul(),用于执行张量之间的矩阵乘法。 在本篇博客中,我们将深入探讨: 运算符…

Python常见面试题的详解20

1. “极验” 滑动验证码如何科学调整 模拟人工操作 1. 轨迹模拟:人类正常滑动滑块是先加速后减速,可通过代码模拟此轨迹。使用 Python 的selenium库结合ActionChains类实现滑块拖动,并随机生成轨迹模拟人类行为。 python from selenium im…

一文讲解Redis中的数据一致性问题

一文讲解Redis中的数据一致性问题 在技术派实战项目中,我们采用的是先写 MySQL,再删除 Redis 的方式来保证缓存和数据库的数据一致性。 我举例说明一下。 对于第一次查询,请求 B 查询到的缓存数据是 10,但 MySQL 被请求 A 更新为…

如何使用爬虫获取淘宝商品详情:API返回值说明与案例指南

在电商数据分析和运营中,获取淘宝商品详情是常见的需求。淘宝开放平台提供了丰富的API接口,允许开发者通过合法的方式获取商品信息。本文将详细介绍如何使用PHP编写爬虫,通过淘宝API获取商品详情,并解析API返回值的含义和结构。 一…

14.12 Auto-GPT OutputParser 架构设计:构建安全可控的大模型输出管道

Auto-GPT OutputParser 架构设计:构建安全可控的大模型输出管道 关键词:Auto-GPT 输出解析、结构化响应控制、内容安全过滤、多格式输出适配、错误恢复机制 1. OutputParser 的核心作用与设计挑战 输出解析的三大核心任务: #mermaid-svg-sUqVk51rX50EHefe {font-family:&q…

kotlin 知识点一 变量和函数

在Kotlin中定义变量的方式和Java 区别很大,在Java 中如果想要定义一个变 量,需要在变量前面声明这个变量的类型,比如说int a表示a是一个整型变量,String b表 示b是一个字符串变量。而Kotlin中定义一个变量,只允许在变量…