预训练模型的行为
一个纯预训练的语言模型,做的是续写——给它一段文字,它预测接下来最可能的内容。
如果你输入"请解释什么是黑洞",它可能续写成:
……请解释什么是黑洞。
请解释什么是白洞。
请解释什么是虫洞。
因为这在训练语料中是很常见的"列表式"模式——它并不理解你在要求它做事。
指令微调
Instruction Tuning(指令微调)的做法:用大量"指令—回答"格式的数据微调模型,让它学会遵循指令。
数据形式:
指令:把下面这句话翻译成英文。
输入:今天天气很好。
输出:The weather is nice today.通过成千上万个不同任务的示例,模型学会了一个通用的能力:理解指令的意图,并给出符合要求的回答。
为什么有效
关键在于泛化。
研究表明,即使在微调时从未见过某类任务,模型也能在见到新指令时给出合理的回应——它学到的是"遵循指令"这一元能力,而非死记硬背训练任务。
这就是为什么指令微调能大幅提升模型的实用性:从"文本生成器"变成"可以分配任务的助手"。
数据的来源
一、人工标注
质量最高,但成本高、规模有限。
通常的做法是让标注员编写多样化的指令和高质量的回答,并覆盖尽可能多的任务类型。
二、已有数据集转换
把 NLP 领域的各种任务数据集(翻译、摘要、问答、分类等)统一转换成指令格式。
三、模型生成(Self-Instruct)
用已有的强模型自动生成指令和回答,再人工筛选。
这大幅降低了数据构造成本,使得在较短时间内构造数十万条指令数据成为可能。
注意:这种方式生成的数据质量依赖源模型,可能引入错误和偏见。
关键要素
一、多样性
指令的类型、长度、领域、格式要尽可能多样。数据分布过于单一,模型就会在其它类型上表现差。
二、质量
回答要准确、有用、无害。研究表明,在指令微调阶段,数据的质量比数量更重要——几千条高质量的示例,可能比几十万条低质量数据效果更好。
三、覆盖安全场景
要包含"拒绝回答有害请求"的示例,让模型学会在适当的时候说"不"。
与其他技术的关系
- 指令微调解决"听懂指令、给出回答";
- RLHF / DPO 解决"回答得更好、更符合人类偏好"(在前文提到过)。
通常的流程是:预训练 → 指令微调(SFT)→ 偏好对齐(RLHF/DPO)。
一个实践意义
对使用者来说,指令微调的普及意味着:你可以用自然语言描述任务,而不必设计巧妙的提示词技巧。
这也是为什么现代大模型的交互门槛大幅降低——它们经过了指令微调,默认就在"等待你的指令"这种模式下工作。
说明:本文为大模型训练的知识整理。