2026-06-08-RLforLLM

LLM 的“环境转移”几乎是确定的。动作选了 token 强化,下一状态就是上下文后面多了 强化。奖励很晚才出现:用户通常不评价每个 token,而是看完整回答好不好。
所以 RLHF 中经常把奖励写成:R(x,y)=r_{RM}(x,y)
其中 x 是 prompt,y 是完整回答。奖励模型看到完整的 (prompt, response)
(prompt,response) 后,输出一个标量分数。
这会带来一个信用分配问题:如果回答得了低分,究竟是第 3 个 token 错了,还是第 80 个 token 开始跑偏了?PPO 和 Critic 的作用之一,就是把这个整段奖励尽量稳定地传回 token 级别的策略更新。

预训练目标:

$$ \mathcal{L}_{LM}(\theta) = -\sum_{t=1}^{T} \log \pi_{\theta}(x_t \mid x_1, \ldots, x_{t-1}) $$

STF (behavior cloning):

$$ \mathcal{L}_{SFT}(\theta) = -\sum_{t=1}^{T} \log \pi_{\theta}(y_t \mid x, y_{\lt t}) $$

数据从哪里来?self-instruct, evol-instruct
工程落地: schema 校验,只对 assistant 的 token 计算交叉熵(其余 token labels=-100)。如果你在做工具调用或多模态输入,工具返回、图片占位符都不应该参与 loss,它们只是“观测”,不是“动作”。

Reward model
accuracy 告诉你排序有没有排对,margin 告诉你信号够不够强。一个 RM 可能 70% 排对,但 chosen 和 rejected 分差都很小;PPO 阶段拿到这种奖励会很难学。

Bradley-Terry: 分数差越大,\( y_w \) 被选中的概率就接近 1

$$ P(y_w \succ y_l \mid x) = \sigma\left(r_{\theta}(x, y_w) - r_{\theta}(x, y_l)\right) $$

训练损失函数

$$ \mathcal{L}_{RM} = -\mathbb{E}_{(x, y_w, y_l)} \left[ \log \sigma\left(r_{\theta}(x, y_w) - r_{\theta}(x, y_l)\right) \right] $$

模型与规则混合奖励

$$ R_{total}(x,y) = \hat{r}_{RM}(x,y) + \alpha R_{format} + \beta R_{correctness} - \lambda R_{length} - \eta R_{repeat} $$
Author

Jiangshan Gong

Posted on

2026-06-08

Updated on

2026-06-08

Licensed under

Comments