先这样答
正向 KL 是 KL(p_data || p_model),它要求模型覆盖数据分布里的各种模式。模型要照顾数据中不同的可能性,所以输出通常更平均,也更保守。反向 KL 是 KL(p_model || p_data),它让模型集中在数据分布的高概率区域。模型会偏向少数更可能的模式,输出更锐利,但也可能丢掉其他模式。
两者的区别不只是公式里的顺序不同。正向 KL 更重视覆盖数据模式,反向 KL 更重视集中在高概率区域。选择方向会影响模型如何分配概率,也会影响生成结果的多样性。讨论 RLHF 和蒸馏时,KL 方向的选择会直接影响输出多样性。这也是 PPO、DPO 变体中的核心取舍之一。面试时先说清分布顺序,再说明模式覆盖和输出效果,不要只背“正向”和“反向”的名称。
面试官会怎么追问
- 「为什么正向 KL 更容易覆盖数据中的多个模式?」 正向 KL 写作 KL(p_data || p_model)。它要求模型覆盖数据分布中的模式。模型需要照顾数据的不同可能性,因此结果通常更平均、更保守。
- 「反向 KL 为什么可能丢掉一些模式?」 反向 KL 写作 KL(p_model || p_data)。它让模型集中在数据的高概率区域。模型偏向这些区域时,其他模式可能被丢掉,输出也会更锐利。
- 「KL 方向和 RLHF、蒸馏的输出有什么关系?」 KL 方向的选择会影响输出多样性。正向 KL 倾向覆盖数据中的模式,反向 KL 倾向集中在高概率区域。它也是 PPO、DPO 变体中的核心取舍之一。
回答的坑
- 把正向和反向 KL 的分布顺序说反,会把模式覆盖与模式集中也一并说反。
- 只说“一个保守、一个锐利”,却不解释它们对应的模式覆盖差异,就没有回答 KL 方向的区别。
同系列的题
这家公司的面经实录
—— 本题完 ——