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

强化学习(赵世钰版)-学习笔记(7.时序差分学习)

本章是课程算法与方法中的第四章,介绍的时序差分学习算法是基于随机近似方法设计的强化学习方法,也是model-free的方法。

时序差分算法是一种近似估计策略状态值的算法,具体的形式如下:

本质上是在当前t时刻,被访问到的状态采用近似迭代的策略(即上一章讲的RM算法)估计出一个状态值,没被访问到的维持不变。TD算法更新状态值的公式,可以展开来看。

TD Target是状态值的定义,当前回报加上打折后的后续状态值。TD Error是相关估计误差,类似于SGD里面的梯度。这里证明了随着迭代的持续,估计值会慢慢想真实值靠拢。

而TD Error是用于衡量t时刻的状态值与真实的状态值,如果相等皆大欢喜,如果不相等,则提供了策略修改的信息。

这里引入了一个贝尔曼方程的另一种形式-贝尔曼期望方程。

因为是Model-free,所以只能获取到相关的采样输入,代进贝尔曼期望方程,则为

所以,用RM算法计算状态值,可以表现为一下的一个迭代公式

TD算法的公式再次贴过了,方便两者的对比(即公式3和公式6)。

两个公式有一下差异,对RM算法的表达形式(即公式三)进行对应的修改,就变成了TD算法(公式六)。

这里对比了MC算法和TD算法,TD的算法快一些,不需要等所有抽样结束才开始算。

TD算法适用于计算状态值的算法,对应计算行为值的类似算法叫做Saras(state-action-reward-state-action的缩写),其表达式为

通过Saras算法,可以计算出行为值的期望值,并进一步找到最优策略,具体的方式如下伪代码所示;

介绍完Saras算法,后续是n-step Saras算法,这是Saras和MC算法的结合体。

n是这个算法的一个超参数,设为1变成原版的Saras算法,设为无穷则变成了MC算法。

n-step Saras结合了Saras和MC算法的特点,通过n来调整算法的倾向性。

然后是大名鼎鼎的Q-Learning,Saras的思路是估算出一个策略的行为值,并结合策略改进找到最优策略。而Q-Learning的策略是一步到位。

Q-Learning算法的数学模型如下所示,与Saras算法的形式类似,唯一区别就是TD Target(红框部分)

Q-Learning本质上就是用贝尔曼最优方程计算最优行为值。后面提到了On-policy和Off-policy,如果行为策略和目标策略一致,就是On-policy,否则就是Off-policy。

Off-policy的优点就在于,可以通过另一个策略的采样结果,来找到目标策略的最优情况。

那么怎么判断一个TD算法是On-policy还是Off-policy呢?第一个是看要解决的数学问题,第二个是看算法对实验样本的要求。

Q-Learning是Off-policy,而Saras和MC都是On-policy,因为需要计算的策略,用到的数据都是相同的策略生成的,同时也是个策略问题,都是通过迭代找到最优策略的。

Q-Learning完全不一样

Q-Learning分别可以用On-policy和Off-policy实现,下面是两种方法的伪代码

本章介绍的几个算法,数学模型的架构都是一样的,唯一的区别就是TD Target不一样。

这几个算法都是随机近似法来解决贝尔曼方程或贝尔曼最优方程(Q-Learning)。

个人感觉Monte Carlo、Saras和n-step Saras,分别类似于随机梯度下降、梯度下降、小批量梯度下降。


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

相关文章:

  • Centos离线安装openssl
  • DeepSeek-prompt指令-当DeepSeek答非所问,应该如何准确的表达我们的诉求?
  • 单体架构、微服务组件与解决方案
  • 【计量地理学】实验二 经典统计分析方法
  • ⭐算法OJ⭐汉明距离【位操作】(C++ 实现)Hamming Distance
  • Ubuntu24.04 LTS 版本 Linux 系统在线和离线安装 Docker 和 Docker compose
  • Spring MVC面试题(一)
  • Linux Shell 脚本编程极简入门指南
  • 【每日学点HarmonyOS Next知识】防截屏、作用域问题、观察器问题、对话框关闭、判断对象包含某个字段
  • Servlet 服务器 HTTP 响应
  • 如何使用 Spring Boot 实现分页和排序
  • 计算机视觉领域开源数据集资源整理
  • 支持向量机(SVM)原理与应用
  • 代码随想录|二叉树|08对称二叉树
  • H5端vue3 SSR 项目报错小计
  • 鸿蒙APP采用WebSocket实现在线实时聊天
  • 队列的简单例题
  • 【故障处理系列--docker卷的挂载】
  • 我又又又又又又更新了~~纯手工编写C++画图,有注释~~~
  • vs code配置 c/C++