一句话定义:训练一个决策模型时,如果用来改进它的数据必须是"它自己刚刚做出来的",叫 On-policy(同策略);如果可以用别人、别的版本、甚至很久以前留下来的数据,叫 Off-policy(异策略)。分界线只有一条:更新时用的数据,是不是当前策略自己产生的。
打个比方。学做菜有两种路子。一种是"自己炒、自己尝":你炒完一盘,尝一口,咸了就下次少放盐。这个反馈必须来自你当下的手艺,改完配方后,上一盘的经验就不完全适用了,得重新炒一盘再尝——这就是 On-policy。另一种是"看别人的菜谱和录像":你可以看老师傅的、看三个月前自己的、看网上的,照样能提升手艺——这就是 Off-policy。后者的好处是每一份素材都能反复看,坏处是别人做的菜和你现在的手艺可能不是一回事,照着学容易跑偏。
技术上发生了什么。强化学习里,策略(policy)决定动作,动作产生轨迹,轨迹用来算梯度、更新策略。On-policy 方法要求采样分布和当前策略一致,所以每轮更新前都得重新采样,旧数据基本作废;Off-policy 则用行为策略(behavior policy)产生数据、去改进目标策略(target policy),两者可以不同。代价是分布对不上,需要重要性采样(importance sampling)之类的技术去纠正偏差,或者干脆改成学价值函数(Q 值),让学习目标不依赖产生数据的那个策略。
| 维度 | On-policy | Off-policy |
|---|---|---|
| 数据来源 | 必须是当前策略 | 任意策略:旧版本、人类示范、别的模型 |
| 样本效率 | 低,采完即弃 | 高,可反复利用 |
| 常见机制 | 采样—更新—丢弃 | 经验回放池(experience replay) |
| 典型算法 | REINFORCE、A2C、PPO(近似) | Q-learning、DQN、DDPG、SAC |
| 主要代价 | 采样贵,尤其环境慢时 | 分布偏移,可能训练不稳 |
容易混淆的几点。第一,On/Off-policy 说的是"数据来源",不是"线上还是线下部署",这两个维度常被混着说。第二,On-policy 不等于不能多次更新同一批数据,PPO 就在一批数据上做多轮更新,只是用截断把新策略约束在旧策略附近,所以常被算作近似 On-policy。第三,Off-policy 里不一定只有"一个"策略,行为策略和目标策略是分开命名的。
对从业者意味着什么。选方法前先问一句:我手上这批数据是谁产生的?如果是系统日志、旧模型输出、人工标注的偏好数据,那本质是 Off-policy 场景,要考虑分布偏移和纠正手段。反过来,如果环境采样便宜、或者需要严格跟住当前策略(例如大模型对齐里用 PPO 做在线采样),On-policy 更直接,但训练成本和工程复杂度会明显更高。大模型偏好优化里,DPO 这类方法直接吃预先收集好的偏好数据、不做在线采样,思路更接近 Off-policy 一侧;具体实现与适用条件以各方法的官方文档和论文为准。
