强化学习数学原理学习(四)

devtools/2024/11/20 20:20:11/

前言

今天是时序差分学习

正文

首先,明确一点,时序差分也是无模型的情况下的强化学习方法,TD学习是蒙特卡洛思想和动态编程(DP)思想的结合。最基础的时序差分学习估计状态值,而后续提出的Sarsa和Q-learning方法则直接对动作值进行估计。

最基础的TD算法(TD(0))

在策略评估中估计给定的策略的状态值,本质还是在求解贝尔曼方程

因为TD(0)的更新部分基于现有的估计,所以我们说它是一个自举方法(bootstrapping method),就像DP一样。

TD(0)算法的步骤

  1. 初始化值函数 V(s) 对所有状态s(可以初始化为0或随机值)。
  2. 观察当前状态St​。
  3. 执行动作At​,观察即时奖励Rt+1​和下一个状态St+1​。
  4. 使用上述更新规则更新V(St​)。
  5. St+1​变成新的St​,重复步骤2-4。

TD(0)算法的特点

  • 样本更新:TD(0)算法不需要完整的回报序列,只需要一步的奖励和下一个状态的预测值。
  • Bootstrapping:TD(0)算法在更新时使用了现有的预测值)V(St+1​),而不是等到最终结果出现。
  • 自举:算法通过自身估计来引导学习过程,而不是依赖于外部信息。

Sarsa (TD for action values)

SARSA(State-Action-Reward-State-Action)是一种基于时序差分(Temporal Difference, TD)的学习算法,用于估计动作值函数(也称为Q函数),即给定状态和动作下的期望回报。SARSA算法是强化学习中的一个重要算法,主要用于求解控制问题,即找到最优策略。

SARSA算法的核心思想是通过观察序列St​,At​,Rt+1​,St+1​,At+1​来更新动作值函数Q(s,a)。这里的每个字母代表:

  • St​:在时间步t时的状态。
  • At​:在时间步t时采取的动作。
  • Rt+1​:在时间步t+1时收到的奖励。
  • St+1​:在时间步t+1时的状态。
  • At+1​:在时间步t+1时采取的动作。
变体1:Expected Sarsa

Expected SARSA 是 SARSA 算法的一种变体,其主要区别在于它如何更新 Q 值。与标准 SARSA 不同的是,Expected SARSA 使用下一步策略下各动作的概率分布来对下一步的 Q 值进行加权平均,而不是选择特定的动作进行更新。这种方式可以减少更新中的方差,从而提供更稳定的学习过程。

核心思想

在Expected SARSA中,我们不是直接使用SARSA中具体的At+1​ 去更新 Q 值,而是考虑所有可能动作的加权平均。这意味着在计算期望值的时候,需要知道策略 π 下各个动作的概率:

  1. 降低方差:通过考虑所有可能的动作及其概率,Expected SARSA 可以降低学习过程中的方差,因为它对环境中噪声的敏感性较低。

  2. 灵活性:由于采用的是期望值计算,它更加依赖策略本身预测的概率,因此对策略选择有更多灵活性和可控性。

  3. 稳定性:相比于标准的SARSA,Expected SARSA 提供的一种平滑更新方法,也就是使用期望而不是单一可能,使得更新稳定性更好。

变体2:n-step Sarsa

n-step SARSA 是 SARSA 算法的一种变体,旨在结合单步更新与多步更新的优点。它通过在每次更新中考虑多个未来时间步的奖励来提高学习的样本效率和稳定性。与一阶的SARSA不同,n-step SARSA在每次更新时不仅考虑当前步和下一步的奖励,还考虑未来 n−1 步的奖励。

n-step SARSA 的核心思想

  1. 多步奖励:将多个时间步的累计奖励用于更新 Q 值。
  2. 平衡偏差和方差:通过选择合适的 n 值,可以在偏差(单步更新)和方差(多步更新)之间找到良好的平衡。
  3. 灵活性:n 的选择影响到算法的样本效率和学习稳定性。

算法步骤

