同策略与离策略(on-policy vs off-policy)
/ on-POL-uh-see vurs off-POL-uh-see /
这是一个关于「算法从谁的经验里学习」的区分。同策略方法只从「它当前正在改进的那个策略」所采取的动作里学习——它必须从自己最新的行为里学。离策略方法则能从「别的某个策略」所采取的动作里学习:自己的旧版本、一个笨拙的探索版本,甚至一位人类示范者。同策略好比只从你自己做的晚餐里学做菜;离策略则好比还能从旁观别的厨子(包括新手)里学。
它之所以重要,归结为「数据效率」与「稳定性」之间的取舍。离策略方法(如 Q学习和 DQN)能把一大堆存下来的过往经验反复重用,哪怕是很久以前生成的数据——样本效率高得多。同策略方法(如 SARSA 和标准 PPO)则必须不断从当前策略采集新鲜数据,并在每次更新后大体上把它扔掉,这虽浪费,却往往更稳定、也更容易讲清道理。
经典的例证,是 SARSA 与 Q学习在同一座悬崖边迷宫上的对照。Q学习是离策略的:哪怕它实际上正跌跌撞撞地到处探索,它学到的也是那条最优贪心路径的价值。SARSA 是同策略的:它学到的是它真正所走之路的价值,连探索性的失步也算在内,于是它明智地远离悬崖。两个标签都谈不上「更好」——离策略以「学习更棘手、有时不稳定」为代价买来效率,而同策略则以「对数据胃口更大」为代价买来可靠。
离策略的实例:DQN 维护着一个装有数百万帧过往画面的回放缓冲区——其中许多是由它一个更早、更差的版本玩出来的——并从中随机取样来训练。像 PPO 这样的同策略方法做不到这点;每次策略更新之后,它的旧数据就过时了,所以它必须再去采集新鲜经验。
离策略重用旧的/别人的数据(高效,但更棘手);同策略需要来自自身的新鲜数据(浪费,但更稳)。
这两个标签描述的是一种取舍,而非优劣排名。离策略「能回收数据」对样本效率而言是真正的超能力,但它让训练在数学上更难、也更易失稳——这恰恰是为什么离策略的深度强化学习,需要一些同策略方法往往用不上的稳定化把戏。