【论文学习】Self-Distillation Enables Continual Learning
Q1: 详细介绍方法部分,用通俗易懂的语言。另外,对比与SFT、RL的异同
以下为您通俗易懂地详细介绍 自我蒸馏微调(Self-Distillation Fine-Tuning, SDFT) 的方法核心,以及它与传统的监督微调(SFT)和强化学习(RL)的异同。
一、 SDFT 方法详细介绍(通俗版)
简单来说,SDFT 的核心思想是**“让模型自己教自己”**。由于现在的大语言模型都具备很强的“上下文学习能力(In-context Learning)”——只要你在提示词里给它看个好例子,它立马就能照猫画虎给出高质量回答。SDFT 就是利用了这个特点来搞训练。
整个训练过程可以分为以下几个步骤:
-
角色扮演(老师与学生):
在训练时,把同一个大模型分成两个角色来用:- 老师模型(Teacher):给它输入“问题” + “专家提供的完美示范(Demonstration)”。因为看到了标准答案,老师模型此时仿佛“开了挂”,能够输出极其标准、正确的概率分布和推理过程。
- 学生模型(Student):只给它输入“问题”(不给示范)。这就是模型原本的真实水平。
-
在线生成与答题(On-Policy 探索):
不直接让模型去死记硬背专家的答案,而是让学生模型自己去尝试回答这个问题(也就是自己生成回答轨迹)。 -
实时纠偏(自我蒸馏):
在学生模型自己答题的每一步(每一个词),我们都去问一问老师模型:“如果是你,面对现在这个情况,你会怎么选?”然后,算法会计算学生和老师之间的差异(通过最小化逆KL散度),并调整学生模型的参数,让学生的思维模式逐渐贴近老师。 -
为什么这样能防止遗忘?
因为老师模型本质上还是“原来的那个大模型”,只是多看了一个提示词而已,所以老师的输出虽然更对,但它的“说话习惯和知识基础”依然和原模型保持一致(偏离度很低)。学生在学习时,学到的是原模型风格的正确解法,而不是强行记住外界的生硬答案,因此保住了原有的通用能力,不会发生“灾难性遗忘”。
二、 SDFT 与 SFT、RL 的异同对比
1. SDFT vs 监督微调 (SFT)
- SFT 的做法(死记硬背):SFT 是“离线学习(Off-policy)”,不管模型自己是怎么想的,强行拿专家的标准答案让模型去逐字拟合。
- SDFT 的不同(因材施教):SDFT 是“在线学习(On-policy)”。它是让模型顺着自己生成的轨迹去探索,遇到不会的地方,老师再给出基于当前语境的概率指导。
- 优势对比:
- 遗忘度:SFT 强行灌输标准答案,极易导致模型原有的通用能力发生严重的“灾难性遗忘”。SDFT 因为是自己教自己,能完美保留旧知识,支持连续学习多个新技能。
- 推理能力保护:如果训练数据里只有“最终答案”而没有“思考过程”,直接用 SFT 会导致模型变笨(推理过程坍塌)。而 SDFT 中的“老师”能靠自身能力脑补出思考过程,从而保护模型的深度推理能力。
2. SDFT vs 强化学习 (RL)
- RL 的做法(奖励驱动):强化学习(如 PPO 或 GRPO)也是让模型自己去生成答案(在线学习),然后系统根据规则给这个答案打分(Reward),得分高的就鼓励,得分低的就惩罚。
- SDFT 的不同(无需写打分规则):在很多复杂任务里(比如写文章、医学推理),写一个准确的“自动打分函数(Reward Function)”是非常困难且昂贵的。SDFT 巧妙地绕过了这一点:它通过比较“学生”和“开挂老师”的差异,天然地提取出了一种隐式的奖励信号,相当于做了一次“逆向强化学习(Inverse RL)”。
- 优势对比:
- 门槛更低:SDFT 不需要复杂的奖励工程(Reward Engineering),只要有专家示范数据就能直接跑。
- 效率更高:像 GRPO 等强化学习方法通常需要对同一个问题采样好几次来对比优势,而 SDFT 针对每个问题只需要采样一次(Single Rollout),并且能提供精确到每个词的反馈信号,计算成本相对更低。
Q2:
给它输入“问题” + “专家提供的完美示范(Demonstration)”。因为看到了标准答案,老师模型此时仿佛“开了挂”,能够输出极其标准、正确的概率分布和推理过程。
提示词是怎样的,有点理解不了,给了老师答案,那它还需要输出什么呢?
这是一个非常棒的问题!你的疑惑非常精准:既然老师已经看到了最终的标准答案,它难道不就是直接把答案抄一遍吗?它还能输出什么呢?
为了解答这个问题,我们直接来看看论文中给老师模型使用的真实提示词(Prompt),你就立刻明白了。
1. 老师模型的真实提示词是怎样的?
在论文中,作者精心设计了一个提示词来把原本的模型变成“开挂的老师”:
<Question> (这里输入用户的问题)
This is an example for a response to the question: (这是一个关于该问题的回答示例:)
<Demonstration> (这里输入专家提供的完美示范/标准答案)
Now answer with a response of your own, including the thinking process: (现在,请用你自己的方式给出一个回答,并包含你的思考过程:)
2. 既然给了答案,老师模型到底在输出什么?
仔细看提示词的最后一句:“用你自己的方式回答,并包含思考过程”。
这意味着,老师模型绝对不是在逐字逐句地照抄专家答案,而是把它当成一个“极其靠谱的参考资料”。它实际输出的东西包含两个核心价值:
- 补全和重构出“完美的思考过程”:在很多真实场景下,专家给的答案(Demonstration)往往非常简略,甚至只有最终答案(比如只给了一个正确的代码或者一个医学结论),而没有详细的推导步骤。老师模型在看到了“已知结果”后,凭借大模型原本强大的知识储备,能够倒推出一套完美、逻辑严密的完整思考过程(Chain-of-Thought)。
- 提供每一步的“概率分布(Logits)”:这也是算法中最重要的一点。SDFT 算法需要的并不是老师输出的那段“文字”,而是老师在生成这段完美回答时,每一个词背后的概率分布。比如在某个语境下,老师认为下一个词选“使用”的概率是 90%,选“调用”的概率是 10%。
3. 通俗的总结
你可以这样理解:
专家给的示范(Demonstration)就像是**“考试的最终参考答案”**。
如果直接把参考答案塞给学生(传统 SFT 的做法),学生只会死记硬背结果,遇到稍微变形的题目就不会了,甚至连原本的解题思路都忘了(推理能力坍塌)。
而 SDFT 的做法是:把参考答案偷偷递给**“学霸老师”**。学霸老师看完答案瞬间懂了,然后他转过身来,用自己的话、带着完整的推导逻辑,一步一步把这道题重新给学生讲了一遍。
学生模型真正在学的,是学霸老师在讲这道题时的**“思维轨迹和用词概率”**,这样既学到了新知识,又保留了模型原本优秀的逻辑推理习惯。
更多推荐

所有评论(0)