欢迎光临
我们一直在努力

【强化学习】Hands-on Modern RL项目实践|策略采样与数据来源

策略采样与数据来源详解:On-policy vs Off-policy,Online vs Offline

本文承接前四篇文章,参考开源课程 Hands-On Modern RL "策略采样与数据来源"一节的框架,讲清强化学习里两组经常被混淆、却又贯穿几乎所有主流算法的核心概念——On-policy 与 Off-policy、Online 与 Offline。

一、被数据来源决定的算法差异

前几篇文章已经讲清楚了贝尔曼方程怎么把价值函数拆成"眼前一步 + 未来价值"的递归关系,也讲了 DP、MC、TD 这些估计价值的不同方式。但仔细想一想,这些更新公式全都有一个共同的前提:需要数据。不管是更新

V

(

s

)

V(s)

V(s) 还是

Q

(

s

,

a

)

Q(s,a)

Q(s,a),都需要状态、动作、奖励、下一状态,也就是

(

s

,

a

,

r

,

s

)

(s,a,r,s')

(s,a,r,s) 这样的四元组作为原材料。

但这里藏着一个很关键的问题:这些原材料是怎么来的?

想象你要学骑自行车,有三种截然不同的学法:第一种,自己跨上车,一边摔跤一边总结经验,立刻调整动作;第二种,坐在一旁看别人骑(或者看自己上周骑车的录像),在脑子里总结出一套最优策略;第三种,教练发给你一本厚厚的《人类骑车翻车实录》,把你关在小黑屋里学习,没学成之前绝不准碰真车。

这三种方法,对应着强化学习中截然不同的数据使用范式。很多时候,算法之间的巨大差异不在于损失函数怎么写,而在于它们如何获取和使用数据。本文就来系统拆解这两组坐标轴般的核心概念。

二、先分清两个角色:行为策略与目标策略

在讨论这些概念之前,必须先理清一件经常被混为一谈的事。在很多入门教程里,默认智能体只有一个策略

π

\\pi

π——它既负责在环境里做动作,也负责在代码里被更新。但一旦进入复杂的现代 RL,这两个角色往往是分离的,需要拆开来看:

行为策略(Behavior Policy),记作

μ

(

a

s

)

\\mu(a\\mid s)

μ(as),回答的问题是:“这批数据当初是怎么来的?” 它是真正与环境发生交互、按下按钮、输出 token 的那个策略。它可能是一个带有 ε-贪婪随机探索的策略,可能是智能体昨天用过的一个旧版本,可能是另一个专家模型,甚至可能是人类自己。

目标策略(Target Policy),记作

π

θ

(

a

s

)

\\pi_\\theta(a\\mid s)

πθ(as),回答的问题是:“我们最终想学出一个什么策略?” 这是算法心里真正关心的优化对象——不管外面的数据是怎么来的,我们希望参数

θ

\\theta

θ 更新后,目标策略能变得更好。

把"谁在行动(产生数据)"和"谁在学习(被优化)"这两个角色拆开之后,第一条核心的分类轴就自然浮现出来了。

三、第一条轴:On-policy 与 Off-policy

这条轴的核心问题是:更新目标策略时,用的数据是不是它自己刚刚亲自采样出来的?

3.1 On-policy 同策略

如果训练数据由当前正在学习的目标策略(或一个极其接近的快照)产生,就称为 On-policy(同策略),用数学语言表达就是行为策略和目标策略基本一致:

μ

(

a

s

)

π

θ

(

a

s

)

\\mu(a\\mid s) \\approx \\pi_\\theta(a\\mid s)

μ(as)πθ(as)

直观理解:这就好比做一套模拟卷,做完立刻对答案、纠正错题,然后用更新后的自己去做下一套卷子。你永远在从自己最新的行为中学习。

在算法层面,经典的 Sarsa 就是典型的 On-policy 算法——它在状态

s

s

s 选了动作

a

a

a、走到

s

s'

s,然后根据当前策略在

s

s'

s 实际会选的动作

a

a'

a 来更新价值,评估的是"如果我继续按照现在的习惯走下去,会怎么样"。上一篇文章对比过的悬崖行走实验里,Sarsa 之所以会规避悬崖边的风险,根源正在于此。

在大语言模型训练中,PPO(以及 DeepSeek 使用的 GRPO)也属于 On-policy 的范畴。它们通常先让当前模型对一批 prompt 生成回答(Rollout),用奖励模型打分后,立刻用这批新鲜出炉的数据更新模型参数。为了保证 On-policy 的性质,PPO 还会特意加上 Clipping 机制,不让新策略偏离采样时的旧策略太远——这正是第二篇文章详细拆解过的 PPO 裁剪目标的另一层含义。

On-policy 的优点是逻辑直接、数学上非常稳定,你学到的就是你正在做的,所见即所得;缺点是太费数据——用过一次的数据,因为策略已经更新了,它就不再是"当前策略"产生的数据,通常只能直接扔掉。

3.2 Off-policy 异策略

如果行为策略

μ

\\mu

μ 和目标策略

π

θ

\\pi_\\theta

πθ 可以完全不同,就称为 Off-policy(异策略):

μ

(

a

s

)

π

θ

(

a

s

)

\\mu(a\\mid s) \\neq \\pi_\\theta(a\\mid s)

μ(as)=πθ(as)

直观理解:拿着一个错题本(Replay Buffer),里面记录了一个月前瞎蒙的题、昨天做错的题,甚至学霸朋友借的笔记。复习(更新目标策略

π

\\pi

π)时看的是这些五花八门的数据(行为策略

μ

\\mu

μ),但脑子里总结的是通往满分的最优解。

最经典的 Off-policy 算法是 Q-Learning,回想上一篇文章讲过的更新目标:

Target

=

r

+

γ

max

a

Q

(

s

,

a

)

\\text{Target} = r + \\gamma\\max_{a'}Q(s',a')

Target=r+γamaxQ(s,a)

智能体实际探索时可能是瞎走的(行为策略

μ

\\mu

μ 带有很大随机性),但在更新 Q 表时,它总是假设自己下一步会选择价值最大的那个动作(目标策略

π

\\pi

π 是贪心的)。数据是探索出来的,学习的目标却是最优的。

在深度强化学习中,DQN 把 Off-policy 发扬光大——它引入了经验回放池(Replay Buffer),把几万步以前的旧经验存起来反复抽样训练。既然数据是很久以前的旧策略产生的,显然

μ

π

\\mu\\neq\\pi

μ=π,因此它是 Off-policy 的。

Off-policy 的优点是极大提高了数据利用率(Sample Efficient),旧数据可以反复学,别人的数据也能拿来学;缺点是分布偏移(Distribution Shift)——这是 Off-policy 的一把双刃剑。如果目标策略想做一个动作,但历史数据里从来没有人做过这个动作,算法就只能靠"猜"(外推),很容易猜出极其离谱的高分。

四、第二条轴:Online 与 Offline

On-policy 和 Off-policy 讨论的是"数据是谁产生的"。现在换个更宏观的角度:在整个训练期间,智能体还能不能继续和环境交互、产生新的数据? 这条轴讨论的是数据集是否还能生长,它和第一条轴是相互独立、正交的两个维度。

4.1 Online RL 在线学习

如果训练过程中智能体可以持续和环境交互、不断把新样本加入数据集,这就是 Online RL(在线学习),数据集是动态增长的:

D

k

+

1

=

D

k

{

τ

k

}

\\mathcal{D}_{k+1} = \\mathcal{D}_k \\cup \\{\\tau_k\\}

Dk+1=Dk{τk}

无论是 DQN 玩 Atari,还是 PPO 训练机器狗走路,只要训练没有结束,智能体就还在不停地开新局、试新动作、拿新奖励。

这里有一个特别容易踩的认知误区:Online 不等于 On-policy。 DQN 是 Off-policy 的,因为它反复复用旧数据;但它同时也是 Online 的,因为它在训练时仍在不断打游戏收集新数据。Online RL 的最大优势在于试错:如果智能体对某个动作的价值估计不准,它只要去环境里实际试一下、拿到真实奖励,虚假的估计就会立刻被打破。

4.2 Offline RL 离线学习

如果在训练开始前数据集就已经彻底固定,智能体在训练过程中绝对不能再与环境进行任何交互,这就是 Offline RL(离线学习):

D

=

D

fixed

\\mathcal{D} = \\mathcal{D}_{\\text{fixed}}

D=Dfixed

为什么会有这么苛刻的设定?因为在很多真实场景中,"试错"的代价太高了。自动驾驶不能让一个还在训练初期的 AI 开着真车上路去"探索"撞车的后果,只能给它几万小时的人类驾驶录像做固定数据集;医疗诊断更不可能拿病人的生命让 AI 去试错。

在大语言模型对齐中,DPO(直接偏好优化) 在常见设定下就非常接近 Offline RL——研究人员先准备好一批固定的偏好数据(Prompt + 人类更喜欢的回答 + 人类不喜欢的回答),然后让模型在这个固定数据集上直接优化参数,不需要再去跟人类对话索要新的评分。

Offline RL 的致命挑战:无法证伪的过度估计(Overestimation)。 既然是离线数据,它通常只能是 Off-policy 的(数据早就被某个历史行为策略采好了)。假设自动驾驶的日志里只有正常行驶的数据,AI 在离线训练时,由于神经网络的外推效应,它可能产生一个幻觉:“如果在高速上以 120km/h 的速度猛打方向盘,我会得到极高的奖励!” 如果是 Online RL,AI 只要去模拟器里试一次、车毁人亡,这个幻觉就被打破了;但在 Offline RL 中,它永远没有机会去试,这个致命的错误估计会一直保留在价值函数中,最终导致策略崩溃。为了缓解这个问题,Offline RL 算法(如 CQL)通常会引入保守主义(Conservatism)——对数据集中没见过的动作一律给低分,强迫 AI 待在已知数据的安全区内。

五、四象限:把两条轴交叉起来

把两条独立的轴交叉起来,可以画出一张强化学习算法的数据形态地图,搞清这四个象限,就不会再被各种缩写绕晕了:

数据形态含义典型算法或场景主要风险
Online + On-policy 训练时继续交互,且只用自己最新鲜的数据更新自己 REINFORCE、Sarsa、PPO、GRPO 数据利用率低,需要频繁与环境交互
Online + Off-policy 训练时继续交互,但允许把历史数据存进池子里反复学习 Q-Learning、DQN、SAC、TD3 需要处理新旧策略之间的分布差异
Offline + Off-policy 完全闭关修炼,只能从别人给的一份固定历史数据中挖掘好策略 CQL、IQL、固定数据集上的 DPO 容易对没见过的动作产生盲目自信(外推与高估)
Offline + On-policy 数据固定,同时又要求数据代表当前策略 (边界情形)固定策略评估、极小步长的模仿学习更新 策略只要一更新,固定数据就失效了

最后一个象限之所以标注为"边界情形",是因为它本身存在逻辑张力——On-policy 要求数据必须是当前策略产生的,而 Offline 又要求数据集完全固定不能再交互,两者放在一起,几乎只能在策略评估或极小步长的模仿学习这类特殊场景下勉强成立,很少作为主流算法的常规设定独立出现。

六、四个常见误区排雷

在系统梳理完概念之后,有必要专门澄清几个最容易搞混的地方:

误区一:“On-policy 就是数据只能用一次?” 不完全对。PPO 虽然是 On-policy,但它会在同一批数据上更新好几个 epoch(回顾第二篇文章讲的 PPO 实现,代码里就是对同一批 Rollout 数据训练 10 个 epoch)。关键在于:只要新策略还没有偏离采样策略太远(通过 Clipping 机制保证),这批数据就还能被近似当作 On-policy 数据来用。

误区二:“Off-policy 就是什么垃圾数据都能学?” 大错特错。Off-policy 虽然能复用数据,但必须满足覆盖条件(Coverage)。如果目标策略想学下围棋,但旧数据全是玩超级马里奥的,算法照样什么都学不到——旧数据必须覆盖目标策略可能探索到的状态空间。

误区三:“Off-policy 等于 Offline?” 绝对不是。DQN 是最好的反例:它有一个巨大的经验回放池(Off-policy),但它同时也在疯狂打游戏收集新数据(Online)。这正是四象限表格里"Online + Off-policy"这一格存在的意义。

误区四:“DPO 只是个监督学习,不是 RL?” 虽然 DPO 把损失函数写成了分类问题的形式,不需要显式拟合奖励模型,但它依然是在固定的偏好数据上移动策略分布,本质上是在解决 Offline 设定下的策略优化问题——如果不注意数据覆盖率,同样会面临 Offline RL 典型的分布外偏离风险。

七、从论文标题读懂术语:真实案例速览

RL 和 Agentic RL 论文的标题里经常堆满缩写和黑话,与其死记硬背定义,不如直接看真实的论文标题——标题本身往往就是最地道的用法示范。

On-policy 与 Off-policy 的数据来源是标题里出现频率最高的一对形容词。比如一篇 2025 年的论文标题是 “Group-Relative REINFORCE Is Secretly an Off-Policy Algorithm”,直接挑战了一个流行认知——DeepSeek 提出的 GRPO 一直被当作 On-policy 算法来用,但作者证明它在数学上其实可以天然地被解释为 Off-policy。标题里的"Secretly an Off-Policy Algorithm"就是在说:你以为数据是当前策略亲自采的,其实旧数据也能合法地用进来。另一篇论文 “Prosperity before Collapse: How Far Can Off-Policy RL Reach with Stale Data on LLMs?” 里的"Stale Data"(过期数据)精准点出了 Off-policy 的核心矛盾:数据是旧策略产生的,但要用它来训练新策略。

Online 与 Offline 的数据采集描述的是训练过程中数据集是否还在增长,与 On/Off-policy 是正交的两个维度。有论文直接把两者放在标题里对立比较,系统性地对比在线智能体和离线智能体的表现差距,结论通常是在线智能体普遍优于离线智能体,而离线性能下降的主要原因正是测试时遇到了分布外(OOD)状态——这正是 Offline RL 的致命弱点:没见过就是没见过,没机会去试。在 LLM 对齐语境下,Online alignment 通常指 PPO 这类边采样边训练的方法,Offline alignment 则指 DPO 这类在固定偏好数据上直接优化的方法。

把这些真实论文标题拿来对照理解,会发现一个规律:看到标题里有 On-policy,意味着"模型用自己的数据更新自己";看到 Off-policy,意味着"模型在用别人(或旧版本自己)的数据学习";看到 Online,意味着训练时还在和环境交互、数据集在增长;看到 Offline,意味着数据集已经封存,训练期间不许再碰环境。

八、小结

本节没有推导新的数学公式,而是回答了一个更朴素但同样关键的问题——“训练用的食材从哪来”:

  • 行为策略

    μ

    \\mu

    μ 负责下场跑数据,目标策略

    π

    θ

    \\pi_\\theta

    πθ 是在后台真正被优化的主角,把这两个角色拆开看,是理解后续一切分类的前提。

  • On-policy vs Off-policy 问的是:数据是不是目标策略自己刚刚采的?PPO、GRPO、Sarsa 属于前者,Q-Learning、DQN 属于后者。
  • Online vs Offline 问的是:现在还能不能继续去环境里拿新数据?DQN 是 Online 的(尽管它是 Off-policy),而现实世界里代价高昂的自动驾驶、医疗决策往往只能采用 Offline 设定。
  • 两条轴交叉出的四个象限,把 REINFORCE、Q-Learning、CQL 这些看似风格迥异的算法,统一收纳进了同一张数据形态地图里。

到这里,前几篇文章已经依次回答了"价值怎么算"(贝尔曼方程)、“更新怎么做”(DP/MC/TD)、“数据从哪来”(On/Off-policy)这三个问题。但所有这些算法,归根结底都在为同一个目标努力——拿到最高的奖励。这也自然引出了强化学习中可能最有趣、也最危险的一个问题:如果奖励函数本身就写错了,会发生什么? 这将是下一篇文章要探讨的主题。

赞(0)
未经允许不得转载:171主机测评 » 【强化学习】Hands-on Modern RL项目实践|策略采样与数据来源
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址