本页章节
POLICY GRADIENT / ONE UPDATE
RL 参数更新:从回答概率到下一步策略
固定一批回答与奖励,沿 logits、行为概率、优势、裁剪与 KL 计算损失,再检查梯度怎样改变参数。每个中间量都能用独立自动微分复算。
先确定每个 token 的权重和梯度边界
按 token 平均
所有有效 token 共用 w=1/N;长回答有更多位置,对总目标的权重更大。
按回答平均
G 个非空回答、每条长度 Tᵢ 时 w=1/(G Tᵢ)。每条回答总权重相同;这与 token 平均是不同目标。
冻结本批采样信息
动作、奖励、组内优势、old log-prob、reference 和 mask 都停止梯度。old 表示该批回答的行为策略,reference 是另一个固定的约束锚点。
固定状态的范围
四条回答和状态特征为教学输入。截断选项只改变有效位置,奖励和优势保持固定,便于隔离长度权重;真实截断奖励需要单独设计。
奖励 [1,0,0.5,1] 减组均值并除总体标准差得到优势;奖励全相同时设优势为零。屏蔽提示和填充位置,零有效 token 时跳过更新。
裁剪平台、KL 和共享参数分别贡献什么?
更新几步,观察同批回答的概率变化
四条回答的目标与参数账本
同一 rollout · 真实数值更新| 回答/位置 | 动作 | 位置权重 | 优势 | old / 当前 log-prob | 概率比 | 当前 → 下一步动作概率 |
|---|
六个参数、梯度和下一步预览
| 参数 | 当前 | 梯度 | 下一步 | 保存的行为参数 |
|---|
逐位置特征、完整 logits、reference 与上游梯度
回答编号从 1 开始;计算中的 sample/position 从 0 开始。回答状态特征为 [1+0.1×sample, 0.2+0.35×position−0.1×sample],提示为 [1,−0.5],填充为 [0,1]。被截断的位置仍可前向读取,目标权重及梯度为零。
| 回答/位置 | 状态特征 x | 当前 logits | 当前完整概率 | reference 完整概率 | ∂L/∂logits |
|---|
初始参数、固定 reference、奖励与回答动作
已执行的更新历史
| 步 | 更新前 loss | KL | 裁剪数 | 更新后 W |
|---|
穷举九条轨迹,核对策略梯度恒等式
另设两步、每步三个动作的有限环境。第二步特征 [1,0.3+0.4a] 依赖第一步动作 a;奖励由固定 3×3 表给出。使用初始参数枚举九条轨迹,既可直接求期望奖励的导数,也可累加 R(y)π(y)∇logπ(y)。这部分是完整期望,独立于上方固定 rollout 的裁剪目标。
期望奖励:;按行展平的六个梯度:。
| 轨迹 | 概率 | 奖励 | 期望贡献 |
|---|
数值正确之后,还需要什么证据?
本地测试用有限差分核对全部六个参数,独立 PyTorch 自动微分再检查不同归一化、mask、KL、故障与连续更新。真实后训练还需要采样策略版本、任务覆盖、奖励可靠性、独立能力评估和成本记录;小策略的 loss 下降不代表语言模型能力提升。
适用范围与一手资料
二维特征、三动作、四条固定回答与 2×3 参数,手算 clipped surrogate 加当前位置精确 KL 的梯度。另穷举九条轨迹核对完整期望;独立 autograd 验证,不实现完整 PPO/GRPO 训练器。
公式与机制的原始依据 · 4 项
- Proximal Policy Optimization (2017)old policy 概率比与 clipped surrogate objective
- OpenAI Spinning Up · Proximal Policy OptimizationPPO-Clip 的正负优势、裁剪平台与更新限制;2026-10-28 读取正文
- PyTorch 2.9 · Autograd mechanics本项目框架对照固定 PyTorch 2.9.0;冻结、计算图与 no-grad 的语义,2026-10-27 核对
- DeepSeekMath (2024)GRPO 的组内基线、优势与去 critic 设计