以下是 n-step SARSA 的基本步骤:

  1. 初始化:

    • 初始化状态动作值函数 Q(s,a) 为任意值。
    • 设置初始的策略,通常是 ϵ-贪婪策略。
  2. 对于每一轮(episode):

    • 初始化序列的首状态 S0​。
    • 从策略中选择初始动作 A0​。
  3. 每个时间步 t 的操作:

    • 执行动作 At​,观察奖励 Rt+1​ 和下一个状态 St+1​。
    • 从状态St+1​ 根据策略选择下一动作 At+1​。
    • 计算未来 n 步的累计奖励
    • 更新动作值函数
    • 更新状态:St​←St+1​,动作:At​←At+1​。
  4. 直到达到终止状态

选择 n 的影响
  • 小的 n: 类似于一阶 SARSA,更新频繁,但使用的信息较少,因此偏差可能更高。
  • 大的 n: 利用更多未来奖励信息,可能提供更稳定的策略改进,但方差可能较高,可能需要更多的计算。

Q-learing (TD for optimal action values)

太熟了,不提了,需要注意的是和上面的比起来的主要区别在于,Sarsa属于on-policy算法,而Q-learing属于off-policy算法。

放一张总结图:

尾声

很久没更了,最近有点忙。。。


http://www.ppmy.cn/devtools/135573.html

相关文章

在Linux上如何利用NTP使客户端和服务端的时间同步

对于服务端 一、先在服务端安装相关配置-----yum install chrony -y-----并启动 二、进入chrony的文件里----在第三行修改为阿里云时间服务地址 三、在服务端重启chrony 四、进行测试------chronyc sources -v 五、进入chrony的文件里添加客户端的ip地址---在第26行&#…

关于adb shell登录开发板后terminal显示不完整

现象 今天有个同事跟我说,adb shell 登录开发板后,终端显示不完整,超出边界后就会出现奇怪的问题,比如字符覆盖显示等。如下图所示。 正常情况下应该如下图所示: 很明显,第一张图的显示区域只有完整区域…

爬虫策略——反爬机制

现代网站通常会使用多种反爬手段来限制爬虫访问数据。了解这些机制并针对性地制定绕过策略,是构建高效爬虫的关键。 1. 常见反爬手段 1.1 User-Agent 检查 网站通常会通过检查请求中的 User-Agent 字段,判断访问是否来自真实用户。爬虫默认的请求库&am…

ubuntu 22.04 shell

原因:在ubuntu(18.04)默认是指向bin/dash解释器的,dash是小巧的shell(阉割版的bash),其功能远没有bash强大和丰富。上述问题就是dash不支持let和i运算等功能造成的。 ls -la /bin/sh lrwxrwxrw…

LeetCode 3239.最少翻转次数使二进制矩阵回文 I:遍历(行和列两种情况分别讨论)

【LetMeFly】3239.最少翻转次数使二进制矩阵回文 I:遍历(行和列两种情况分别讨论) 力扣题目链接:https://leetcode.cn/problems/minimum-number-of-flips-to-make-binary-grid-palindromic-i/ 给你一个 m x n 的二进制矩阵 grid…

NotePad++中安装XML Tools插件

一、概述 作为开发人员,日常开发中大部的数据是标准的json格式,但是对于一些古老的应用,例如webservice接口,由于其响应结果是xml,那么我们拿到xml格式的数据后,常常会对其进行格式化,以便阅读。…

Spring Boot核心概念:自动配置

Spring Boot的自动配置是其核心特性之一,它旨在尽可能自动配置Spring应用程序。自动配置尝试根据类路径上的jar依赖、定义的bean以及各种属性设置猜测并配置你可能需要的组件。 SpringBootApplication注解 SpringBootApplication是一个组合注解,它聚集…

《现代制造技术与装备》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问:《现代制造技术与装备》是不是核心期刊? 答:不是,是知网收录的第二批认定学术期刊。 问:《现代制造技术与装备》级别? 答:省级。主管单位:齐鲁工业大学&#xff0…