自然语言处理 (NLP) 领域目前主导着一种“越大越好”的理念。我们惊叹于像 GPT-4 或 Claude 3 这样的大型语言模型 (LLM) 所展现出的涌现能力——特别是它们执行思维链 (Chain-of-Thought, CoT) 推理的能力。这种能力就像人类做数学题一样,能将复杂问题分解为中间步骤以得出解决方案。
然而,当我们把模型尺寸缩小到可以在消费级硬件或边缘设备上运行时,这种能力通常会消失。小型语言模型 (SLM) 通常难以“思考”透彻问题。
标准的解决方案一直是监督微调 (Supervised Fine-Tuning, SFT) : 我们利用一个巨大的、聪明的“教师”模型 (如 GPT-4) ,生成数千个循序渐进的推理示例,然后训练小型的“学生”模型来模仿它们。虽然这在一定程度上有效,但这往往导致单纯的模仿。学生模型记住了教师特定的推理路径,却无法泛化到未见过的各种新问题上。
在一篇题为 “Self-Refine Instruction-Tuning for Aligning Reasoning in Language Models” (用于对齐语言模型推理能力的自我修正指令微调) 的精彩论文中,研究人员 Leonardo Ranaldi 和 Andrè Freitas 提出了一种新的范式。他们不再仅仅强迫学生模仿教师,而是允许学生利用偏好优化来“自我修正 (self-refine) ”其理解。
在这篇文章中,我们将解构这种方法,探索其自我修正技术背后的数学原理,并分析为什么这可能是实现 AI 推理民主化的关键。
问题所在: 模仿陷阱
在深入探讨解决方案之前,我们需要了解现有方法的局限性。当我们试图将推理技能从教师 (LLM) 转移到学生 (SLM) 时,通常依赖于指令微调 (Instruction Tuning) 。
教师模型生成一个包含元组 (指令, 问题, 答案) 的数据集。这里的答案不仅仅是“42”,而是一个详细的思维链解释。然后,学生模型被训练来预测这个确切的单词序列。
问题是什么? 泛化能力。 解决一个问题通常有多种有效的方法。通过强迫学生最小化其输出与某一个特定教师输出之间的差异,我们限制了学生的灵活性。它学会了鹦鹉学舌般复述教师的特定措辞,而不是学习底层的推理过程。
解决方案: 自我修正指令微调 (Self-Refine Instruction-Tuning)
研究人员引入了一个包含两个阶段的流程,旨在弥补这一差距。

如图 1 所示,该过程从左向右进行:
- 第一阶段: 指令微调 (热身) : 学生模型 (SLM) 首先在教师模型 (LLM) 提供的演示上进行训练。这赋予了学生模型基线能力。
- 第二阶段: 自我修正 (核心贡献) : 学生模型随后进入一个使用直接偏好优化 (Direct Preference Optimization, DPO) 的自我提升循环。它生成自己的推理路径,对其进行评估,并更新其内部策略以偏向那些能导出正确答案的推理。
让我们从数学角度拆解这两个阶段。
第一阶段: 指令微调
在这个阶段,目标是知识迁移。我们有一个由教师生成的数据集,包含指令 (\(i\)) 、问题 (\(q\)) 和思维链答案 (\(a_i\)) 。
答案 \(a_i\) 是一个 token 序列:

模型在状态 (\(s_t\)) 下运行,其中时间 \(t\) 的状态取决于输入指令/问题以及所有之前生成的 token:

训练目标是语言模型的标准目标: 最大化生成教师确切 token 的可能性。这是通过指令损失函数计算的:

这个方程本质上是说: “调整模型参数 \(\theta\),以便在给定上下文的情况下,生成教师所用词语 (\(w_t\)) 的概率最大化。”
在这个阶段之后,我们要么拥有了一个“还不错”的学生模型。它可以遵循指令并进行一点推理,但它很脆弱。大多数先前的研究到此为止。但这篇论文才刚刚开始。
第二阶段: 通过 DPO 进行自我修正
为了使学生模型更加稳健,研究人员采用了直接偏好优化 (DPO) 。
DPO 是一种通常用于使模型与人类偏好对齐 (例如,“不要有毒”、“要有帮助”) 的技术。它通常需要一个数据集,由人类 (或强大的 AI) 观察两个答案并指出: “答案 A 比答案 B 好”。
自我修正指令微调的天才之处在于,他们专门为推理调整了 DPO,且不需要单独的奖励模型或人类标注员。
设置
对于数据集中的每个问题,研究人员要求学生模型 (已在第一阶段热身过) 以两种方式生成答案:
- 标准答案: 仅生成答案。
- CoT 答案: 使用提示词“Let’s think step by step” (让我们一步步思考) 生成的答案。
然后,他们定义了一个偏好对 (\(y_w, y_l\)) ——即赢家和输家。
- 赢家 (\(y_w\)) : 一个包含思维链推理且得出正确标准答案的生成响应。
- 输家 (\(y_l\)) : 一个错误或未能使用推理的响应。
目标是更新模型,使其本质上更倾向于生成“赢家”风格 (正确的 CoT) ,而不是“输家”风格。
修正的数学原理
标准的 DPO 损失函数如下所示:

