预训练模型已经"上过大学",但还不会干你公司的活。 微调,就是在它已有知识的基础上,用一小撮专属数据再"回炉"一次, 把它从"通才"调教成"某个岗位的专家"。下面从定义、原理、目的到应用场景,配图讲透。
一句话:拿一个已经训练好的模型,喂给它任务相关的数据,让它继续学习、调整内部参数,从而适配某个具体任务或领域。
从"不动模型"到"从头训练",成本是递增的。微调恰好卡在中间:比提示词贵、比预训练便宜,性价比高。
| 维度 | 提示词 (Prompt) | 检索增强 (RAG) | 微调 (Fine-tuning) |
|---|---|---|---|
| 是否改权重 | 不改 | 不改 | 改 |
| 数据需求 | 无 | 知识文档 | 带标注样本 |
| 擅长 | 临时引导、试错 | 注入最新/私有知识 | 改风格、格式、行为 |
| 成本 | 几乎零 | 中(检索基建) | 中(训练+算力) |
| 知识更新 | 手动改 prompt | 换知识库即可 | 需重新训练 |
核心思想叫迁移学习(Transfer Learning):底层能力已经学会,没必要重头练,只需要在已有参数附近"微调"一小步,让它更贴合你的任务。
微调本质上还是那套老训练循环,只是起点从随机权重换成了预训练权重:
其中 θ 是模型全部参数,从预训练得到的 θ₀ 出发;x 是输入,y 是期望输出;L 通常是交叉熵。和预训练的区别只在数据与规模——预训是"预测下一个词"的海量文本,微调是"按任务答对"的小批样本。
如果模型有 700 亿参数,全量微调就要更新全部 700 亿个——显存爆炸、容易过拟合。于是有了 PEFT:只训练极少一部分参数,其余冻结。
LoRA 的巧思:不碰原权重 W,而是学一个"补丁" ΔW,且把 ΔW 拆成两个又瘦又小的矩阵的乘积 ΔW = B·A(秩 r 远小于原维度 d),训练时只更新 A、B。
不是"技术炫技",而是为了弥补基座模型在特定场景下的短板。常见目的有四类:
用户:提取订单信息 模型:好的,这看起来是一笔订单, 买家是张三,买了2件T恤, 总价 199 元,地址在……(自由发挥,格式飘忽)
{
"buyer": "张三",
"items": [{"name":"T恤","qty":2}],
"total": 199,
"addr": "北京市朝阳区…"
}
凡是"通用模型不够贴、提示词稳不住、又想要低成本"的地方,都是微调的舞台。
标准 SFT(监督微调)流水线长这样——数据质量远比数量重要。
{"instruction":"…","input":"…","output":"…"},几百到几千条高质量样本常已够用。记住一条经验法则:能靠提示词解决就别上 RAG,能靠 RAG 就别先微调。从便宜、可逆的方案往上走。
微调 = 迁移学习:在预训练好的基座模型上,用一小撮专属数据继续训练、真正改动部分权重, 把"通才"调教成"某个任务的专家"。它擅长改风格、格式、语气、行为, 而不是塞事实(那交给 RAG)。如今因为 LoRA / QLoRA 这类参数高效方法, 普通人用一两张显卡也能给大模型"做个岗前培训"——但记住,先试提示词、再试 RAG、最后才微调。