笔者在刚开始学习RL的时候,对on-policy和off-policy的理解也一直不是很清晰。
我用q-leaening和Sarsa作对比来介绍这两者的区别:
Q-learning伪代码:
Sarsa伪代码
可以看出这两个的不同:
1: q-learning在选择动作 A 的时候用的是贪婪策略,这是算法对于环境做交互用的策略。但是在更新Q值的时候,并没有用到
贪婪策略,而是一个新的策略,我把他称之为b策略。b策略是在状态 S' 下,选择Q最大的那个值,这个值对应的动作A* 可能相等于
贪婪策略选择的动作A,也有可能不等。这是用两个策略完成agent对环境的交互和Q的更新,称之为 off-policy策略。
2: Sarsa在选择动作A 的时候用的策略也是贪婪策略,但是在看更新Q的时候,所用的是基于
贪婪策略 选出的 A‘ 来更新Q值,用同一个策略完成agent对环境的交互和对Q值的更新,称之为on-policy策略。
放几个英文解释: