Q-learning,Sarsa
这一个多月想把强化学习的几种算法再重新学习一遍,与前几次一样,这次也有新的收获。我写这篇文章就是想把我这次学习的收获,记录下来,同时也分享给大家。有写的不对,还请大家指正 。
一、Q-learning与Sarsa算法的区别
1、Q-learning 算法
2、Sarsa算法
3、理解
Q-learning更新公式: Q ( S t , a t ) = Q ( S t , a t ) + α [ R ( S t + 1 ) + γ ∗ m a x a Q ( S t + 1 , a ) − Q ( S t , a t ) ] Q(S_{t},a_{t}) = Q(S_{t},a_{t}) + α[R(S_{t+1}) + γ*maxaQ(S_{t+1},a)-Q(S_{t},a_{t})] Q(St,at)=Q(St,at)+α[R(St+1)+γ∗maxaQ(St+1,a)−Q(St,at)]
Sarsa更新公式:
Q
(
S
t
,
a
t
)
=
Q
(
S
t
,
a
t
)
+
α
[
R
(
S
t
+
1
)
+
γ
∗
Q
(
S
t
+
1
,
a
t
+
1
)
−
Q
(
S
t
,
a
t
)
]
Q(S_{t},a_{t}) = Q(S_{t},a_{t}) + α[R(S_{t+1}) + γ*Q(S_{t+1},a_{t+1})-Q(S_{t},a_{t})]
Q(St,at)=Q(St,at)+α[R(St+1)+γ∗Q(St+1,at+1)−Q(St,at)]
从公式中可以看出,这两种算法的区别在于Q现实值的计算,其余地方都一样。
Sarsa是在线学习(On Policy)的算法,使用了两次greedy方法来选择出了 Q ( S t , a t ) Q(S_{t},a_{t}) Q(St,at) 和 Q ( S t + 1 , a ) Q(S_{t+1},a) Q(St+1,a) 。而Q-learning离线学习(Off Policy)的算法,Q-learning选择 Q ( S t , a t ) Q(S_{t},a_{t}) Q(St,at)用了greedy方法,而计算 Q ( S t + 1 , a t + 1 ) Q(S_{t+1},a_{t+1}) Q(St+1,at+1) 时用的是max方法,而真正选择的时候又不一定会选择max的行动。
二、Sarsa与Sarsa( λ )的区别
1、Sarsa( λ )算法
2、理解
Q-learning 和 Sarsa都是单步更新的算法。单步跟新的算法缺点就是在没有到达目的地之前,机器人在原地打转的那些行动也被记录在案,并更新了Q表,即便那些行动都是没有意义的。为解决这个问题,便引入了Sarsa( λ )算法。
Sarsa(
λ
\lambda
λ )与Sarsa 算法不同的地方就是多乘了一个
E
(
s
,
a
)
E(s, a)
E(s,a) (Eligibility Trace"不可或缺性值"),而这个
E
(
s
,
a
)
E(s, a)
E(s,a)又同时受
γ
\gamma
γ和
λ
\lambda
λ调控。并且在更新Q表的时候,不仅仅是更新一个
Q
(
S
,
A
)
Q(S,A)
Q(S,A),而是整个Q表所有的Q值都被更新了。
Sarsa( λ )更新公式:
Q
(
S
t
,
a
t
)
=
Q
(
S
t
,
a
t
)
+
α
∗
E
(
S
t
,
a
t
)
∗
[
γ
∗
Q
(
S
t
+
1
,
a
t
+
1
)
−
Q
(
S
t
,
a
t
)
]
Q(S_{t},a_{t}) = Q(S_{t},a_{t}) + α*E(S_{t},a_{t})*[γ*Q(S_{t+1},a_{t+1})-Q(S_{t},a_{t})]
Q(St,at)=Q(St,at)+α∗E(St,at)∗[γ∗Q(St+1,at+1)−Q(St,at)]
三、Q learning的公式推导
这次强化学习算法温习总结到此就基本结束了,十分感谢大家花费宝贵的时间看我写的文章,谢谢大家!