type
status
date
slug
summary
tags
category
icon
password
Online / Offline & On-policy / Off-policy
- Online / Offline 描述的是数据的来源方式:你的算法在训练过程中是否能持续与环境交互,实时收集新数据?
- On-policy / Off-policy 描述的是算法的行为 - 目标策略一致性:你用来更新策略的数据,是不是由当前你正在优化的策略所生成?
PPO 到底是 On Policy 还是 Off Policy ?
On Policy 就是 behavior policy(与环境交互产生动作和奖励的 policy) 和 target policy(我们要优化的 policy) 是一样的,反之则是 Off Policy。
通俗一点来说, On Policy 就是在学习的时候,是否是通过自己产生的数据进行学习的,而 Offline Policy 在学习的时候则不一定是自己产生的。
比如现在玩一款游戏,完全靠自己摸索然后通关,这是 On Policy 的。可是实在是不知道怎么玩了,查攻略,看别人怎么玩,这是 Off Policy 的。
其第一个 for 循环可以认为做了 3 件事:
- 在 上采样
- 优化参数
- 用新的参数替换旧的参数。
如果只看这三个大步骤的话,PPO 是妥妥的 On Policy。
但是在优化参数的那一步,是采用了 K 个 epoch 来优化的,在过程中会产生 ,
除了第一步优化的是以外,其他的 epoch 的 所采用的数据都是 产生的。而 ,这么看 PPO 就是一个 Off Policy 了。
所以 PPO 宏观上是 On-Policy,微观上如果抠字眼的话是 Off Policy。
但是由于 PPO 采用了重要性采样来保证采样分布的期望还是 target policy 的,同时在 K 次迭代过程中采用 KL 散度来约束 target policy 和 behavior policy 不会差距太大,可以认为是对 On-Policy 的一个非常好的近似,所以目前 PPO 通常来说被归为 On Policy
GRPO是on policy的吗?GRPO的loss里面有一项是重要性采样比(也即clip的作用对象),这个采样比定义是“新旧策略的分布差异”,如果GRPO是on policy,那么哪里来的“新与旧”呢?
这里的“旧策略”就是我们用来收集数据的当前策略,而“新策略”则是通过更新后,在一次迭代中形成的临时策略。
KL 散度的作用在于限制这个临时策略的变化范围。它确保了新旧策略之间的差异不会过大,从而保证了用旧策略的价值函数对新策略进行评估时,其结果依然是准确和可靠的。这使得我们可以在不损失准确性的前提下,高效地利用现有数据来更新策略。
重要性采样并不等同于 off-policy。真正的 off-policy 算法,例如 V-MPO,其核心思想是利用一个旧策略(行为策略)产生的数据,去评估和更新一个完全不同的新策略(目标策略)。而在 PPO 中,每次更新所使用的价值评估,都依赖于用于采样的旧策略本身,这正是它与 off-policy 算法的根本区别。
DPO (Direct Preference Optimization) 属于 Off-policy 算法,更准确地描述是 Offline(离线)算法。
DPO 的数学推导将 RLHF 的奖励最大化问题通过数学变换(利用 KL 散度约束下的最优解形式),直接转化为在静态偏好数据集上的二分类监督学习问题(或排序问题)。
- 无需采样:DPO 在训练过程中不需要模型实时生成文本(Rollout)。它直接使用预先构建好的数据集 ,其中 是胜出的回复, 是失败的回复。
- 数据来源无关:这些数据可以是由任何策略生成的,甚至是人类直接编写的。模型仅需计算给定数据在当前策略下的对数概率(log-probability),而不需要通过当前策略去探索环境。因此,它是完全离线的。
- 作者:SimonSun
- 链接:https://simonsun.xyz//article/llm-18
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章




