1. 为什么说“犯错”是语言模型最好的老师?
大家好,我是老张,在AI模型训练这个行当里摸爬滚打了十来年,从早期的统计模型一路跟到如今的大语言模型。这些年我踩过最大的一个“坑”,就是模型训练和实际使用“两张皮”的问题。简单说,就是你辛辛苦苦用一堆“标准答案”把模型教得头头是道,结果一上线,用户问个稍微刁钻点的问题,模型就开始胡说八道,或者生成一些逻辑不通、前后矛盾的文本。这感觉就像你教学生,平时考试卷子答得满分,一上真正的赛场,面对瞬息万变的局面就懵了。
传统的知识蒸馏(Knowledge Distillation)方法,我们业内常叫它“老师教学生”模式,就有点这个意思。一个强大的“教师模型”生成标准答案,然后让“学生模型”去模仿学习。这种方法,在学术论文里常被称为 Off-Policy Distillation。它的核心问题是“训推不一致”:学生模型在训练时,看到的输入是固定的数据集,输出的目标是老师给的“完美”答案;但到了实际推理时,学生模型面对的是自己生成的、充满不确定性的中间状态。这种训练环境和实战环境的脱节,直接导致了模型在真实场景下的表现不稳定,泛化能力打折扣。
这就引出了我们今天要聊的核心:On-Policy Distillation。这个概念在ICLR 2024上被一篇重磅论文系统阐述,它的核心思想非常直观,甚至有点反直觉——让学生模型从自己犯的错误中学习。想象一下,一个学生不再只是临摹老师的字帖,而是自己先写一篇文章,然后老师拿着红笔在旁边批改:“这个词用得不准确”、“这个逻辑跳得太快了”。学生通过对比自己的“错误”输出和老师的“修正”或“更好”的输出,来调整自己的写作方式。这个过程,就是On-Policy蒸馏的精髓。
它解决的正是那个“两张皮”的问题。因为训练时用的数据,就是学生模型自己在“推理模式”下生成的数据。这样一来,训练和推理的输入数据分布就对齐了。学生模型不再学习如何在一个理想化的、静态的“考场”里答题,而是学习如何在一个动态的、充满自己可能犯错的“真实战场”上作战。这种“从实践中学习,在实践中改进”的闭环,正是提升模型推理鲁棒性和数据效率的关键。我实测过不少方案,发现这种让模型“自我纠错”的思路,往往比单纯“填鸭式”灌输标准答案,效果要扎实得多。
2. 深入核心:On-Policy蒸馏究竟如何工作?
要理解On-Policy蒸馏,我们得先把它放在一个更通用的框架里来看。ICLR 2024那篇论文提出了一个叫 广义知识蒸馏(Generalized Knowledge Distillation, GKD) 的框架,它像一把大伞,把各种蒸馏策略都囊括了进来。理解了这个框架,你就能看明白On-Policy的独特之处。
2.1 广义知识蒸馏(GKD)框架:一把统一的尺子
传统的知识蒸馏,目标通常是让学生模型的输出分布(比如下一个词的概率)去逼近教师模型的输出分布。衡量这两个分布之间差距的,就是各种“散度”(Divergence),比如我们常听说的KL散度。GKD框架的巧妙之处在于,它用一个公式统一了三种不同的数据采样策略:
- Off-Policy(离策略):这是老方法。训练数据
(X, Y)是固定的。X是输入,Y可以是人工标注的标准答案(监督学习),也可以是教师模型生成的答案(序列级蒸馏)。问题就在于,这个固定的Y分布,和学生自己推理时产生的序列分布,很可能不一样。 - On-Policy(同策略):这就是新范式的核心。训练数据中的
Y,直接来自于学生模型自己。我们用学生模型

1126

被折叠的 条评论
为什么被折叠?



