Q-learning与Sarsa算法的区别

接触reinforcement learning有一个月的时间了,现在回来回顾当时写的Q-learning和Sarsa算法,有了更多的感触。

对于Q-learning算法和Sarsa算法的具体流程,原文已经讲解的很详细,附上参考博客地址:

https://blog.csdn.net/u010223750/article/details/78955807

本文就记录一下Q-learning和Sarsa的区别,并不详细解释这两种算法了。

首先,设想一种走迷宫的场景。迷宫中有陷阱,给定迷宫的入口和出口,agent的初始位置在迷宫的入口,要让agent以最少的步数走出迷宫。(如下图所示)每走一步给一个-1的reward,进入到陷阱就结束了,reward为-100,进入到出口游戏也结束,reward=0

环境的部分我就不细说了,下面说一说Q-learning和Sarsa在解决这个问题的区别在哪里。

区别在于选择action(当前动作和下一个状态采取的动作)

Q-learning每次使用epsilon-greedy的方法,选择当前状态的action,

在更新Q[state][action]的时候,是使用Q[next_state][next_acion],其中next_action是使Q[next_state][next_action]最大的动作。
然后state=next_state,动作再重新选择,next_acion值用于更新Q值。

Sarsa则不同。使用epsilon-greedy选择next_state的next_action,然后用Q[next_state][next_acion]来更新Q[state][action],更新的时候:
state=next_state, action=next_action 

从中就可以看出两个算法的区别,Sarsa是一种on-policy算法,Q-learning是一种off-policy算法。
Sarsa选取的是一种保守的策略,他在更新Q值的时候已经为未来规划好了动作,对错误和死亡比较敏感。而Q-learning每次在更新的时候选取的是最大化Q的方向,而当下一个状态时,再重新选择动作,Q-learning是一种鲁莽、大胆、贪婪的算法,对于死亡和错误并不在乎。
在实际中,如果你比较在乎机器的损害就用一种保守的算法,在训练时,可以减少机器损害的次数。
可以看一下代码的运行结果:

Sarsa:选择的是一条最安全的道路,远离陷阱

 

 

Q-learning:选择的是一条最快的道路,尽快到达出口

 

最后附上代码链接:

https://github.com/nuomizai/Qlearning

 

 

  • 29
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Q-learningSARSA都属于时序差分强化学习方法,而不是蒙特卡洛强化学习方法。 时序差分强化学习是一种结合了动态规划和蒙特卡洛方法的强化学习方法。它通过使用经验数据进行增量式的更新,同时利用了当前和未来的估计值来逼近最优值函数。 具体来说,Q-learningSARSA都是基于Q值函数的时序差分强化学习算法。 1. Q-learning:Q-learning是一种基于动态规划的无模型强化学习算法。它使用了时序差分(TD)方法,通过不断迭代更新Q值函数的估计值,使其逼近最优的Q值。Q-learning算法通过将当前状态和动作的估计值与下一个状态和动作的最大估计值相结合,来更新Q值函数的估计值。 2. SARSASARSA是一种基于时序差分的强化学习算法,也是一种模型-free的强化学习算法SARSA算法使用了时序差分的方法,通过不断迭代更新Q值函数的估计值。与Q-learning不同的是,SARSA算法采用了一个策略(Policy)来决定下一个动作,并在更新Q值时使用下一个动作的估计值。 时序差分强化学习方法与蒙特卡洛强化学习方法相比,具有更高的效率和更好的适应性。它可以在每个时间步骤中进行更新,不需要等到任务结束后才进行更新,从而更快地收敛到最优策略。而蒙特卡洛强化学习方法则需要等到任务结束后才能获取完整的回报信息,进行全局更新。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值