预训练模型的行为

一个纯预训练的语言模型,做的是续写——给它一段文字,它预测接下来最可能的内容。

如果你输入"请解释什么是黑洞",它可能续写成:

……请解释什么是黑洞。
请解释什么是白洞。
请解释什么是虫洞。

因为这在训练语料中是很常见的"列表式"模式——它并不理解你在要求它做事。

指令微调

Instruction Tuning(指令微调)的做法:用大量"指令—回答"格式的数据微调模型,让它学会遵循指令。

数据形式:

指令:把下面这句话翻译成英文。
输入:今天天气很好。
输出:The weather is nice today.

通过成千上万个不同任务的示例,模型学会了一个通用的能力:理解指令的意图,并给出符合要求的回答。

为什么有效

关键在于泛化。

研究表明,即使在微调时从未见过某类任务,模型也能在见到新指令时给出合理的回应——它学到的是"遵循指令"这一元能力,而非死记硬背训练任务。

这就是为什么指令微调能大幅提升模型的实用性:从"文本生成器"变成"可以分配任务的助手"。

数据的来源

一、人工标注

质量最高,但成本高、规模有限。

通常的做法是让标注员编写多样化的指令和高质量的回答,并覆盖尽可能多的任务类型。

二、已有数据集转换

把 NLP 领域的各种任务数据集(翻译、摘要、问答、分类等)统一转换成指令格式。

三、模型生成(Self-Instruct)

用已有的强模型自动生成指令和回答,再人工筛选。

这大幅降低了数据构造成本,使得在较短时间内构造数十万条指令数据成为可能。

注意:这种方式生成的数据质量依赖源模型,可能引入错误和偏见。

关键要素

一、多样性

指令的类型、长度、领域、格式要尽可能多样。数据分布过于单一,模型就会在其它类型上表现差。

二、质量

回答要准确、有用、无害。研究表明,在指令微调阶段,数据的质量比数量更重要——几千条高质量的示例,可能比几十万条低质量数据效果更好。

三、覆盖安全场景

要包含"拒绝回答有害请求"的示例,让模型学会在适当的时候说"不"。

与其他技术的关系

  • 指令微调解决"听懂指令、给出回答";
  • RLHF / DPO 解决"回答得更好、更符合人类偏好"(在前文提到过)。

通常的流程是:预训练 → 指令微调(SFT)→ 偏好对齐(RLHF/DPO)。

一个实践意义

对使用者来说,指令微调的普及意味着:你可以用自然语言描述任务,而不必设计巧妙的提示词技巧。

这也是为什么现代大模型的交互门槛大幅降低——它们经过了指令微调,默认就在"等待你的指令"这种模式下工作。

说明:本文为大模型训练的知识整理。