强化学习算法:Q-learning与Sarsa(区别与联系)

文章目录

    • Q-learning
    • Sarsa
    • 二者主要区别
    • 区别详解
    • Q-learning与Sarsa图解
    • cliff-walking代码实例

Q − l e a r n i n g Q-learning Qlearning S a r s a Sarsa Sarsa都是基于 Q t a b l e Q table Qtable的算法, Q − l e a r n i n g Q-learning Qlearning属于离线学习策略, S a r s a Sarsa Sarsa属于在线学习策略。

Q-learning

Q − l e a r n i n g Q-learning Qlearning算法伪代码:强化学习算法:Q-learning与Sarsa(区别与联系)_第1张图片

Sarsa

S a r s a Sarsa Sarsa算法伪代码:
强化学习算法:Q-learning与Sarsa(区别与联系)_第2张图片

二者主要区别

Q − l e a r n i n g Q-learning Qlearning S a r s a Sarsa Sarsa的唯一区别在于 Q t a b l e Q table Qtable的更新方式。

Q − l e a r n i n g Q-learning Qlearning更新 Q Q Q值的方式:
在这里插入图片描述
S a r s Sars Sarsa更新 Q Q Q值的方式:
在这里插入图片描述

区别详解

① 对于 Q − l e a r n i n g Q-learning Qlearning来说:在状态 S t S_t St下,根据某策略(如 ϵ − g r e e d y \epsilon-greedy ϵgreedy策略)执行动作 A t A_t At到达状态 S t + 1 S_{t+1} St+1之后,利用在状态 S t + 1 S_{t+1} St+1下采取所有动作中最大的那个 Q ( S t + 1 , a ) Q(S_{t+1},a) Q(St+1,a),来更新 Q ( S t , a ) Q(S_t,a) Q(St,a),但是其并不真正采取 ( S t + 1 , a ) (S_{t+1},a) (St+1,a)。对于在状态 S t + 1 S_{t+1} St+1出选择要执行的动作可以理解为 S t = S t + 1 S_t=S_{t+1} St=St+1,即在状态 S t + 1 S_{t+1} St+1下选择要执行的动作依然要使用相同的某策略(如 ϵ − g r e e d y \epsilon-greedy ϵgreedy策略)。

② 对于 S a r s a Sarsa Sarsa来说:在状态 S t S_t St下,根据某策略(如 ϵ − g r e e d y \epsilon-greedy ϵgreedy策略)执行动作 A t A_t At到达状态 S t + 1 S_{t+1} St+1之后,此时用来更新 ( S t , a ) (S_t,a) (St,a) Q Q Q值的方法依然采用某策略(如 ϵ − g r e e d y \epsilon-greedy ϵgreedy策略),并且真正采取 ( S t + 1 , a ) (S_{t+1},a) (St+1,a)

③ 我们要把选取动作和更新 Q Q Q表值区分开来,对于两个算法来说,选择动作都是采用某策略(如 ϵ − g r e e d y \epsilon-greedy ϵgreedy策略),区别就在于 Q − l e a r n i n g Q-learning Qlearning更新 Q Q Q值的方式为贪婪策略,即直接选择最大的 Q ( S t + 1 , a ) Q(S_{t+1},a) Q(St+1,a),而 S a r s a Sarsa Sarsa更新 Q Q Q值的方式依然为某策略(如 ϵ − g r e e d y \epsilon-greedy ϵgreedy策略)。

Q − l e a r n i n g Q-learning Qlearning选取动作和更新 Q Q Q表值的方法不同,而 S a r s a Sarsa Sarsa选取动作和更新 Q Q Q表值的方法相同。

Q − l e a r n i n g Q-learning Qlearning每次选取动作和更新 Q t a b l e Q table Qtable后就会生成一个 < s , a , r , s ′ > <sars>序列,成为一个sample。同理, S a r s a Sarsa Sarsa每次选取动作和更新 Q t a b l e Q table Qtable后会生成另一个 < s , a , r , s ′ > <sars>序列,成为另一个sample。

Q-learning与Sarsa图解

Q − l e a r n i n g Q-learning Qlearning
强化学习算法:Q-learning与Sarsa(区别与联系)_第3张图片
S a r s a Sarsa Sarsa
强化学习算法:Q-learning与Sarsa(区别与联系)_第4张图片

cliff-walking代码实例

Sutton的《强化学习》例题6.6的代码。

运用Q-learning和Sarsa两种算法进行训练,并进行对比。

GitHub链接:
https://github.com/chenyiqun/TD/tree/master

你可能感兴趣的:(强化学习)