强化学习之路2——Sarsa算法

本文深入探讨了Sarsa算法,通过对比Sarsa与Q-Learning的区别,结合迷宫游戏的实例,详细解析了Sarsa算法的实现过程,包括伪代码展示和主函数的运行逻辑。通过学习,可以了解到Sarsa算法如何利用实际采取的动作进行Q表更新,以及其名称来源的趣味性。
摘要由CSDN通过智能技术生成

Sarsa算法

最近在学强化学习,看了不少的教程,还是觉得莫烦大神的强化学习教程写的不错。所以,特意仔细研究莫烦的RL代码。在这贴上自己的理解。

莫烦RL教程:https://morvanzhou.github.io/tutorials/machine-learning/reinforcement-learning/

代码:https://github.com/MorvanZhou/Reinforcement-learning-with-tensorflow/tree/master/contents

1.伪代码

下图的是Sarsa算法的伪代码:
Sarsa算法的伪代码
下图对比了Sarsa算法和Q-Learning算法
对比Sarsa算法和Q-Learning算法

2.迷宫游戏——Sarsa算法

2.1Sarsa算法实现

Qlearing和Sarsa更新Q表的不同之处在于,QLearning使用的Q现实是用的Q(S_)中的最大值(下一步不一定使用该(S_,A_),只是想象的),
而Sarsa使用的是下一步将要采用的Q(S_,A_)

# 编写了一个RL父类,方便Q-learning 和 Sarsa 子类继承。
# RL类中前一节都已解读过
class RL(object):
    def __init__(self, action_space, learning_rate=0.01, reward_decay=0.9, e_greedy=0.9):
        self.actions = action_space  # a list
        self.lr = learning_rate
        self.gamma = reward_decay
        self.epsilon = e_greedy

        self.q_table = pd.DataFrame(columns=self.actions, dtype=np.float64)

    def check_state_exist(self, state):
        if state not in self.q_table.index:
            # append new state to q table
            self.q_table = self.q_table.append(
                pd.Series(
                    [0
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值