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算法和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