在强化学习中,
- 有一个代理 A,负责与环境交互,做出动作并获取新的状态。
- 有一个agent B,负责观察和学习,学习如何根据当前状态决定采取什么动作。
如果这两个代理相同,则它是在策略上的。
如果这两个代理不同,那就是off-policy。
有趣的例子
当我看围棋高手对战 AlphaGo 时,AlphaGo 就是环境。
Go master负责与Alphago交互,根据Alphago的选择来选择下一个走位。
我负责从围棋高手和Alphago的对弈中观察学习如何根据当前状态选择下一个位置。渐渐地,我学会了下围棋。
对我来说,Go master 是负责与环境交互的代理,而我是负责学习的代理。这两个agent是不同的,所以是off-policy。
另一个有趣的解释
在古代,一个国王想要更多地了解普通人的生活。
国王可以选择隐姓埋名,混入人群,了解他们的生活(这是on-policy),虽然是第一手资料,但国王本人不可能无处不在,得到的信息未必全面。
所以国王可以派大臣去了解情况,也可以在宫中听取汇报(这是外策)。
正式解释
On-Policy的代表算法是Sarsa。
Off-Policy的代表算法是Q-learning。
例如,有一个策略π,当它根据这个策略π到达状态s'时,它应该采取动作a'。
Sarsa(on-policy)更新Q值的方式是:
该值是根据a'更新的,这意味着确实使用了现有的策略π,因此称为on-policy。
Q-learning(off-policy)更新Q值的方式是:
更新不使用a',而是直接采取最大化Q值的动作a, 这与现有的策略π不同,因此称为off-policy。