首先我们知道KL散度具有不对称性,一般我们称$D_{KL}(p||q) = \mathbb E_{p(x)} \frac {p(x)} {q(x)}$为正向KL散度,$D_{KL}(q||p) = \mathbb E_{q(x)} \frac {q(x)} {p(x)}$为反向KL散度。
关于这两种散度之间的区别,这篇博客讲的很清楚了,包括正向KL散度的zero avoiding和反向KL散度的zero forcing。
那么现在问题在于,为什么现在deep learning RL更喜欢用反向KL散度呢(GRPO)?我个人的理解:正向KL散度zero avoiding会让学习的q分布更趋向于一般化,而反向散度的zero forcing会让q的概率分布在p的那些峰值上。以LLM的next token prediction为例,假设下一个token的prob logits有两个峰值分别是a和b,然后其他token(记为c)的预测概率接近于0。
如果使用正向KL散度优化,即使c的预测概率接近于0,但是由于$p(c) \neq 0$,所以分母$q(c) \neq 0$,当vocab大小非常大时(现在的词表基本都在5w, 15w),a和b能分到的prob也不算高(并且这里没有约束$q(c)$的数值大小,所以$q(c)$完全可以取很大的值从而降低KL散度,这并不是我们想要的),因此模型q在采样时还是容易采样到那些c token。
如果使用反向KL散度进行优化,$p(c) \rightarrow 0$,那么$q(c) \rightarrow 0$,约束了$q(c)$的数值大小,所以优化得到的分布会给a,b更大的prob,从而在q采样时更容易取到p分布对应的那些高概率token。
回到RL的目的,应用KL散度是为了约束策略更新后的模型与原始模型的距离,即两个模型的行为尽可能保持一致,而行为取决于logits和采样方法,采样方法一致的情况下,自然是希望logits尽可能相同,那么反向KL散度相对来说就更合适一点(因为它倾向于模仿p分布里的那些高概率的token,而高概率的token也是更容易被采样的)
以上是一个偏直觉的理解~
评论
可以,追更成功
✌