前几天面试的时候被问到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具体算法如下: