RL(七)Sarsa和Q-learning


前面一篇文章我们已经讲了时序差分的基本内容和预测问题的求解办法,但是对于控制问题还有深入了解,这篇文章就是介绍时序差分的控制问题。

1、Sarsa算法

时序差分为控制问题主要分为固定策略和非固定策略,我们先来介绍固定策略的算法sarsa。

1.1为什么叫Sarsa?

回顾我们状态改变的过程:在当前状态s下,执行动作a,得到反馈r,然后状态变成s’,再执行动作a’,,,,。然后一直这样做。发现这几个变量<s,a,r,s’,a’>就是我们的名字由来。可以用下面这个图来表示:
在这里插入图片描述

1.2Sarsa算法原理

时序差分Sarsa算法和时序差分预测算法有点相似,不同在于:Sarsa更新对象为动作价值函数,而不是状态价值函数。

在迭代的时候,我们首先基于ϵ−贪婪法在当前状态S选择一个动作A,这样系统会转到一个新的状态S′, 同时给我们一个即时奖励R, 在新的状态S′,我们会基于ϵ−贪婪法在状态S‘′选择一个动作A′,但是注意这时候我们并不执行这个动作A′,只是用来更新的我们的价值函数,我们会在下一个循环中才执行。价值函数的更新公式是:
在这里插入图片描述
其中,γ是衰减因子,α是迭代步长。

1.3 Sarsa算法流程

算法输入:迭代轮数T,状态集S, 动作集A, 步长α,衰减因子γ, 探索率ϵ,
输出:所有的状态和动作对应的价值Q

  1. 随机初始化所有的状态和动作对应的价值Q. 对于终止状态其Q值初始化为0.

  2. for i from 1 to T,进行迭代。
       a) 初始化S为当前状态序列的第一个状态。设置A为ϵ−贪婪法在当前状态S选择的动作。
       b) 在状态S执行当前动作A,得到新状态S′和奖励R
       c) 用ϵ−贪婪法在状态S′选择新的动作A′
       d) 更新价值函数Q(S,A):
    Q(S,A)=Q(S,A)+α(R+γQ(S′,A′)−Q(S,A))
       e) S=S′,A=A′
       f) 如果S′是终止状态,当前轮迭代完毕,否则转到步骤b)

这里有一个要注意的是,步长α一般需要随着迭代的进行逐渐变小,这样才能保证动作价值函数Q可以收敛。当Q收敛时,我们的策略ϵ−贪婪法也就收敛了。同时,Sarsa算法的动作价值函数q(s,a)是基于表格的方式存储的,这并不适合求解规模较大的强化学习任务。

2、Q-learning算法

Sarsa算法属于固定性策略,而Q-learning则属于非固定性策略。即Sarsa算法选择动作时所遵守的策略和更新动作价值函数时所遵守的策略是相同的;Q-learning算法在动作价值函数q(s,a)的更新中,采用的是不同与选择动作时所遵循的策略。

2.1Q-learning算法的引入

Q-Learning算法是一种使用时序差分求解强化学习控制问题的方法,回顾下此时我们的控制问题可以表示为:给定强化学习的5个要素:状态集S, 动作集A, 即时奖励R,衰减因子γ, 探索率ϵ, 求解最优的动作价值函数q∗和最优策略π∗。

这一类强化学习的问题求解不需要环境的状态转化模型,是不基于模型的强化学习问题求解方法。对于它的控制问题求解,和蒙特卡罗法类似,都是价值迭代,即通过价值函数的更新,来更新策略,通过策略来产生新的状态和即时奖励,进而更新价值函数。一直进行下去,直到价值函数和策略都收敛。

对于Q-learning,我们会使用ϵ−贪婪法来选择新的动作,这部分和Sarsa完全相同。但是对于价值函数的更新,Q-learning使用的是贪婪法,而不是Sarsa的ϵ−贪婪法。这一点就是Sarsa和Q-learning本质的区别。

2.2Q-learning算法原理

首先我们基于状态S,用ϵ−贪婪法选择到动作A, 然后执行动作A,得到奖励R,并进入状态S′,此时,如果是SARSA,会继续基于状态S′,用ϵ−贪婪法选择A′,然后来更新价值函数。但是Q-Learning则不同。