其中 \(\sigma\) 是 sigmoid 函数,\(M\) 代表赢家策略和输家策略之间的边界 (margin) :

这个公式看起来很吓人,但它本质上是这样做的: 如果模型分配给“输家”答案的概率高于分配给“赢家”答案的概率 (并由参考模型 \(\pi_{sft}\) 进行缩放) ,就会惩罚模型。
研究人员专门针对思维链 (\(DPO_{CoT}\)) 定制了这个公式。他们明确将“赢家” (\(y_w\)) 定义为自我生成的正确推理路径:

赢家的选择标准严格由正确性定义 (\(t_i\) 是目标/标准答案) :

如果学生生成了正确的 CoT,那就成为训练目标。如果没有,他们就回退到教师的演示 (\(\hat{a}_i\)) 。这创建了一个自我强化循环 : 模型在自己成功的推理尝试上进行练习,这些尝试本质上比教师的演示更符合其自身的内部分布。
实验与结果
研究人员在各种基准测试上测试了这种方法,包括常识推理 (OpenBookQA, PIQA) 和数学问题 (GSM8K, MultiArith) 。他们使用 Llama-2 (7B 和 13B) 和 Mistral-7B 作为学生模型,并使用像 Llama-2-70B 和 GPT-3.5 这样的大型模型作为教师。
1. 同族与跨族对齐 (In-Family vs. Out-Family Alignment)
蒸馏中的最大挑战之一是“跨族”对齐。让一个小的 Llama 模型向一个大的 Llama 模型学习 (同族) 比较容易,因为它们共享相同的底层架构和分词器。让 Llama 模型向 GPT-3.5 学习 (跨族) 则要难得多。
同族表现 (Llama-2-70B \(\to\) Llama-2-7/13B) :

在图 2 中,请观察从蓝色柱状图 (指令微调) 到红色/橙色柱状图 (自我修正) 的转变。自我修正步骤持续提高准确率,往往能显著缩小学生模型与巨大的教师模型 (由水平线表示) 之间的差距。
跨族表现 (GPT-3.5 \(\to\) Llama/Mistral) :

图 3 可能更令人印象深刻。在这里,学生模型正在向 GPT-3.5 (一个完全不同的模型) 学习。“指令微调”后的模型 (蓝色) 很难达到教师的水平。然而, 自我修正后的模型 (橙色/红色) 在性能上有了巨大的飞跃。
这证明了 DPO 允许学生内化教师的推理逻辑,即使措辞和分词完全不同。
2. 它能泛化吗?
对微调的一个主要批评是,模型会变成“只能解决特定问题的工具”。如果你在科学问题上训练它们,它们就会忘记如何做数学题。
研究人员测试了跨域自我修正 (Cross-Domain Self-Refinement) 。 他们在一个任务 (例如 OpenBookQA) 上指导模型,然后使用来自不同任务 (例如 CommonSenseQA) 的数据应用自我修正阶段。

表 1 强调了“Cross Self-refine” (跨域自我修正) 行。请注意,在不同任务 (域外) 上进行修正的模型表现通常几乎与基线一样好,有时甚至更好。这表明推理能力本身得到了提升 , 而不仅仅是记住了特定的数据集。
3. 少样本下的效率
最后,这是否需要海量数据?研究人员将演示数量减少到原始数据集的 25%、50% 和 75%。

图 4 显示,即使只有 25% 或 50% 的数据,自我修正模型 (实线) 也始终优于标准的指令微调模型 (虚线/点线) 。这意味着质量 (通过修正) 胜过数量 。 一个能反思自己正确推理的模型比盲目通过教师数据学习的模型学得更快。
结论与启示
论文 “Self-Refine Instruction-Tuning” 为开源 AI 社区提供了一条引人注目的前进道路。它解决了像 GPT-4 这样的专有巨头与可访问的本地模型之间的“推理差距”。
关键要点如下:
- 不要只是模仿: 标准的指令微调是一个好的开始,但对于深度推理来说还不够。
- 自我纠正很强大: 使用 DPO 来强化学生自己的正确推理路径,比标准的监督学习能带来更好的泛化能力。
- 跨兼容性: 即使教师和学生来自不同的模型家族,这种方法也非常有效。
通过允许小模型“练习”并修正它们自己的思维,我们离未来更近了一步——在这个未来里,高水平的推理不再被锁在巨大的 API 付费墙之后,而是可以在我们需要使用的设备上随手可得。
](https://deep-paper.org/en/paper/2405.00402/images/cover.png)