修正: deepseek 笔记 96 处块级公式改为多行写法(适配 SilverBullet 行首锚点), 索引脚本同步 _abstract 命名

This commit is contained in:
ylhan
2026-09-21 10:53:11 +08:00
parent f5b825bd4a
commit 19afe00a86
28 changed files with 486 additions and 130 deletions
@@ -42,29 +42,41 @@ DeepSeekMath-Base 7B 以代码模型 DeepSeek-Coder-Base-v1.5 7B 为起点(论
PPO 通过最大化如下代理目标优化策略:
$$\mathcal{J}_{PPO}(\theta)=\mathbb{E}_{q\sim P(Q),\,o\sim\pi_{\theta_{old}}(O|q)}\frac{1}{|o|}\sum_{t=1}^{|o|}\min\left[\frac{\pi_{\theta}(o_t|q,o_{<t})}{\pi_{\theta_{old}}(o_t|q,o_{<t})}A_t,\ \mathrm{clip}\left(\frac{\pi_{\theta}(o_t|q,o_{<t})}{\pi_{\theta_{old}}(o_t|q,o_{<t})},1-\varepsilon,1+\varepsilon\right)A_t\right]$$
$$
\mathcal{J}_{PPO}(\theta)=\mathbb{E}_{q\sim P(Q),\,o\sim\pi_{\theta_{old}}(O|q)}\frac{1}{|o|}\sum_{t=1}^{|o|}\min\left[\frac{\pi_{\theta}(o_t|q,o_{<t})}{\pi_{\theta_{old}}(o_t|q,o_{<t})}A_t,\ \mathrm{clip}\left(\frac{\pi_{\theta}(o_t|q,o_{<t})}{\pi_{\theta_{old}}(o_t|q,o_{<t})},1-\varepsilon,1+\varepsilon\right)A_t\right]
$$
其中优势 $A_t$ 由广义优势估计(GAE)基于奖励 $\{r_{\ge t}\}$ 与价值函数 $V_{\psi}$ 计算;为抑制对奖励模型的过度优化,标准做法是在每个 token 的奖励中加入参考模型的 KL 惩罚:
$$r_t = r_{\varphi}(q,o_{\le t}) - \beta\log\frac{\pi_{\theta}(o_t|q,o_{<t})}{\pi_{ref}(o_t|q,o_{<t})}$$
$$
r_t = r_{\varphi}(q,o_{\le t}) - \beta\log\frac{\pi_{\theta}(o_t|q,o_{<t})}{\pi_{ref}(o_t|q,o_{<t})}
$$
GRPO 针对两个痛点:PPO 的价值函数通常与策略模型规模相当,带来可观的显存与计算负担;且 LLM 场景中往往只有最后一个 token 被奖励模型打分,逐 token 准确的价值函数很难训练。因此 GRPO 不做价值函数近似,而是对同一问题 $q$ 从旧策略 $\pi_{\theta_{old}}$ 采样一组输出 $\{o_1,\dots,o_G\}$,以组内平均奖励为基线,最大化:
$$\mathcal{J}_{GRPO}(\theta)=\mathbb{E}_{q\sim P(Q),\,\{o_i\}_{i=1}^{G}\sim\pi_{\theta_{old}}(O|q)}\frac{1}{G}\sum_{i=1}^{G}\frac{1}{|o_i|}\sum_{t=1}^{|o_i|}\left\{\min\left[\frac{\pi_{\theta}(o_{i,t}|q,o_{i,<t})}{\pi_{\theta_{old}}(o_{i,t}|q,o_{i,<t})}\hat{A}_{i,t},\ \mathrm{clip}\left(\frac{\pi_{\theta}(o_{i,t}|q,o_{i,<t})}{\pi_{\theta_{old}}(o_{i,t}|q,o_{i,<t})},1-\varepsilon,1+\varepsilon\right)\hat{A}_{i,t}\right]-\beta\,\mathbb{D}_{KL}\left[\pi_{\theta}||\pi_{ref}\right]\right\}$$
$$
\mathcal{J}_{GRPO}(\theta)=\mathbb{E}_{q\sim P(Q),\,\{o_i\}_{i=1}^{G}\sim\pi_{\theta_{old}}(O|q)}\frac{1}{G}\sum_{i=1}^{G}\frac{1}{|o_i|}\sum_{t=1}^{|o_i|}\left\{\min\left[\frac{\pi_{\theta}(o_{i,t}|q,o_{i,<t})}{\pi_{\theta_{old}}(o_{i,t}|q,o_{i,<t})}\hat{A}_{i,t},\ \mathrm{clip}\left(\frac{\pi_{\theta}(o_{i,t}|q,o_{i,<t})}{\pi_{\theta_{old}}(o_{i,t}|q,o_{i,<t})},1-\varepsilon,1+\varepsilon\right)\hat{A}_{i,t}\right]-\beta\,\mathbb{D}_{KL}\left[\pi_{\theta}||\pi_{ref}\right]\right\}
$$
其中 $\hat{A}_{i,t}$ 只基于组内各输出的相对奖励计算,这与奖励模型的比较本质相契合——奖励模型通常就在同一问题的多输出比较数据上训练。与 PPO 把 KL 惩罚加进奖励不同,GRPO 直接把 KL 散度加进损失,从而不干扰 $\hat{A}_{i,t}$ 的计算,并采用保证非负的无偏估计量:
$$\mathbb{D}_{KL}\left[\pi_{\theta}||\pi_{ref}\right]=\frac{\pi_{ref}(o_{i,t}|q,o_{i,<t})}{\pi_{\theta}(o_{i,t}|q,o_{i,<t})}-\log\frac{\pi_{ref}(o_{i,t}|q,o_{i,<t})}{\pi_{\theta}(o_{i,t}|q,o_{i,<t})}-1$$
$$
\mathbb{D}_{KL}\left[\pi_{\theta}||\pi_{ref}\right]=\frac{\pi_{ref}(o_{i,t}|q,o_{i,<t})}{\pi_{\theta}(o_{i,t}|q,o_{i,<t})}-\log\frac{\pi_{ref}(o_{i,t}|q,o_{i,<t})}{\pi_{\theta}(o_{i,t}|q,o_{i,<t})}-1
$$
### 3.5 结果监督、过程监督与迭代式 RL
**结果监督**:奖励模型只对每个输出给一个末尾分数,奖励经组内去均值、除标准差归一化后赋给该输出所有 token 的优势:
$$\hat{A}_{i,t}=\widetilde{r}_i=\frac{r_i-\mathrm{mean}(\mathbf{r})}{\mathrm{std}(\mathbf{r})}$$
$$
\hat{A}_{i,t}=\widetilde{r}_i=\frac{r_i-\mathrm{mean}(\mathbf{r})}{\mathrm{std}(\mathbf{r})}
$$
**过程监督**:论文认为结果监督只在末尾给一次奖励,对复杂数学任务不够充分高效,故沿 Wang et al. (2023b) 在每步推理结束时给奖励。设第 $j$ 步结束 token 索引为 $index(j)$、第 $i$ 个输出共 $K_i$ 步,全部步骤奖励整体归一化 $\widetilde{r}_i^{index(j)}=\dfrac{r_i^{index(j)}-\mathrm{mean}(\mathbf{R})}{\mathrm{std}(\mathbf{R})}$,再以「后续各步归一化奖励之和」作为该 token 优势:
$$\hat{A}_{i,t}=\sum_{index(j)\ge t}\widetilde{r}_i^{index(j)}$$
$$
\hat{A}_{i,t}=\sum_{index(j)\ge t}\widetilde{r}_i^{index(j)}
$$
**迭代式 RL**:随训练推进,旧奖励模型可能不再足以监督当前策略。算法 1 每轮先把当前策略复制为参考模型,用其采样结果构造奖励模型的新数据,并以混入 10% 历史数据的 replay 机制持续训练旧奖励模型,再用新模型继续训练策略。
@@ -72,7 +84,9 @@ $$\hat{A}_{i,t}=\sum_{index(j)\ge t}\widetilde{r}_i^{index(j)}$$
论文把各类方法的梯度统一写为:
$$\nabla_{\theta}\mathcal{J}_{\mathcal{A}}(\theta)=\mathbb{E}_{(q,o)\sim\mathcal{D}}\left(\frac{1}{|o|}\sum_{t=1}^{|o|}GC_{\mathcal{A}}(q,o,t,\pi_{rf})\,\nabla_{\theta}\log\pi_{\theta}(o_t|q,o_{<t})\right)$$
$$
\nabla_{\theta}\mathcal{J}_{\mathcal{A}}(\theta)=\mathbb{E}_{(q,o)\sim\mathcal{D}}\left(\frac{1}{|o|}\sum_{t=1}^{|o|}GC_{\mathcal{A}}(q,o,t,\pi_{rf})\,\nabla_{\theta}\log\pi_{\theta}(o_t|q,o_{<t})\right)
$$
三个关键组件是数据来源 $\mathcal{D}$、奖励函数 $\pi_{rf}$ 与算法 $\mathcal{A}$(把数据与奖励信号加工成决定奖惩力度的梯度系数 $GC$)。据此,SFT 用人工数据、梯度系数恒为 1;RFT 以 SFT 模型离线采样输出按答案正确性筛选;DPO 用成对偏好损失在 SFT 采样输出上优化;Online RFT 改用实时策略的采样输出;PPO/GRPO 用模型奖励信号强化实时采样输出。观察结论是:在线采样显著优于离线采样,优势主要体现在训练后期;GRPO 的独特之处是依据奖励值调节梯度系数,对不同质量回答做差异化强化与惩罚,而 Online RFT 不惩罚错误回答、对正确回答一律等强度强化;结果监督(GRPO+OS)不如过程监督(GRPO+PS),说明细粒度、步骤感知的梯度系数更有益。