强化学习中的Q-learning算法和Sarsa算法的区别
Q-learning
算法描述:
Sarsa
算法描述:
假设我们的 Q(s, a) 是一个 Q table ,如下图所示,该表格表示共有三个 state (状态): 、、 ,每个状态都有三个可选 action (动作) :、、 ,对所有的状态-动作以 0 赋值:
Q(s, a) | |||
---|---|---|---|
0 | 0 | 0 | |
0 | 0 | 0 | |
0 | 0 | 0 |
Q-learning 算法和 Sarsa 算法都是从状态 s 开始,根据当前的 Q table 使用一定的策略(ε - greedy)选择一个动作 a’ ,然后观测到下一个状态 s’ ,并再次根据 Q table 选择动作 a’ 。
-
Q-learning 算法更新 Q(s, a)
-
Sarsa 算法更新 Q(s, a)
可以看出更新 Q(s, a) 需要用到下一个状态的动作 a’ ,而两种算法的不同点正是选取 a’ 的方法不同。
不同点: 根据算法描述,在选择新状态 s‘ 的动作 a’ 时,Q-learning 使用贪心策略(greedy),即选取值最大的 a‘ ,此时只是计算出哪个 a‘ 可以使 Q(s, a) 取到最大值,并没有真正采用这个动作 a‘ ;而 Sarsa 则是仍使用 ε - greedy 策略,并真正采用了这个动作 a‘ 。如下图所示:
-
Q-learning 选取 a’
-
Sarsa 选取 a’