Reinforcement Learning · 概念辨析
搞懂 RL 里最容易混的两组词
on/off-policy ≠ online/offline ------ 一篇讲清这两个独立维度,再给你一张图、一个公式、一句话记忆。
做强化学习的人,十有八九被这几个词绕晕过:on-policy、off-policy、online RL、offline RL,它们之间到底是什么关系?
先说结论:
on/off-policy 和 online/offline 是两个独立的维度,前者看「策略」,后者看「交互」。
1两个维度各自在问什么?
这两组词其实在问完全不同的问题,所以可以独立组合,而不是对立关系。
① on-policy / off-policy
看【策略】:谁产生了数据?
on-policy:采数据的策略 = 要优化的策略
off-policy:采数据的策略 ≠ 要优化的策略
② online / offline
看【交互】:训练中能否采新数据?
online:边训边交互,持续新增样本
offline:数据集预先给定,训练中禁止交互
记住:on/off-policy 讲的是「数据和目标策略对不对得上 」;online/offline 讲的是「训练时还能不能去采新数据」。两个维度互相正交。
2四象限:只有 3 种合法组合
把两个维度交叉成 2×2 表格,所有组合一目了然。
on-policy行为 = 目标
off-policy行为 ≠ 目标
online边交互
组合 ①
Online · On-policy
PPO · REINFORCE · SARSA · A2C
组合 ②
Online · Off-policy
DQN · SAC · DDPG · TD3
offline不交互
❌ 不存在
Offline · On-policy
定义互斥(见第 3 节)
组合 ③
Offline · Off-policy
CQL · BCQ · IQL
三个要点:
· offline RL 一定是 off-policy (数据集是旧策略留下的,不可能等于当前目标策略)
· off-policy 既可以 online 也可以 offline (DQN 在线,CQL 离线)
· on-policy 只能 online(下一节专门讲)
ⓘ象限归类看的是算法的原生定位 ,不少算法会跨象限:SAC / TD3 原生是 online off-policy,加 BC 或悲观约束就能变成 offline 版(TD3+BC 、CQL+SAC );AWAC 本身就是「offline 预训练 → online 微调」的两阶段设计。判断算法归属时,分清**「原生定位」** 与**「扩展变体」**即可。
3为什么不存在 offline on-policy?
反证法可以从两个方向走:固定其中一个条件,看另一个条件能不能成立。两条路径最终都会推出同样的矛盾。
路径 A
固定 offline,反推不能 on-policy
1假设 offline 条件成立:数据集 D 由旧策略 π₀ 一次采完,训练中不再交互
↓
2训练一旦开始,目标策略从 π₀ → π₁ → π₂ ...
↓
3手里的数据永远由 π₀ 采集,行为 ≠ 目标
↓
⚠ on-policy 条件不满足
路径 B
固定 on-policy,反推不能 offline
1假设 on-policy 条件成立:任意更新时刻,行为策略 = 当前目标策略
↓
2策略每次更新后,必须用新策略重新采样才能继续满足条件
↓
3重新采样 = 与环境交互 ⇒ 必然是 online
↓
⚠ offline 条件不满足
↘ ↙
殊途同归: on-policy 的刚需(策略一变就重新采样)与 offline 的约束(禁止交互)互为否定 。
无论从哪一侧出发,都推不出可共存的中间状态 ⇒ offline on-policy 不可能成立。
4把差异写进公式:SARSA vs Q-learning
看一个最经典的例子:同一个 TD 框架,只改一个符号,就从 on-policy 变成 off-policy。
on-policy
SARSA
Q(s,a) \\leftarrow Q(s,a) + \\alpha \\left\[\\, r + \\gamma \\, \\textcolor{#5b67f1}{Q(s', a')} - Q(s,a) \\,\\right\]
a' :下一步真的要去执行 的动作
由当前策略(ε-greedy)亲自采样 ⇒ 行为 = 目标
off-policy
Q-learning
Q(s,a) \\leftarrow Q(s,a) + \\alpha \\left\[\\, r + \\gamma \\, \\textcolor{#f16b7a}{\\max_{a'} Q(s', a')} - Q(s,a) \\,\\right\]
max :假想一个「贪婪策略」会怎么走
实际交互可能是 ε-greedy ⇒ 行为 ≠ 目标
唯一的差别 就在 TD target 里下一步 Q 值怎么取:
· SARSA 用真实采到的 a' → 学的是「我这个 ε-greedy 自己」的价值
· Q-learning 用 maxa' → 学的是「完全贪婪的最优策略」的价值,和实际行为策略脱钩
👉 一个 max,就把 on-policy 变成了 off-policy。
5一句话记住:下棋 / 复盘类比
把算法代入日常场景,秒记:
♟️ on / off-policy
用来复盘的棋局,是你自己刚下完的 ,还是别人下的?
🕹️ online / offline
训练时还能不能继续坐下来下新棋?
三条判定规则:
· offline 一定是 off-policy (棋谱不是现在的你下的)
· off-policy 可 online 也可 offline(学谁的棋都行)
· on-policy 只能 online(必须下一盘复盘一盘,用现在的你去打新棋)
★彩蛋:三个常见踩坑点
✗off-policy = offline ?错。DQN、SAC 是在线 off-policy,一边采集新数据一边学。
✗on-policy = online ?虽然 on-policy 必然 online,但核心定义是「策略相等」,不是「在线」。
✓分布偏移的处理不同:online off-policy 可以靠持续采样缓解;offline RL 数据集固定,必须靠 CQL 等约束方法硬压。
搞清这两个维度,看 RL 论文就不会再被标题里的 "offline"、"off-policy" 晃得团团转了。
--- 一张图搞懂 RL 两个最容易混的维度 --- 如果觉得有用,欢迎点赞、在看、转发给同样被这几个词绕晕的朋友 👋