Sarsa(lambda)算法
知识点
最近在学强化学习,看了不少的教程,还是觉得莫烦大神的强化学习教程写的不错。所以,特意仔细研究莫烦的RL代码。在这贴上自己的理解。
莫烦RL教程:https://morvanzhou.github.io/tutorials/machine-learning/reinforcement-learning/
代码:https://github.com/MorvanZhou/Reinforcement-learning-with-tensorflow/tree/master/contents
[外链图片转存失败(img-6gCM0Y83-1563526103768)(https://i.loli.net/2019/07/19/5d317c577880688423.png)]
其实 lambda 就是一个衰变值, 他可以让你知道离奖励越远的步可能并不是让你最快拿到奖励的步, 所以我们想象我们站在宝藏的位置, 回头看看我们走过的寻宝之路, 离宝藏越近的脚印越看得清, 远处的脚印太渺小, 我们都很难看清, 那我们就索性记下离宝藏越近的脚印越重要, 越需要被好好的更新. 和之前我们提到过的 奖励衰减值 gamma 一样, lambda 是脚步衰减值, 都是一个在 0 和 1 之间的数.
下面是Sarsa(lambda)算法的伪代码:
2.迷宫游戏——Sarsa(lambda)算法
import numpy as np
import pandas as pd
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