大模型训练:KL散度Forward与Reverse如何选择?

为什么大模型训练的不同场景中,会选择不同方向的KL散度损失?比如SFT离线蒸馏使用正向KL,而OPD、RLHF这类在线强化学习任务却统一采用反向KL?仅仅调整KL的计算顺序,为何会带来如此大的差异?
要解答这个问题,核心在于两种KL散度的分布拟合特性完全不同,训练时需要根据具体目标选择对应的损失函数。
注:本文提到的“多模态”并非指图像、文本等多输入模态,而是指概率分布上存在多个峰值的情况。
有研究从统一视角分析了不同散度及其对应的消息传递算法,当用student模型拟合teacher模型的分布时,正向KL和反向KL会做出截然不同的取舍:
- 正向KL倾向于覆盖teacher分布的所有主要模态
- 反向KL则倾向于集中拟合其中一部分模态,甚至收缩到单个主导模态,这种现象也被称为模式寻求(mode seeking)
将这个逻辑放到大模型场景中可以更直观地理解:
正向KL的期望由teacher分布加权计算,也就是说teacher分布中所有具有显著概率的token、序列轨迹,都有机会进入训练数据,为student模型提供梯度信号。这会推动student模型覆盖teacher的所有主要分布模态,并在这些区域逐步对齐teacher的分布。
反向KL的期望则由student分布加权计算,通常的流程是先由student模型自行采样,再在这些实际采样得到的token、前缀或轨迹上,计算与teacher分布的差异。因此只有被student采样到的区域会受到约束并逐步向teacher对齐,而那些teacher赋予较高概率但student概率极低的token或轨迹,在有限采样的情况下几乎无法被student访问到。
这些未被采样的区域无法参与梯度计算,即使student与teacher在这些区域存在较大差异,也很难获得足够的优化信号来完成对齐。
理解了两种KL散度的核心特性,就能清晰解释不同任务的选择逻辑了。
SFT蒸馏或传统的预训练蒸馏的目标,通常是让student模型尽可能学习teacher的全部能力,用于后续的下游任务训练,或是得到一个轻量化的“劣化版”teacher模型以降低推理成本。因此这类任务会选择正向KL,让student模型尽可能覆盖teacher的所有分布模态,完整保留原模型的知识能力。
而对于OPD任务,无论是工业界还是学术界的应用场景,都恰好需要模式寻求的特性:
在工业界,OPD通常用于模型合版,也就是将十几个具备不同专项能力的teacher模型融合为一个统一模型。这些经过强化学习训练的teacher模型,本身的概率分布已经集中在各自的专项能力领域,合并后的目标分布是由多个尖锐的专项分布组成的多峰结构。此时想要让student模型覆盖所有teacher的模态难度极大,因此主动选择模式寻求的策略,牺牲一些次要的模态,通过人工数据筛选、teacher权重分配等方式引导模型聚焦核心能力。
学术界的OPD则通常聚焦于让小尺寸student模型在特定任务上追平甚至超越大teacher模型。小模型的整体容量弱于大模型,因此需要牺牲低优先级的模态,将有限的参数集中到少数核心任务的分布模态上,在这些核心区域逼近teacher的分布,这同样需要模式寻求的特性。
关于OPD和反向KL还有一个常见的误解:有人认为既然概率已经归一化,即使student采样不到的token,也会通过softmax机制获得梯度,最终逐步获得概率并对齐teacher的分布。但实际情况并非如此,当student模型打压现有的高概率模态时,概率质量通常会流向附近的次高概率模态,而非那些从未被采样到的区域。最终往往会出现“按下葫芦浮起瓢”的情况:student模型只会在已有的少数模态之间反复转移概率分布,却始终无法覆盖teacher赋予较高概率但student从未访问过的模态。
近年来出现的top-k、全词表OPD相关研究,可以在一定程度上缓解这个问题,但无法从根本上解决。因为语言模型的本质是联合概率分布,是整个采样序列的概率连乘积,全词表优化只能解决单个token位置的覆盖问题,无法解决整个序列的联合分布对齐问题。
参考引用
[1] 相关研究论文: https://tminka.github.io/papers/message-passing/minka-divergence.pdf

