Skip to content
Jambity's Blog

解析 KL 散度

理解 KL 散度及其在 std/opd 中的使用

1min read...

我之前并没有很好地理解 KL 散度,他的分子分母上是还是未能找到好的记忆方式,今天才发现KL散度是从熵和交叉熵这里来的,看过这段数学公式,算是更好地理解了 KL 散度

最后再分析一下在 sft 和 opd 中各自使用的 Forward KL 和 Reverser KL 是何意味

  • : 交叉熵,其中 是真实分布, 是预测分布
  • : 熵
  • 交叉熵永远大于等于熵

熵:数据来自 ,使用理想编码长度 :

交叉熵:数据依旧来自 ,但错误地按照 编码:

信息论的直觉来看,一套不对的编码信息 去编码真实分布 ,不可能比最优编码少

即证:

Jensen 不等式:

是凸函数

令随机变量 ,按分布 采样,取值

则期望

又由琴生不等式:

代入得

记忆方法:

提供分布、产生数据的 ,就是在外面加权的,同时也处在分子上

对于单个位置 的贡献

  • 如果

就是一个较大的正数,而且前面又乘了一个较大的 ,因此会给KL散度带来一个很大的正贡献

真实采样 经常发生的事, 觉得不会发生,这会受到很重的惩罚

  • 如果

是个负数,不过由于 相对小,所以会有一个不太大的负贡献

觉得不重要的地方, 如果多分了概率,不会特别在乎

这就是 KL 散度的不对称性(这种不对称性其实也给 KL 散度 恒大于等于 0 提供了直觉)

总之记住,大的地方就很重要

SFT 中,最小化 SFT 的负对数似然,等价于最小化真实分布 到模型分布 的前向 KL 散度

数学特性(Mode-Covering / 模式覆盖):前向 KL 散度会严厉惩罚 但 的情况。这意味着学生模型为了降低损失,会试图覆盖教师模型所有的概率峰值(各种可能的正确回答)。但如果学生模型容量不够,它就会在所有选项上均匀分配概率,导致生成的文本平庸、缺乏自信或出现“幻觉”。

在的地方就都很重要

OPD 因为是在学生模型的分布上采样,其典型的目标函数等价于最小化反向 KL 散度:

数学特性(Mode-Seeking / 求模):反向 KL 散度严厉惩罚 但 的情况。这意味着,只要学生模型生成了教师认为概率极低的词(即犯错),就会受到巨大惩罚。相反,只要学生模型专注于教师认可的某一个高质量生成路径,它就能使 Loss 降到极低。这促使模型放弃覆盖所有答案,而是专精于生成自己最擅长且正确的那一种答案。

学生走到过的地方很重要

1790314911040

Comments

© Jambity. All rights reserved.......