总结:比较SARSASARSA(lambda)Q-learningon policy and off policy

Posted statruidong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了总结:比较SARSASARSA(lambda)Q-learningon policy and off policy相关的知识,希望对你有一定的参考价值。

前几天面试的时候被问到RL一些基础算法的区别,回来抽空做了一些整理方便加深理解。

On policy与off policy

为了解决强化学习中探索与利用的平衡问题,可以采用两个策略训练模型,一个策略为行为策略,用于保持探索性,提供多样化的数据,不断优化另一个策略(目标策略)。

on policy的目标策略与行为策略是一个策略,在优化时,两个策略同时被优化。而off policy的目标策略与行为策略不同,可以采用重要性采样的方法实现这一目标,一个具体的例子是蒙特卡洛on policy算法与蒙特卡洛off polic算法。

 

SARSA算法流程

本质是时序差分算法,它是on policy的

技术图片

 

SARSA(lambda)即为TD(lambda)算法(eligibility trace),即在更新当前步时,也会同时对前面的步骤进行更新,具体算法如下技术图片

和Sarsa相比,Sarsa(lambda)算法有如下优势:

 Sarsa虽然会边走边更新,但是在没有获得奶酪之前,当前步的Q值是没有任何变化的,直到获取奶酪后,才会对获取奶酪的前一步更新,而之前为了获取奶酪所走的所有步都被认为和获取奶酪没关系。Sarsa(lambda)则会对获取奶酪所走的步都进行更新,离奶酪越近的步越重要,越远的则越不重要(由参数lambda控制衰减幅度)。因此,Sarsa(lambda) 能够更加快速有效的学到最优的policy。

在算法前几回合,老鼠由于没有头绪, 可能在原地打转了很久,从而形成一些重复的环路,而这些环路对于算法的学习没有太大必要。Sarsa(lambda)则可解决该问题,具体做法是:在E(s,a)←E(s,a)+1这一步之前,可先令E(s)=0,即把状态s对应的行置为0,这样就只保留了最近一次到达状态s时所做的action。

 

Q-learning是sarsa的off-policy版本,对于Q-Learning,我们会使用?−贪婪法来选择新的动作,这部分和SARSA完全相同。但是对于价值函数的更新,在选取下一步最优动作时,Q-Learning使用的是MAX贪婪法(用目标策略选取动作进行评估),而不是SARSA的?−贪婪法(用行为策略选取动作进行评估)。这一点就是SARSA和Q-Learning本质的区别。Q-learning具体算法如下:技术图片

 

以上是关于总结:比较SARSASARSA(lambda)Q-learningon policy and off policy的主要内容,如果未能解决你的问题,请参考以下文章

C#中Lambda表达式总结

C#中Lambda表达式总结

在类中声明一个自动 lambda 函数

Q pi (lambda)

DQN(Deep Q-learning)入门教程(结束)之总结

DQN(Deep Q-learning)入门教程(结束)之总结