当前位置: 首页 > article >正文

强化学习------时序差分(Temporal-Difference Learning)

简介

时序差分方法(Temporal-Difference Learning)简称TD算法是强化学习中非常经典的一种方法,Sarsa算法Q-learning算法都是基于时序差分这种方法的。
强化学习分为基于模型不基于模型的方法

  • 基于模型的方法:是一种通过建立对环境的模型来预测状态和行动结果,然后基于这些预测来制定最优策略的方法在基于模型的强化学习中,智能体会尝试建立一个对环境的内部模型,该模型可以预测在给定状态下采取某个行动后可能产生的下一个状态,以及相应的奖励。这个内部模型可以是一个确定性模型,也可以是一个概率性模型。
  • 不基于模型的方法:一种直接通过与环境的交互来学习最优策略的方法,而不依赖于对环境的内部模型的预测。在不基于模型的强化学习中,智能体通过与环境的交互来学习,观察采取不同行动后环境的反馈,并根据这些反馈来调整自己的策略。不基于模型的方法通常包括两个主要步骤:首先是通过与环境的交互来收集数据,然后使用这些数据来直接学习最优的策略。

总结来讲就是: 不基于模型,就基于数据

TD算法

TD算法是不基于模型的,即是基于数据的。

要的数据是什么呢?就是以下的数据:经验
在这里插入图片描述
就是策略 π \pi π产生的经验,即状态s、奖励r、下一状态s…这种序列。

TD算法的形式如下:
在这里插入图片描述

解释:
v t ( s t ) v_t(s_t) vt(st)就是估计的state value值,state value的定义在贝尔曼方程中,可以翻看之前的文章进行查看。

首先 v t + 1 ( s t ) v_{t+1}(s_t) vt+1(st)是对 v t ( s t ) v_t(s_t) vt(st)的一个新的估计值,是由式子右边得到的。
r t + 1 + γ v t ( s ( t + 1 ) ) r_{t+1}+γv_t(s_(t+1)) rt+1+γvt(s(t+1))叫做TD target,实际上是希望 v t ( s t ) v_t(s_t) vt(st)朝着TD target方向进行调整,就是更加接近于TD target,之后我们会介绍原理。

v t ( s t ) v_t(s_t) vt(st)减去TD target,叫做TD error相当于损失值,
在这里插入图片描述

TD算法是怎么让 v t ( s t ) v_t(s_t) vt(st)朝着TD target方向进行调整?
证明:

我们设TD target v ‾ t \overline{v}_t vt,则:
在这里插入图片描述

在这里插入图片描述

最下面这个式子表示,由 v t ( s t ) v_t(s_t) vt(st)变成 v t + 1 ( s t ) v_{t+1}(s_t) vt+1(st),会缩短和 v ‾ t \overline{v}_t vt的距离,即越来越靠近 v ‾ t \overline{v}_t vt,所以TD算法就是为了让 v t ( s t ) v_t(s_t) vt(st)朝着TD target方向进行调整

TD error表示什么意思呢?

在这里插入图片描述
首先他表示了两个不同时间之间的差异,因为 v s t v_{s_t} vst表示t时间, v s t + 1 v_{s_{t+1}} vst+1表示t+1的时间,这也是为什么叫做时序差分算法的原因。

其次他表示一种革新,我们的 v t ( s t ) v_t(s_t) vt(st)是一种估计值,但只这种估计可能是不准确的,这时候我们将其与新的经验( s t s_t st, r t + 1 r_{t+1} rt+1, s t + 1 s_{t+1} st+1)进行对比,产生了一个误差error,然后我们可以用这个error改进我们当前的这个估计。

TD 算法的性质

其本质就是在给定的策略下去估计state value,

并且他有如下的局限性:

  • 不能估计action value
  • 不能找到最优策略

不过以上两个问题,可以通过Sarsa算法以及Q-learning算法得到解决

Sarsa算法
Q-learning算法


http://www.kler.cn/a/155822.html

相关文章:

  • quartz
  • js 获取某日期到现在的时长 js 数字补齐2位
  • linux设置主机名
  • ctfshow-web入门-SSTI(web361-web368)上
  • 【前端学习指南】Vue computed 计算属性 watch 监听器
  • 时序数据库TimescaleDB安装部署以及常见使用
  • 【开源】基于Vue.js的超市账单管理系统的设计和实现
  • Mybatis使用注解实现复杂动态SQL
  • 【CVE-2023-49103】ownCloud graphapi信息泄露漏洞(2023年11月发布)
  • 栈和队列的OJ题--13.用队列实现栈
  • java_基础——ArrayList
  • Spring一些基础问题整理
  • 谱方法学习笔记-下(超详细)
  • 基于Java SSM框架+Vue实现旅游资源网站项目【项目源码+论文说明】计算机毕业设计
  • 【云原生Prometheus篇】Prometheus PromQL语句详解 1.0
  • 使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
  • Redis部署脚本(完成-第一版)
  • shell命令编写
  • 正则表达式从放弃到入门(2):grep命令详解
  • 机器学习---pySpark代码开发
  • 实体类转SQL工具类
  • 在南昌找工作应该上什么网
  • MySQL更改用户权限
  • GitHub Actions 之自动化发布 Maven 项目
  • 也可Adobe Animate
  • C++代码规范(JSF-AV版本)未完待续