对于Q-Learning,它基于状态S′,没有使用ϵ−贪婪法选择A′,而是使用贪婪法选择A′,也就是说,选择使Q(S′,a)最大的a作为A′来更新价值函数。用数学公式表示就是:
在这里插入图片描述
用图片表示就是:
在这里插入图片描述
对应到上图中就是在图下方的三个黑圆圈动作中选择一个使Q(S′,a)最大的动作作为A′。

此时选择的动作只会参与价值函数的更新,不会真正的执行。价值函数更新后,新的执行动作需要基于状态S′,用ϵ−贪婪法重新选择得到。这一点也和SARSA稍有不同。对于SARSA,价值函数更新使用的A′会作为下一阶段开始时候的执行动作。

2.3Q-Learning算法流程

算法输入:迭代轮数T,状态集S, 动作集A, 步长α,衰减因子γ, 探索率ϵ,

输出:所有的状态和动作对应的价值Q

  1. 随机初始化所有的状态和动作对应的价值Q. 对于终止状态其Q值初始化为0.

  2. for i from 1 to T,进行迭代。
       a) 初始化S为当前状态序列的第一个状态。
       b) 用ϵ−贪婪法在当前状态S选择出动作A
       c) 在状态S执行当前动作A,得到新状态S′和奖励R
       d) 更新价值函数Q(S,A):
    在这里插入图片描述
       e) S=S′
       f) 如果S′是终止状态,当前轮迭代完毕,否则转到步骤b)

3、总结

Sarsa算法和动态规划法比起来,不需要环境的状态转换模型,和蒙特卡罗法比起来,不需要完整的状态序列,因此比较灵活。在传统的强化学习方法中使用比较广泛。

但是Sarsa算法也有一个传统强化学习方法共有的问题,就是无法求解太复杂的问题。在 SARSA 算法中,Q(S,A) 的值使用一张大表来存储的,如果我们的状态和动作都达到百万乃至千万级,需要在内存里保存的这张大表会超级大,甚至溢出,因此不是很适合解决规模很大的问题。当然,对于不是特别复杂的问题,使用Sarsa还是很不错的一种强化学习问题求解方法。

同样Q-learning算法的弊端和Sarsa算法的弊端一样:无法求解规模很大的问题。他们对于小型的强化学习问题是非常灵活有效的,但是在大数据时代他们的作用就会被削弱。但因为他们的存在,我们才可能在此基础上结合其他的方法来解决我们的更加复杂的问题。在深度学习兴起后,基于深度学习的强化学习开始占主导地位,因此从下一篇开始我们开始讨论深度强化学习的建模思路。

下一篇:值函数近似法

参考文章:https://www.cnblogs.com/pinard/p/9669263.html

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sarsa算法是一种基于Q-learning的强化学习算法,用于解决马尔可夫决策过程(MDP)中的问题。Sarsa是State-Action-Reward-State-Action的缩写,它是一种在线学习算法,能够逐步更新Q函数来寻找最优的动作策略。 Sarsa算法的基本思想是通过不断地与环境进行交互来学习最优的行动策略。在每个时间步骤中,算法会根据当前的状态选择一个行动,并观察到下一个状态和获得的奖励。然后,它会根据这些信息来更新Q函数,以改进行动策略。 具体来说,Sarsa算法的更新规则如下: 1. 在当前状态s,选择一个行动a,可以使用ε-greedy策略来进行行动选择,即以ε的概率选择一个随机行动,以1-ε的概率选择具有最大Q的行动。 2. 执行行动a,观察到下一个状态s'和获得的奖励r。 3. 根据新的状态s'和选择的行动a',使用Sarsa的更新规则来更新Q函数: Q(s, a) = Q(s, a) + α * (r + γ * Q(s', a') - Q(s, a)) 其中,α是学习率,γ是折扣因子,用于衡量当前状态与下一个状态之间的重要性。 通过不断地迭代和更新Q函数Sarsa算法能够逐步收敛到最优的Q函数,从而得到最优的行动策略。 总结起来,Sarsa算法是一种基于Q-learning的在线强化学习算法,通过与环境的交互和不断的Q函数更新来学习最优的行动策略。它适用于解决马尔可夫决策过程中的问题,并可以在各种应用领域中得到有效的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值