Æle*_*lex 50 artificial-intelligence reinforcement-learning q-learning sarsa
虽然我知道SARSA是在政策上,而Q-learning是不合时宜的,但在查看他们的公式时,很难(对我而言)看到这两种算法之间存在任何差异.
根据" 强化学习:引言"(Sutton和Barto)一书.在SARSA算法中,给定策略,相应的动作值函数Q(在状态s和动作a,在时间步t),即Q(s t,a t),可以更新如下
Q(s t,a t)= Q(s t,a t)+α*(r t +γ*Q(s t + 1,a t + 1) - Q(s t,a t))
另一方面,Q学习算法的更新步骤如下
Q(s t,a t)= Q(s t,a t)+α*(r t +γ*max a Q(s t + 1,a) - Q(s t,a t))
也可以写成
Q(s t,a t)=(1 - α)*Q(s t,a t)+α*(r t +γ*max a Q(s t + 1,a))
其中γ(γ)是折扣因子,r t是在时间步t从环境收到的奖励.
这两种算法之间的区别是SARSA只查找下一个策略值而Q-learning查找下一个最大策略值这一事实?
TLDR(和我自己的答案)
感谢所有回答这个问题的人,因为我第一次提出这个问题.我已经制作了一个与Q-Learning一起玩的github回购,并凭经验了解了它的不同之处.这一切都取决于您如何选择下一个最佳动作,从算法的角度来看,这可能是一个平均,最大或最佳动作,具体取决于您选择如何实现它.
另一个主要区别是当这种选择发生时(例如,在线与离线)以及影响学习的方式/原因.如果您在2019年阅读此内容并且更像是一个动手的人,那么玩RL玩具问题可能是理解这些差异的最佳方式.
最后一个重要的注意事项是,Suton&Barto以及维基百科在下一个州最佳/最大行动和奖励方面经常会有混淆,混乱或错误的公式化表示:
R(T + 1)
实际上是
R(T)
希望这有助于任何人陷入困境.
Don*_*eba 44
是的,这是唯一的区别.政策上的SARSA相对于其遵循的政策学习行动价值,而非政策性Q-Learning则相对于贪婪政策而言.在一些常见条件下,它们都收敛于实际价值函数,但速度不同.Q-Learning倾向于收敛一点,但有能力在改变政策的同时继续学习.此外,当与线性近似结合时,不能保证Q-Learning收敛.
实际上,在ε-贪婪的政策下,Q-Learning计算Q(s,a)和最大行动值之间的差异,而SARSA计算Q(s,a)和平均行动的加权和之间的差异.价值和最大值:
Q-Learning:Q(s t + 1,a t + 1)= max a Q(s t + 1,a)
SARSA:Q(S t + 1中,一个T + 1)=ε·意味着一个 Q(小号T + 1,α)+(1-ε)·最大一个 Q(小号T + 1中的A)
zyx*_*xue 40
当我学习这一部分的时候,我发现它也很混乱,所以我把R.Sutton和AGBarto的两个伪代码放在一起,希望能让它们更加清晰.
蓝框突出显示两种算法实际不同的部分.数字突出了稍后将要解释的更详细的差异.
TL; NR:
| | SARSA | Q-learning |
|:-----------:|:-----:|:----------:|
| Choosing A' | ? | ? |
| Updating Q | ? | ? |
Run Code Online (Sandbox Code Playgroud)
其中π是ε-贪婪的政策(例如ε> 0,有探索),μ是贪婪的政策(例如ε== 0,NO探索).
鉴于Q-learning使用不同的策略来选择下一个动作A'并更新Q.换句话说,它正在尝试在遵循另一个策略μ的同时评估π,因此它是一种非策略算法.
相比之下,SARSA始终使用π,因此它是一种策略上的算法.
更详细的解释:
两者之间最重要的区别是每次操作后如何更新Q. SARSA完全按照ε-贪婪的政策使用Q',因为A'来自它.相比之下,Q学习对下一步的所有可能操作使用最大Q'.这使得它看起来像遵循ε= 0的贪婪政策,即在这部分中没有探索.
然而,当实际采取行动时,Q学习仍然使用从ε-贪婪的政策中采取的行动.这就是为什么"选择A ......"在重复循环中.
遵循Q学习中的循环逻辑,A'仍然来自ε-贪婪的政策.
正如大多数其他答案中已经描述的那样,这两个更新在数学上的区别确实在于,当更新状态-动作对(S t,A t)的Q值时:
如其他答案中所述,上述区别在于,使用技术术语表示,Sarsa是一种策略上的学习算法,而Q学习是一种策略外的学习算法。
在极限(给与无限的时间来积累经验和学习)的情况下,并且在一些其他假设下,这意味着Sarsa和Q学习会收敛到不同的解决方案/“最佳”策略:
在我们关心代理在学习/产生经验的过程中的表现的情况下,像Sarsa这样的算法通常是更可取的。例如,考虑代理是一个昂贵的机器人,如果它掉下悬崖就会摔坏。我们不希望它在学习过程中掉落得太频繁,因为它很昂贵。因此,我们关心其在学习过程中的表现。但是,我们也知道有时需要它随机执行(例如epsilon-greedy)。这意味着机器人在悬崖上行走非常危险,因为它可能会决定随机动作(概率为epsilon)并跌落。因此,我们希望它能够快速了解到靠近悬崖的危险;即使贪婪的策略能够顺其自然地走下去,我们也知道我们遵循随机的epsilon贪婪策略,并且考虑到有时候我们会变得愚蠢,因此我们关心优化性能。在这种情况下,最好使用Sarsa。
如果我们在训练过程中不关心智能体的性能,但我们只希望它学习一种最优的贪婪策略,最终将其转换为Q-learning这样的算法将是更好的选择。例如,考虑我们玩一些练习游戏(有时我们不介意由于随机性而输掉比赛),然后玩重要的锦标赛(在此我们将停止学习并从epsilon-greedy切换到贪婪策略) )。这是Q学习会更好的地方。
您的 Q-Learning 公式中存在索引错误。萨顿和巴托的第 148 页。
Q(st,at) <-- Q(st,at) + alpha * [r(t+1) + gamma * max Q(st+1,a) - Q(st,at) ]
错字在 max 的参数中:
索引是 st+1 和 a,而在您的问题中,它们是 st+1 和 at+1(这些对于 SARSA 是正确的)。
希望这个对你有帮助。
| 归档时间: |
|
| 查看次数: |
22411 次 |
| 最近记录: |