跳到正文
AI 知识地图 0.18 · 2026-07-30
关于与纠错文字目录 / Search
理解原理

微调 Fine-tuning

在预训练的「通才」上继续训练,调成某个任务的「专才」

Fine-tuning · 微调 · 指令微调 SFT

建议 30–40 分钟 · 中级 · 需要:了解「预训练」「监督学习」「大语言模型」的基本概念

核心命题 微调是在一个已经预训练好的大模型上,用一批针对性的数据继续训练、微微改动它的权重,把「通才」调成某个任务或领域的「专才」。它站在预训练的肩膀上,省去了从零训练的天价成本——背后的原理叫迁移学习
读完这一页,你应该能自己回答:
  • 是什么——微调和「从零训练」差在哪,为什么它便宜得多。
  • 凭什么有效——迁移学习:为什么不必重头学,改一改就行。
  • 能改什么、不能改什么——微调擅长改行为,不擅长塞事实。
  • 指令微调——ChatGPT 的「会听话」是怎么调出来的。
  • 省钱的关键——为什么不必改动全部几千亿参数(LoRA)。
  • 怎么选——面对需求,先试提示、还是 RAG、还是微调。
  1. 从零训练太贵,于是拿预训练模型当起点、用少量数据继续训一小会儿——这就是微调。(§1)
  2. 它有效,是因为预训练已学到通用能力,微调只需小幅调整(迁移学习)。(§2)
  3. 所以微调擅长改「行为/格式/风格」,塞「大量新事实」则该交给 RAG。(§3)
  4. 最重要的一次行为改造是指令微调(SFT):用「指令→理想回答」把基座教成会听话的助手,本质是监督学习。(§4)
  5. 既然只推一小步,就不必动全部参数——LoRA 冻结原权重、只训小矩阵,省显存又可插拔。(§5)
  6. 常见翻车在过拟合、灾难性遗忘、数据质量差三处。(§6)
  7. 因此面对需求,先提示、再 RAG、最后才微调——从轻到重。(§7)

1什么是微调直觉

微调要解决的问题很直接:世界上已经有了强大的预训练模型,怎么让它专精我想做的那一件事?

先看没有微调时的那条路。从零训练一个大模型,需要海量数据、成千上万张显卡、几个月时间——绝大多数人和团队根本做不起。微调换了一个思路:把别人预训练好的模型当作起点,用你自己的一小批数据,让它接着训练一会儿,权重只被轻微地调整。经过这一步,一个通才变成了专才。

更精确地说,微调的输入有三样东西:一个预训练好的模型、针对目标任务收集的样本、以及训练配置(学习率、训练轮数等)。输出则是适配后的权重,或者一个可以挂载到原模型上的适配器。训练过程本身并不神秘:仍然计算任务损失,仍然用梯度更新参数。它和从头训练的差别只在于两点——起点不是随机权重,而是预训练权重;训练数据不再覆盖万物,而只集中在你的任务上。因为起点已经接近解的区域,所以只需很小的一步。

结果应该怎么解读?最重要的判断标准是留出任务指标:微调后模型在目标任务上的表现提高,说明它更适合当前任务了。同时要注意另一面:如果通用能力或其他语言切片上的表现下降,说明这次专精伴随了回归——模型在把能力从别处挪向你的任务。一个理想的微调是在目标指标上升的同时,让无关能力的损失尽可能小。

这条路的适用边界同样清楚。数据太少、任务与预训练模型见过的分布差异太大、或者基础模型本来就不会这个任务时,“轻推一步”未必够。微调能高效地把已有能力引导到新用途上,却不能无中生有地教会模型它从未学过的东西。

所以一句话:微调不是“造一个新模型”,而是“把一个现成的好模型,往你的方向推一小步”。

从零训练微调
起点随机初始化的空白模型已预训练好的模型
数据量海量少量、针对性
成本天价(算力/时间/数据)相对很低
产出一个通用能力一个专精某任务/领域的版本

2它凭什么有效:迁移学习直觉

