前情提要
Sarsa和Q-learning在探索时都是用到了ε-greedy的策略。在训练过程中我们既要保证我们会沿着Q表格的指引进行活动,但同时我们有需要进行探索,我们不能固守已有的Q表格而不做出新的尝试,如何确定某一步是按照Q表格进行还是进行一步随机探索呢,这里使用到了ε-greedy,我们会事先设定一个ε的值,假设我设定ε值为(0,1),在每一部行动前我们会掷色子(在0-1之间生成一个随机数),随机数如果大于ε我们选择按Q表格行动,小于ε我们会在可能的行动中随机探索一次。
区分on-policy和off-policy
MDP包括{S,A,R,P}四个要素,其中R为奖励函数,P为环境的状态转移概率,即环境不确定度,但是以上两个因素很多情况下是未知的,这时就需要使用无模型(model-free)的方法。
Q-learning
Q-Learning的目的是学习特定State下、特定Action的价值。Q-table可以形象地将其称为生活手册,因为其表示了在不同动作和状态之下所得到的Q函数.建立一个Q-Table,以State为行、Action为列,通过每个动作带来的奖赏更新Q-Table。因此,Q-table可以作为一种我们强化学习之后得到的结果,也就是输出。
- e_predict
- e_target
1 | 初始化: 初始化学习率、可执行动作、Q_table等参数 |
1 | 模块名称 作用/功能 |
Q-Learning是off-policy的。异策略是指行动策略和评估策略不是一个策略。Q-Learning中行动策略是ε-greedy策略,要更新Q表的策略是贪婪策略。
①target policy:目标策略,如同战役中的军师,在幕后学习前方将士传来的经验并做出决策,不需要亲自与环境交互,是我们要学习的策略。
②behavior policy:行为策略,如同一线的战士,根据军师的命令在战场上实际作战,并将得到的经验传给后方的军师。
我们先看下Q-learning算法的更新Q值的公式:
SARSA
Sarsa全称是state-action-reward-state-action。 也是采用Q-table的方式存储动作值函数;而且决策部分和Q-Learning是一样的, 也是采用ε-greedy策略。不同的地方在于 Sarsa 的更新方式是不一样的。
Q-Learning算法,先假设下一步选取最大奖赏的动作,更新值函数。然后再通过ε-greedy策略选择动作。
Sarsa算法,先通过ε-greedy策略执行动作,然后根据所执行的动作,更新值函数。
我们再看下Sarsa算法的更新Q值的公式
因此两种算法在表现上也会有很大的区别,Sarsa表现得更为胆小,因为它会记住每一次错误的探索,它会对错误较为敏感,而Q-learning只在乎Q值的最大化,因此Q-learning会十分贪婪,表现得十分aggressive。
推荐阅读
About this Post
This post is written by Rui Xu, licensed under CC BY-NC 4.0.