1. k3 是怎么来的先定义概率比rπrefπnewr\frac{\pi_{ref}}{\pi_{new}}rπnew​πref​​如果样本来自 new policy那么DKL(πnew∥πref)E[−log⁡r]D_{KL}(\pi_{new}\|\pi_{ref})E[-\log r]DKL​(πnew​∥πref​)E[−logr]所以最直接的 KL 估计就是k1−log⁡rk_1-\log rk1​−logr但还有一个性质E[r]1E[r]1E[r]1原因是E[r]∑aπnew(a)πref(a)πnew(a)∑aπref(a)1E[r]\sum_a \pi_{new}(a)\frac{\pi_{ref}(a)}{\pi_{new}(a)}\sum_a \pi_{ref}(a)1E[r]a∑​πnew​(a)πnew​(a)πref​(a)​a∑​πref​(a)1因此E[r−1]0E[r-1]0E[r−1]0也就是说给k1k_1k1​加上r−1r-1r−1不会改变它的期望E[−log⁡rr−1]E[−log⁡r]E[-\log rr-1]E[-\log r]E[−logrr−1]E[−logr]于是得到k3r−1−log⁡rk_3r-1-\log rk3​r−1−logr所以k3 本质上就是在 k1 上加了一个期望为 0 的修正项使得不会出现有负数的情况。2. 为什么从 k1、k2 到 k3k1最直接k1−log⁡rk_1-\log rk1​−logr优点期望就是真实 KL无偏。缺点单个样本可能为负波动较大。k2二阶近似k212(log⁡r)2k_2\frac{1}{2}(\log r)^2k2​21​(logr)2当 new policy 和 reference policy 很接近即r≈1r\approx1r≈1时KL 可以近似成这个平方形式。优点永远非负数值比较稳定。缺点它只是近似因此存在 bias。k3实际更常用k3r−1−log⁡rk_3r-1-\log rk3​r−1−logr它同时满足期望仍然是真实 KL也就是无偏每个样本都大于等于 0通常比 k1 更稳定写成代码形式klref_logprob-logprob ratiotorch.exp(kl)# ref / newk3ratio-kl-1因此可以简单记k1无偏但噪声大k2稳定但有近似误差k3无偏 非负 通常更稳定3. KL 放 Reward 还是 Loss两种都可以目的都是限制 policy 不要离 reference model 太远。PPO / RLHF 常见放 RewardRRRM−βKLRR_{RM}-\beta KLRRRM​−βKL然后Reward → Advantage → Policy Loss所以 KL 是先惩罚 reward再间接影响 loss。GRPO 常见放 LossLLpolicyβKLLL_{policy}\beta KLLLpolicy​βKLKL 直接作为正则项限制 policy。因此可以简单记PPO / RLHFKL 常放 RewardGRPOKL 常放 Loss但这只是常见实现方式并不是硬性规定。