微调最关键的疑问是:为什么用一小批数据“接着训一会儿”就够了,而不必从头学起?

答案在于预训练模型早已学到了大量通用的、可复用的东西。语言模型在预训练阶段掌握了语法结构、常识和基本推理;视觉模型掌握了边缘、纹理和形状这类底层特征。这些能力对几乎所有下游任务都有用,是任何具体应用的地基。你要专精的那件事,往往只需要在这些通用能力之上做小幅调整——把已有的表示朝你的目标方向“拨一拨”。比如一个读过海量文本的模型已经知道“主语—谓语—宾语”的语序规律和大量词语的含义,你教它做情感分类时,梯度不再需要重新发现这些规律,只需要把已有的词义表示朝“正/负情感”这个方向上轻微偏移。

这种“把一个领域学到的能力搬到另一个任务上”的思路,叫做迁移学习。它的输入是源任务(预训练)中学到的参数表示,加上少量目标任务样本;输出则是对目标任务更合适的决策边界或生成行为。具体到参数层面:微调时梯度会优先调整与当前样本最相关的表示和输出方向,而不是从零重新发现全部语言规律。这就是它省数据、省算力的全部来源——最贵的那一步预训练,别人已经替你做完了。图 1 表达的关系正是如此:迁移学习是在庞大的预训练能力之上做小幅微调。

迁移的效果有明确的依赖条件。目标数据越接近预训练语料或图像的覆盖范围,基础表示就越可复用,迁移通常越省样本。反过来,如果领域、模态或标签含义差异很大,就可能出现负迁移——迁移不但没帮上忙,最终表现甚至不如一个更简单的专用方案。类比地说,一个已经博学的人转行,不必回炉重上小学,只要针对新岗位做一段专项培训就能上手;微调之于预训练模型,就是这段专项培训。但专项培训的前提是旧知识与新岗位确实相通,若新岗位需要的是完全陌生的技能,这段培训也就无从谈起。

预训练模型通用能力 · 天价训练 +少量任务数据 微调 专才模型精于你的任务
图 1 贵的那一步(预训练)别人已经替你做完了。微调只在这份庞大能力上,用少量数据推一小步——这就是它省数据、省算力的全部来源。

3它能改什么、不能改什么工程

这是全页最实用、也最容易用错的一节:什么问题该用微调,什么问题不该?

一句话分水岭:微调擅长改“行为”——格式、语气、风格、做事方式;不擅长可靠地塞进“大量新事实”——那更适合外挂检索(RAG)。沿着这个分水岭,可以把常见需求逐一归位。

想让它稳定只输出某种格式,比如 JSON,应该微调。格式是一种行为习惯,示范多了就会固化在权重里。想让它用某种固定语气或风格回答,同样应该微调:风格是可训练的行为。想让它掌握某专业领域的表达方式,也归微调——这里调的是“怎么说”,而不是“记住哪条”。这三类需求的共同点是:它们改变的是模型做事的方式,而不是模型知道的内容。

反过来,想让它知道我公司最新的文档或数据,该用 RAG。事实要可更新、可溯源;检索可以随时替换知识源并给出出处,而把事实硬塞进权重,既容易记不牢,又可能挤掉别的能力(第 6 节的“遗忘”会展开这一点)。如果只是想让模型这一次按要求做,最轻的选择是提示词与上下文学习:不用训练、迭代快,但每次调用仍有 token 与评测成本,谈不上固化。

最常见的用错场景是“我想让模型知道我们公司的知识”——很多人的第一反应是微调,其实多半该用 RAG:公司知识一直在变,检索能随时更新、还能给出处。把一堆事实灌进权重,学不牢,还会过时。因此可以记一条口诀:记不住的事实交给检索,改不动的习惯交给微调。

做选择时,输入应该是需求类型、知识更新频率、可追溯要求、调用量与延迟预算,输出则是在提示、RAG、微调或其组合中选出的方案。解读结果时也要守住证据边界:格式通过率提高,只能证明行为更稳定,不能据此推断事实覆盖更完整。行为与知识经常同时出现,所以实际系统完全可以把两者组合起来——用微调固定输出格式,再用 RAG 提供可更新的证据。

