定义

微调(Fine-tuning)是指在一个已经完成预训练的模型基础上,使用规模较小、针对性较强的数据继续训练,使模型适应特定任务、领域或风格的过程。

预训练让模型具备通用的语言或视觉能力,但它不一定懂你的行业术语、不一定按你要的格式输出。微调就像让一位通才接受岗位培训:基础能力不变,但在特定工作上表现更好。相比从零训练,微调所需的数据和算力都少得多。

工作原理

微调的基本流程是:

  1. 准备数据:整理成模型可学习的样例,例如“指令—理想回答”对,或“输入—标签”对。数据质量通常比数量更重要。
  2. 选择基础模型:根据任务难度、部署条件和许可证挑选合适的预训练模型。
  3. 训练:用较小的学习率在新数据上更新参数,让模型逐步贴近目标行为。
  4. 评估:在未参与训练的测试集上检查效果,同时确认通用能力没有明显退化。

按更新参数的范围,微调大致分为两类:

全量微调。 更新模型的全部参数。效果上限高,但需要大量显存,而且每个任务都要保存一整份模型副本。

参数高效微调(PEFT)。 冻结原模型的大部分参数,只训练少量新增或选定的参数。代表方法 LoRA(低秩适配)在模型的部分权重旁插入两个小矩阵,训练时只更新它们。这样显存需求大幅下降,训练产物也很小,可以针对不同任务保存多个“适配器”,按需加载。QLoRA 则进一步结合量化技术,让较大的模型也能在有限硬件上微调。

从训练目的看,常见的有:

  • 指令微调:让模型学会理解并遵循各种指令。
  • 领域微调:让模型熟悉医疗、法律、金融等领域的语言和知识表达方式。
  • 任务微调:针对分类、抽取、特定格式输出等具体任务进行优化。

微调也有风险,例如数据太少或太单一时容易过拟合;在新数据上训练过度,可能削弱模型原有的通用能力,这种现象常被称为“灾难性遗忘”。

典型应用

  • 让客服模型使用企业固定的话术和语气
  • 让模型稳定输出指定的 JSON 结构
  • 提升模型在专业领域文本上的理解和写作能力
  • 训练小模型完成特定任务,以降低部署成本
  • 让图像生成模型学会某种画风或特定角色形象

如果目标是让模型掌握经常更新的知识,检索增强生成(RAG)往往是更合适的选择;微调更擅长改变模型的“行为方式”。

相关概念

  • 预训练:微调的起点,让模型获得通用能力。
  • RLHF:一种基于人类偏好的进一步训练方法。
  • RAG:通过检索外部资料补充知识,常与微调对比或结合使用。
  • 量化:降低模型精度以节省资源,QLoRA 将其与微调结合。
  • 大语言模型:微调最常见的对象之一。

参考论文:LoRA: Low-Rank Adaptation of Large Language Models