SARSA(State-Action-Reward-State-Action)算法和Q-learning(Quality-learning)算法都是强化学习中的常见算法,用于训练智能代理在环境中学习并制定最佳策略。它们有一些关键的不同之处:
更新时刻的不同:
策略选择的不同:
收敛性和稳定性:
适用范围:
总之,SARSA和Q-learning都是强化学习中有用的算法,但它们在更新时刻、策略选择、收敛性和稳定性等方面存在不同。选择使用哪个算法通常取决于具体的问题和需求。
让我通过一个例子来解释SARSA和Q-learning之间的不同,以便更容易理解。
假设你是一个机器人,你要学会在一个迷宫中找到宝藏。在这个迷宫中,你可以采取四个动作:向上、向下、向左和向右。每个动作会导致你移动到新的位置,并且每个位置都有一个数字,表示在那里找到宝藏的可能性。你的任务是找到一种策略,以最大化找到宝藏的机会。
SARSA算法:
Q-learning算法:
举个例子:
总之,SARSA和Q-learning之间的主要区别在于它们对策略选择的灵活性和探索的程度。SARSA会更受当前策略的限制,而Q-learning更倾向于尝试新的动作策略。
让我用数学公式来说明SARSA和Q-learning之间的不同。
SARSA的更新规则如下:
Q
(
s
,
a
)
=
Q
(
s
,
a
)
+
α
∗
[
R
+
γ
∗
Q
(
s
′
,
a
′
)
−
Q
(
s
,
a
)
]
Q(s, a) = Q(s, a) + α * [R + γ * Q(s', a') - Q(s, a)]
Q(s,a)=Q(s,a)+α∗[R+γ∗Q(s′,a′)−Q(s,a)]
Q-learning的更新规则如下:
Q
(
s
,
a
)
=
Q
(
s
,
a
)
+
α
∗
[
R
+
γ
∗
m
a
x
(
Q
(
s
′
,
a
′
)
)
−
Q
(
s
,
a
)
]
Q(s, a) = Q(s, a) + α * [R + γ * max(Q(s', a')) - Q(s, a)]
Q(s,a)=Q(s,a)+α∗[R+γ∗max(Q(s′,a′))−Q(s,a)]
关键区别:
这意味着SARSA算法在更新Q值时会考虑当前策略下的动作,而Q-learning算法则选择具有最大Q值的动作,独立于当前策略。
在Q-learning算法中,Q(s’, a’) 是一个数值,表示在状态 s’ 下采取动作 a’ 后的估计最大Q值。这个值是一个单一的数字,表示在状态 s’ 下采取动作 a’ 后的预期回报。
当我们说 “max(Q(s’, a’))” 时,我们实际上是在选择在状态 s’ 下能够获得的最大Q值。也就是说,我们考虑所有可能的动作 a’,并找到其中具有最大Q值的那个动作。
具体地说,Q-learning算法在每一步中,根据当前状态 s 以及在新状态 s’ 下的所有可能动作 a’ 的Q值,选择最大的Q值作为更新当前状态 s 和动作 a 的Q值。这意味着代理会选择当前策略中可能不会选择的动作,以便探索潜在的更好的策略。
所以,“max(Q(s’, a’))” 是代理在 Q-learning 算法中所选择的最大的 Q 值,它代表了在新状态 s’ 下的最佳可能回报。
是的。在SARSA(State-Action-Reward-State-Action)算法中,Q(s’, a’) 不会考虑所有可能的动作 a’,而是基于代理在状态 s’ 下实际采取的动作 a’。
具体来说,SARSA算法在每一步中,会基于当前策略选择下一个动作 a’,然后根据这个实际采取的动作 a’ 来计算 Q(s’, a’)。这意味着它会考虑代理在当前策略下选择的动作 a’,并使用它来更新 Q 值。
因此,SARSA在更新 Q 值时,考虑了代理的策略。这使得SARSA成为一个在策略上稳定的算法,因为它在学习时受到当前策略的限制。这也是SARSA和Q-learning之间的一个主要不同之处,因为Q-learning是离策略的,它选择的动作 a’ 不受当前策略的限制。
在SARSA算法中,你可以通过执行一系列步骤来确定a’的值。具体步骤如下:
代理位于当前状态 s,根据当前策略选择一个动作 a(例如,根据 ε-greedy 策略选择)。
执行动作 a 并观察环境的响应,包括新的状态 s’ 和获得的奖励 r。
在新的状态 s’ 下,再次使用相同的策略来选择下一个动作 a’。这个步骤可以是根据 ε-greedy 策略来选择 a’,其中 ε 是一个小数,表示随机性的程度。如果 ε 较小,代理更倾向于选择具有最高 Q 值的动作,而如果 ε 较大,代理更倾向于随机选择动作。
使用观察到的状态、动作、奖励和新状态来更新 Q 值。
在SARSA中,动作 a’ 是在新状态 s’ 下执行的实际动作,而不是所有可能动作的最大值。这是因为SARSA是一个基于策略的算法,它考虑代理当前的策略。代理根据当前策略来选择 a’,并根据这个选择来更新 Q 值。
所以,你知道 a’ 的值是根据代理当前策略在新状态 s’ 下的动作选择来确定的。在训练的过程中,代理会逐渐改进策略,以便更好地选择动作 a’。
根据ε-greedy策略来选择动作a’的过程非常简单,你可以按照以下步骤进行:
生成一个随机数r,通常是一个均匀分布的随机数,范围在0到1之间。
检查随机数r是否小于ε(即r < ε)。
如果r < ε,那么选择进行探索,即选择一个随机动作。你可以随机从所有可用的动作中选择一个,或者根据你的环境和问题领域来确定如何进行探索。
如果r >= ε,那么选择进行利用,即选择具有最高Q值的动作。在这种情况下,选择具有最高Q值的动作来最大化长期累积奖励。
这样,你在每个决策点上都可以根据ε-greedy策略来选择动作a’。这个策略在探索和利用之间建立了平衡,以帮助代理在学习过程中更好地探索新策略并逐渐改进已知的策略。
你的观察是正确的。ε-greedy策略在选择a’时确实有可能选择具有最高Q值的动作,这与Q-learning算法中选择最大Q值的动作是相似的。
然而,关键的不同在于,ε-greedy策略会以ε的概率随机选择一个动作,即进行探索,而以(1-ε)的概率选择最大Q值的动作,即进行利用。这个随机性使得代理在一定程度上能够探索新的动作策略,而不仅仅是一味地选择最大Q值的动作。
Q-learning算法在选择a’时不引入随机性,总是选择具有最大Q值的动作,这使得它更加倾向于利用已知策略,而不太倾向于探索新的动作策略。
虽然在一些情况下ε-greedy策略和Q-learning的策略看起来相似,但ε-greedy策略引入了探索行为,使得代理在学习过程中具有更大的灵活性,可以在一定程度上尝试不同的动作策略,这是它与Q-learning不同的关键之处。
对的,通常情况下,Q-learning不需要ε-greedy策略。Q-learning是一个离策略学习算法,它总是选择在给定状态下具有最高Q值的动作,而不引入随机性。这是因为Q-learning假设代理已经获得了足够的探索经验数据,并且不再需要引入额外的探索随机性。
在Q-learning中,代理会根据已经学到的Q值表,总是选择具有最高Q值的动作,以最大化长期累积奖励。这使得Q-learning更倾向于利用已知策略,而不太倾向于探索新的动作策略。代理在学习的过程中已经通过采取不同动作获得了足够的探索数据,因此不需要ε-greedy策略来引入探索随机性。
ε-greedy策略通常更适用于在线学习的情况,或者在代理没有足够的经验数据时,以便在探索和利用之间建立平衡。在这些情况下,代理可以使用ε-greedy策略来确保继续探索并发现新的策略。
是的,如果你将Q-learning算法与ε-greedy策略结合使用,你将得到一个与SARSA算法相似的学习算法。在这种情况下,你会使用ε-greedy策略来选择a’,即在每一步中以ε的概率进行探索,以(1-ε)的概率进行利用(选择具有最高Q值的动作)。
这种结合的方式确实会使Q-learning算法表现出一些与SARSA相似的特性,因为它引入了探索随机性。然而,需要注意的是,尽管它们在某种程度上相似,但SARSA和Q-learning仍然有一些根本性的差异,如更新规则和状态-动作选择的方式。
所以,如果你想要一个更接近SARSA算法的学习算法,可以将Q-learning与ε-greedy策略结合使用,这将增加探索的随机性。这个组合将使Q-learning在某种程度上类似于SARSA,但仍然有一些不同之处。
我发现了很优秀的文章,讲得比我清楚很多,特意在此附上
Qlearning和Sarsa的区别到底是什么?为什么说Qlearning勇敢而Sarsa胆小谨慎?(这篇文章偏感性,能从直觉上有个大致感受)
Bourne强化学习笔记2:彻底搞清楚什么是Q-learning与Sarsa(这篇文章偏理性,能真正明白,也终于说到了我困惑的地方怎么解释,其第三部分,即(三、Q-learning如何实现更加有效的探索?)个人感觉是全文精华部分,再次重新排版重写一下,方便大家查阅)
我们的目的是更新黄色状态的动作价值
Q
(
S
=
y
e
l
l
l
o
w
,
A
)
Q(S=yelllow,A)
Q(S=yelllow,A)
假设我们已知在黄色状态下只有2种状态可选,即灰动作和黑动作。蓝色和绿色状态下的最大价值动作都是红动作。
在某个回合(episode)中,在第n步时,状态为黄色,并且在第k-1次更新 Q ( S = y e l l o w , A ) Q(S=yellow,A) Q(S=yellow,A)时,已知灰动作价值比黑动作大,即 Q k ( S n , a n = g r a y ) > Q k ( S n , a n ′ = b l a c k ) Q_k(S_n,a_n=gray)>Q_k(S_n,a'_n=black) Qk(Sn,an=gray)>Qk(Sn,an′=black)
在通过 ε-greedy策略选择动作时,会有两种情况,我们用①和②表示
①有
1
−
ε
/
2
1-ε/2
1−ε/2的概率选择当前价值Q最大的灰动作
a
n
a_n
an
而黑动作就不更新,即
Q
k
+
1
(
S
n
,
a
n
′
)
=
Q
k
(
S
n
,
a
n
′
)
Q_{k+1}(S_n,a'_n)=Q_{k}(S_n,a'_n)
Qk+1(Sn,an′)=Qk(Sn,an′)
其中
S
n
=
y
e
l
l
o
w
S_n=yellow
Sn=yellow,
S
n
+
1
=
b
l
u
e
S_{n+1}=blue
Sn+1=blue
②有
ε
/
2
ε/2
ε/2的概率选择价值Q较小的黑动作
a
n
′
a'_n
an′
Q
k
+
1
(
S
n
,
a
n
′
)
=
Q
k
(
S
n
,
a
n
′
)
+
α
[
R
n
+
1
+
m
a
x
Q
i
(
S
n
+
1
′
,
a
n
+
1
′
)
−
Q
k
(
S
n
,
a
n
′
)
]
Q_{k+1}(S_n,a'_n)=Q_{k}(S_n,a'_n)+\alpha[R_{n+1}+maxQ_i(S'_{n+1},a'_{n+1})-Q_k(S_n,a'_n)]
Qk+1(Sn,an′)=Qk(Sn,an′)+α[Rn+1+maxQi(Sn+1′,an+1′)−Qk(Sn,an′)]
而灰动作就不更新,即
Q
k
+
1
(
S
n
,
a
n
)
=
Q
k
(
S
n
,
a
n
)
Q_{k+1}(S_n,a_n)=Q_{k}(S_n,a_n)
Qk+1(Sn,an)=Qk(Sn,an)
其中
S
n
=
y
e
l
l
o
w
S_n=yellow
Sn=yellow,
S
n
+
1
′
=
g
r
e
e
n
S'_{n+1}=green
Sn+1′=green
无论是情况①还是②,黄色状态下灰动作与黑动作的价值的大小关系都可能发生变化!!,我们通过最大值更新目标策略
π
\pi
π
Q
k
+
1
π
(
S
=
y
e
l
l
o
w
,
A
)
=
m
a
x
{
Q
k
+
1
(
S
n
,
a
n
)
,
Q
k
+
1
(
S
n
,
a
n
′
)
}
Q_{k+1}^{\pi}(S=yellow,A)=max\{Q_{k+1}(S_n,a_n),Q_{k+1}(S_n,a'_n)\}
Qk+1π(S=yellow,A)=max{Qk+1(Sn,an),Qk+1(Sn,an′)}
比如,当出现情况②时,探索了黑动作后,更新后有
Q
k
+
1
(
S
n
,
a
n
)
<
Q
k
+
1
(
S
n
,
a
n
′
)
Q_{k+1}(S_n,a_n)
Q-learning 在learn的时候,用的是Max的方法,所以学的一定是最大的。但是在choose 的时候因为epsilon而存在随机性,下一个更新的不一定是最大回报对应的action。但每次更新的回报一定是max的。
Sarsa 在learn之前用epsilon choose了action,并且确定用这个action进行learn。所以learn的不一定是最大回报的。但step的action和learn的一定是同一个。
所以说Q-learning一定学max,更激进。
一点个人的理解:
二者都是根据在当前状态s下采取当前行动a所产生的后果s’来更新Q(s,a)。但二者的区别在于:
QLearning只看最好的后果,对Q(s,a)的更新是只根据最好的结果来的。Sarsa是考虑各种可能的后果(因为在a’的选择中是有随机性的),对Q(s,a)的更新会考虑到不太好甚至负面的后果。
举个例的话就是假设有3个状态s1,s2,s3;3种行动a1,a2,a3,eqsilon=0.9。当前状态s1,当前行动a2,那么就会转移到s2。假设Q(s2,a1)=-2, Q(s2,a2)=0, Q(s2,a3)=3。如果是Qlearing,Q(s1,a2)+=α(r+3);如果是Sarsa,Q(s1,a2)更新的期望就是α(r+0.93+0.1(-2+0+3)/3=α(r+2.7333),显然Sarsa更新得更慢,也就是更保守。
Q-learning在learn的时候,用的是Max的方法。我觉得因此计算出来的Q表对应的值是从对应状态S出发后续以最优路径到达得到的奖励(最大奖励)。然后尽管Q-learning的Q表指示了一条最优路径,但是由于选择action的时候不是完全贪婪的,有一定概率随机选择,因此仍有可能因为随机因素而导致智能体选择了惩罚很高的action。这种后果Q-learning并没有考虑进去,所以如最后一张图左半边所示,Q-learning倾向于选择中间那条最优路径,尽管很危险。Sarsa在learn的时候是考虑了随机选择的影响的,因此learn出来的靠近惩罚的路径上的Q值会相对低,体现出来Sarsa会比较保守,选择更安全的路径
这是我的理解,欢迎交流
可以参见这篇知乎什么是 Sarsa (强化学习)的评论区