你的需求更该用为什么
让它稳定只输出某种格式(JSON)微调这是行为习惯,示范多了就固化
让它用某种固定语气/风格答微调同上,风格是可训练的行为
让它掌握某专业领域的表达方式微调调的是「怎么说」,不是「记住哪条」
让它知道我公司最新的文档/数据RAG(检索)事实要可更新、可溯源;微调塞事实易学不牢又过时
只是想让它这一次按要求做提示 / 上下文学习不用训练、迭代快,但仍有 token 与评测成本

4指令微调:把「基座」调成「助手」工程

上一节说微调擅长改“行为”。有一个最重要的行为改造,你天天在用——对话助手就是这么来的。

预训练刚结束的基座模型只会“续写”。你问它一个问题,它可能顺着你的句子续写出更多问题,而不是给出回答。这是预训练目标的直接产物:它在海量文本上学的任务是预测下一个词,而非回应提问。指令微调(SFT)就是针对这个行为做一次专门的监督微调:用大量“指令 → 理想回答”的示范数据训练它,教会它“被问就答”这个行为。经过这一步,模型从“会续写的基座”变成“会应答的助手”。

从机制上看,指令微调就是标准的监督学习:这里的“指令”是输入,“理想回答”是标签,训练时用交叉熵逐步提高示范回答中每个 token 的出现概率(这一套机制详见“监督学习”深读页)。所以严格地说:指令微调 = 在预训练模型上做的一次监督学习。它没有引入任何新算法,只是把预训练权重当作初始点,套上监督学习的目标。

指令微调之后,往往还有一步偏好对齐(RLHF 或 DPO):用人类对“哪个回答更好”的偏好,把模型调得更有用、更安全。“预训练 → 指令微调 → 偏好对齐”这三步,就是今天所有对话助手的来路(详见“大语言模型”深读页第 8 节)。

解读指令微调的结果时,要守住一个边界:指令遵循率上升,表示模型更常复现训练示范里的规范,并不代表回答的事实必然正确——示范数据里的错误会被原样学进去。示范未覆盖的情况、彼此冲突的示范、以及示范中写错的拒答标准,都会作为缺陷被模型继承。偏好对齐同样只是流水线的下一阶段,不能替代独立的安全评测与事实评测。

5不必改全部参数:参数高效微调数学工程

一个现实问题:模型有几千亿参数,微调一次是不是也得改动全部参数、依然很贵?好消息是不用。既然微调的初衷只是“推一小步”,就没必要动全部权重。

参数高效微调(PEFT)的思路是:把绝大多数原参数冻结不动,只训练一小撮新增的参数。最流行的做法是 LoRA——在原权重旁边挂两个低秩小矩阵,只训练它们,用它们来表示“该在原权重上加的那点改动”。“秩”可以先理解为矩阵中彼此独立的变化方向数量;低秩假设认为任务适配只需要少数几个方向,不必任意改变原权重的每个自由度。图 2 对比了两种方式:全量微调更新整块权重,代价是贵,而且每个任务都要存一整个模型;LoRA 冻结原权重,只训练旁边两个低秩小矩阵,可训练参数常能降到不足 1%,显存大减,而且一个基座可以挂多个“适配器”,按需切换。

5.1 运行示例:一个秩 1 LoRA 怎样改写输出

用一个 2×2 的玩具权重把低秩更新走一遍。设基座矩阵 W = I(单位矩阵),LoRA 的适配器由列向量 B = [0.2, 0.1]ᵀ 与行向量 A = [1, −1] 相乘构成。权重增量 ΔW = B × A,这是一个至多为秩 1 的 2×2 矩阵:W 是冻结的基座权重,ΔW 是适配器学到的增量;A 把输入压缩到一个低维方向上,B 再把这个方向展开回输出空间。这里 A 只有一行、B 只有一列,所以乘积最多提供一个独立变化方向,记作 rank(ΔW) ≤ 1。

