深度强化学习-Sarsa和Q-Learning的区别
2018-06-24 本文已影响2人
初七123
和AlphaGo中的MCTS不同
Q-Learning和Sarsa都是基于TD的强化学习方法
![](https://img.haomeiwen.com/i1507799/4eafd3dd97f728b5.png)
Q(s, a) 表示动作值函数
Q-Learning
初始化环境状态s
循环
--用 ε 贪心在s上选择动作a
--执行动作a获取回报r和新状态s'
--用(r +s'的最优动作值)和当前Q(s, a)的差更新Q(s, a)
--s=s'
Sarsa
![](https://img.haomeiwen.com/i1507799/425665419527f44a.png)
初始化环境状态s
用 ε 贪心在s上选择动作a
循环
--执行动作a获取回报r和新状态s'
--用 ε 贪心在s'上选择动作a'
--用(r + Q(s', a'))和当前Q(s, a)的差更新Q(s, a)
-- a = a', s = s'
总结
-
Q-Learning每次只需要执行一次动作得到(s,a,r,s')就可以更新一次;因为a'永远是最优的那个action,因此估计的Q值是最理想的值,即Q_π*(s,a)。而你生成样本时用的策略则不一定是最优的,因此是off-policy。
-
Sarsa必须执行两次动作得到(s,a,r,s',a')才可以更新一次;而且a'是在特定π的指导下执行的动作,因此估计出来的Q(s,a)是在该π之下的Q-value,即Q_π(s,a)。样本生成用的π和估计的π是同一个,因此是on-policy。
-
深度强化学里中使用的experience-replay机制将生成的样本与训练的样本独立开来,使用某一policy生成的样本拿来训练的时候,很可能当前policy已经和之前有所差别,因此使用experience-replay机制的DRL算法基本上是off-policy算法