
🧠 记忆锚点:序列奖励只说结果好坏,信用分配要找出哪一步造成结果;粒度越细,信号也越难做准。
💡 答案要点
信用分配问题 = 强化学习中"最终结果好/坏,到底谁贡献了"的问题
问题场景:
一个100步的推理任务,最终结果错了
→ 是第1步就错了,还是第50步才错的?
→ 中间的99步,哪些该受罚、哪些无辜?
这就是信用分配问题:如何把最终 reward 分配到每一个中间 step/tokenToken级别 vs Sequence级别的奖励对比:
| 维度 | Seq级别奖励 | Token级别奖励 |
|---|---|---|
| 分配方式 | 整个序列共享同一个 reward | 每个 token 独立 reward |
| 细粒度 | 粗糙 | 精细 |
| 计算量 | 小 | 大 |
| 效果 | 收敛慢,但稳定 | 收敛快,但可能不稳定 |
| 适用场景 | 稀疏奖励 | 稠密奖励 |
Token级别奖励的实现方式:
python
# 方式1:稀释法(Dilution)
# 最终 reward 按衰减分配给前面的 token
reward_at_step_t = final_reward * gamma^(T-t)
# 方式2:因果贡献法(参考 RLSP)
# 用梯度方法估算每个 token 对最终 reward 的贡献
# 方式3:蒙特卡洛估计(Monte Carlo)
# 多次采样,估算每个位置的平均贡献面试话术:
"信用分配是 RLHF 最核心的工程问题之一。Seq 级别奖励简单但收敛慢——模型要试错很多次才能知道'哪一步'有问题。Token 级别奖励更精细,但实现复杂,核心难点是如何准确估算每个 token 的边际贡献。实际生产中常用'稀释法'做粗粒度分配,配合 PPO 的 advantage 估计做细粒度调整。"