具体算一遍输入 x = [3, 1] 时的结果。基座输出 Wx = [3, 1],因为 W 是单位矩阵。适配器增量 ΔWx:先由 A 把 x 压成标量 A·x = 1×3 + (−1)×1 = 2,再乘 B 得到 [0.2×2, 0.1×2] = [0.4, 0.2]。合并输出 (W + ΔW)x = [3.4, 1.2]。可以看到,适配器只沿着“第一维增、第二维减”这一个方向施加了有限的修正,而不必改动 W 本身。

训练时只更新 A、B,W 始终保持冻结;部署时可以动态挂载适配器,也可以把 ΔW 合并进 W 一并固化。真实 LoRA 还有缩放因子、目标层选择与 dropout,这些都会改变有效更新的强度,但低秩旁路的结构不变。

这也解释了为什么这类方法在实践中是默认选项:省显存、训得快,还能实现“一个基座 + 多个可插拔适配器”——切任务就换个小矩阵,不必各存一份满血大模型。对大多数团队,参数高效微调是起点,全量微调只在必要时才上。

全量微调 整块都训 LoRA(参数高效) 冻结(不动) 只训小矩阵
图 2 全量微调更新整块权重(贵、每个任务存一整个模型);LoRA 冻结原权重,只训练旁边两个低秩小矩阵。可训练参数常能降到不足 1%,显存大减,而且一个基座能挂多个「适配器」按需切换。
步骤输入 x=[3,1] 时的结果
基座输出 Wx[3,1]
适配器增量 ΔWx[0.4,0.2]
合并输出 (W+ΔW)x[3.4,1.2]
ΔW=BA=[0.20.20.10.1]rank(ΔW)1

6三个最容易翻车的坑工程

微调看着简单,但翻车集中在几个固定的地方。

第一个坑是过拟合。微调数据往往很少,模型容易把这几百条样本背下来,丢掉泛化能力——在训练样本上答得漂亮,换条没见过的同款问题就露馅。应对手段是压低学习率、早停、加正则化、别训太多轮(机制详见“过拟合”“正则化”深读页)。

第二个坑是灾难性遗忘。一门心思学新任务,把预训练学到的通用能力忘了:模型变得只会吐 JSON,别的能力全面退化。应对是改用参数高效微调(冻结绝大部分原参数,改动面小了,忘得就少)、进一步降低学习率,并且在训练数据里掺一些通用样本,提醒模型旧本领还要保住。

第三个坑是数据质量,而且它比数量重要。微调的效果高度取决于示范数据的质量:几百条高质量、格式一致的样本,常胜过一大堆噪声。脏数据会被模型忠实地学下来——示范里写错的格式、错误的拒答标准,都会原样迁移到模型行为里。

这里有一个反直觉的点:微调不是“喂得越多越好”。数据脏、量大、训得久,往往比小而精更糟,因为你在教它“照着这些(不好的)例子办”。正确的顺序是先把几百条样本打磨干净,再谈规模。

风险检查的输入是训练曲线、独立任务集、通用能力基线和分层数据审计,输出是对过拟合、遗忘或数据缺陷的定位。几个信号可以直接对应:训练损失继续下降而验证集变差,是过拟合;目标任务提高但通用集下降,是遗忘;错误集中出现在对示范措辞的复述上,则应先修数据。低学习率、早停、通用样本混合和参数高效微调都能降低风险,但它们不能替代独立留出集——无论怎么防,最终结论只能由模型没见过的数据给出。

7怎么选:微调,还是先别微调工程

面对一个真实需求,第一步该做什么?答案通常不是“马上微调”。

把三种手段看成一个由轻到重的阶梯,从最省的试起,不够了再往上走。第一级最轻:提示与上下文学习。调调措辞、给几个示例就够用的话,到此为止——不用训练,迭代也最快(机制见“上下文学习”深读页)。第二级居中:RAG 检索。缺的是事实或最新知识,就外挂检索,别把这些塞进权重。第三级最重:微调。只有当你要的是稳定的行为、格式或风格,而提示压不稳、调用量也上来了,才轮到微调。

