可运行的 from-scratch 实现 + 测试。critic-free 的策略梯度基线。
数学 / The math
对每个 prompt 采 个回答,奖励 。RLOO 用留一法作基线(无 value 网络):
策略梯度损失(最小化):,其中 是 stop-gradient(基线不回传)。
性质:每个 prompt 内 (无偏、低方差基线)。
与 PPO / GRPO 的对比
| baseline | critic? | clip? | |
|---|---|---|---|
| PPO | value 网络 + GAE | 需要 | 有 |
| GRPO | 组内标准化 | 不需要 | 有 |
| RLOO | 组内留一均值 | 不需要 | 无(纯 REINFORCE) |
文件 / Files
from_scratch.py—rloo_advantages+rloo_loss(+python from_scratch.py演示)。test_rloo.py— 留一基线解析对拍、组内和为 0、loss 有限 + 反传。
python from_scratch.py # 演示
python test_rloo.py # 测试(或 pytest)
追问分层 / Stratified follow-ups
- L1:为什么要减基线?留一均值相比"全组均值"有什么好处?
- L2:为什么 ?基线为什么要 stop-gradient? 太小/太大各有什么问题?
- L3:RLOO vs GRPO 的方差与偏差权衡?RLOO 为什么可以不 clip 而 PPO 需要?在线 vs 离线采样对 RLOO 的影响?