务实的顺序因此是:先用提示和上下文学习快速验证“模型到底能不能做这件事”;缺事实就加 RAG;只有当你需要把某种行为固化下来、而且要长期稳定又省单次成本时,微调才真正划算。一句话:微调是终点,不是起点。

这条阶梯的输入是同一批代表性需求、质量门槛和总成本约束,输出是达到门槛的最轻方案。比较必须在同一套测试集上进行:质量、延迟、单次 token、训练与维护成本都要放到一起看。方案越重,版本管理和回归测试的负担就越大,所以“够用就停”本身就在省钱。当然,这是默认的试验顺序而非绝对规则:严格离线、极低延迟或大调用量的场景里,微调可能更早就变得经济。

阶梯手段先试它,如果……
① 最轻提示 / 上下文学习调措辞、给几个示例就够 → 到此为止(无需训练、见「上下文学习」)
② 中RAG 检索缺的是事实/最新知识 → 外挂检索,别塞进权重
③ 最重微调要的是稳定的行为/格式/风格,且提示压不稳、量也上来了 → 才微调

8把整条因果链连起来综合

整条因果链从头到尾是这样连起来的。

从零训练太贵,于是拿预训练模型当起点、用少量数据继续训一小会儿——这就是微调。它之所以便宜有效,是因为预训练已经学到通用能力,微调只需小幅调整,这是迁移学习在起作用。正因如此,微调擅长改“行为/格式/风格”,而塞“大量新事实”则该交给 RAG:行为可以靠示范固化,事实必须可更新、可溯源。

这条链上最重要的一次行为改造是指令微调(SFT):用“指令 → 理想回答”把基座教成会听话的助手,本质就是一次监督学习,再经偏好对齐成为今天对话助手的形态。既然只推一小步,就不必动全部参数——LoRA 冻结原权重、只训旁挂的小矩阵,省显存又可插拔,让“推一小步”在工程上真正可行。但微调并非没有风险:过拟合、灾难性遗忘、数据质量差,三处翻车都源于“数据少而窄、行为又专一”这个特征本身,需要低学习率、早停、通用样本混合和留出集来兜底。

因此面对一个新需求,因果链的终点是一个从轻到重的选择顺序:先提示、再 RAG、最后才微调——先验证可行性,再补事实,最后才为真正需要固化的行为付出训练成本。

过关的标准由此也很清楚:能讲清“微调为什么便宜(迁移学习)”,并准确说出“什么该微调、什么该用 RAG”,就抓住了它最实用的内核。

11概念依赖与延伸学习路线

学习本页之前,需要先具备这些概念:预训练(微调的起点从何而来)、监督学习(指令微调的本质)、大语言模型(本页最常出现的应用对象),以及神经网络与权重(训练到底在改什么)。

本页的核心概念是:迁移学习(微调为什么便宜有效)、指令微调 SFT(把基座调成助手的那一步)、参数高效微调与 LoRA(不必改全部参数的工程实现)、灾难性遗忘(微调最典型的风险之一),以及微调、RAG 与提示三者的分工边界。

顺着这些核心概念自然延伸的下一步,是过拟合与正则化(控制微调风险的手段)、上下文学习(阶梯上最轻的那一级)、检索增强生成 RAG(与微调互补的事实供给方案),以及对齐与 RLHF(指令微调之后的那一步)。

更远的学习方向包括:量化与部署(训练出来的模型如何真正上线)、蒸馏(把大模型能力压进小模型)、评测(如何客观确认微调真的有效),以及模型选型(在微调之前就该想清楚的问题)。

学习层级涉及概念
先修预训练、监督学习、大语言模型、神经网络与权重
本页核心迁移学习、指令微调 SFT、参数高效微调 / LoRA、灾难性遗忘、微调 vs RAG vs 提示
紧邻延伸过拟合、正则化、上下文学习、检索增强生成 RAG、对齐与 RLHF
更远量化与部署、蒸馏、评测、模型选型
资料来源与改编说明
访问日期:2026-07-21