跳到主要内容

领域微调 — 法律的条款、代码的测试、小语料的杠杆

这一章讲三件事: 动手前先选路(继续预训练还是指令微调); 三个具体领域的独门坑与独门优势;以及「通用基准分数代表不了领域能力」 之下,怎么自建评测。读完你会知道领域微调难在哪——以及代码领域为什么反而是最容易评的。

1. 这一章讲什么

前六章的方法是通用的;实际动手时,微调几乎总有一个具体终点: 合同审阅、内部代码助手、多语言客服分类。书里这一章的立场: 领域难题不是「实现细节」,数据、评测、合规、部署都要重来1

先交代一个如实说明:原书这一章预告了医疗(患者隐私合规等)与金融 (数值与时效)两节,但我们的转码文本里没有这两节的独立小节正文——仅引子、总结与零星段落提到它们, 两节正文缺失;本章只讲文本里实际存在的内容2

2. 顶层全景

你的领域来了

├─ 选路:底座「懂」这个领域吗?
│ ├─ 不懂 → 继续预训练(海量领域文本,加深理解)──┐
│ └─ 懂但不会用 → 指令微调(任务示范) ├─ 两段连做最强
│ ▼
├─ 领域的坑:法律的条款边界 / 代码的私有框架 / 小语种的没数据

└─ 兜底:自建领域评测 + 检索增强补「最新知识」

图说:选路是第一决策,选错后面全错;评测基准是这章的「底线工程」。

3. 核心原理

3.1 第一个决策:继续预训练,还是指令微调

书里把领域适配拆成两个正交的问题:「懂不懂」与「会不会用」3

继续预训练(拿海量领域原始文本,继续练「预测下一个词」)解决前者: 不教任何任务,只让模型在语言表示层面泡进领域文本——医学词汇、临床推理、 行业惯例,在没有见过一条问答对之前就先「泡熟」4。 代价写在数字里:通常要数亿到数十亿 token 的领域文本,是重投入; 而且它把第 02 章的灾难性遗忘放大到大尺度——标准对策是混入 10%–30% 的 通用文本,给旧能力留一条持续的梯度通道5

指令微调解决后者:底座已经懂领域语言(或不需要太深), 缺的是「把知识用在你那个任务上」的示范6

书里的裁断:两段连做(先泡后教)训出最强模型,但投入大; 多数团队的现实起点是指令微调7

3.2 法律:条款边界、术语的分量、辖区

法律文本的三个难点,书里各给了一条对策8:

长文档。商业合同动辄几十页,一份条款可能与几页外的另一份条款互相引用。 检索增强能帮你找到相关段落,但「理解」要求整条款在上下文里。

于是要做分块——把长文档切成适合模型一次吞下的小段(行话叫分块)。

法律文本切起来必须按语义(意思是否完整)来:沿完整条款的边界切; 把一个条款拦腰切断,法律含义就变了9

术语的分量。shall、will、may、must 在法律上是不同的义务强度; indemnification(赔偿保护)、hold harmless(免责)、defend(抗辩义务) 听着同义、义务不同;「重大不利影响」这类术语的边界是几十年判例堆出来的。 训练数据必须显式、一致地展示这些区分——含糊的样本训出含糊的模型10。 相应地,标注必须由合格的法律专业人员核对,这一步不可省11

辖区。一个州可执行的条款换一个州未必可执行。 书里的处方是把模型切窄:按辖区加业务领域微调—— 「美国商业软件许可合同」模型,比「大杂烩法律」模型可靠得多12

3.3 代码:唯一能用「跑一下」来评的领域

代码领域有个其他领域都没有的性质:输出可以被机械验证—— 代码要么通过测试,要么没通过13

由此推出两件事。其一,训练数据可以自动过滤: 解析(用程序读出代码结构)失败的删、过不了基本测试的删—— 比人工审又快又干净14。 书里开的三类数据配方:函数签名加说明文档对上正确实现; 测试代码对上能让测试全绿的实现;旧代码对上重构后的代码15

其二,评测可以自动化:行话叫 Pass@k——同一个问题生成 k 个答案, 至少一个能通过全部测试的概率16。公开基准里最常用的是 HumanEval (164 道带单元测试的编程题集)16;而领域内评测, 必须用你自己的内部接口契约和测试集来建(见主走查)。

私有框架是最硬的微调理由。 通用代码模型对 Python、主流框架很在行, 但你们内部的认证库、错误处理惯例、微服务参数格式, 任何公开模型的训练语料里都没有。书里说得很直白: 你的内部代码库按定义不出现在任何公开语料里——这是最清晰、最站得住的微调用例17

主走查:一个内部代码库,怎么变成训练集加评测集

把 3.3 节的配方走成一条流水线(以书里给的机制为准,演示数字当场标明):

输入:你们公司的内部代码库(比如几十万行 Python)

① 抽「文档对」:用语法解析器扫出每一个带说明文档的函数,
「说明文档 + 函数签名 → 函数体」配成一对
(书里给 filters:少于 5 行的太琐碎删掉,超 200 行的装不下删掉)
② 抽「测试对」:每个有测试文件的函数,「测试代码 → 实现」配成一对
——测试是这个代码库里最客观的「正确性说明书」
③ 执行过滤:解析失败的删;配不进测试的删
④ 训练:第 04 章的 QLoRA 全套
⑤ 评测定标:挑一批内部任务,配上测试套件;指标用 Pass@1
(k=1:第一次生成就得全过)
⑥ 对照:同一批任务,底座跑一遍当基线(第 08 章的纪律:永远对照着评)

图说:④⑤⑥ 每一步旁边都是可检验的具体物——解析器、测试套件、通过率。
(①里的行数阈值是书里原文给的;「几十万行」是演示量级。)

第 10 章的案例会给出这条流水线跑出来的真实量级:内部任务通过率 从底座的 23% 一路到微调后的 74%——那里见分晓。

3.4 低资源语言:小语料的杠杆

书里先纠正一个误解:有些语言训不动,不是说话的人少,是资源 (公开可用的数字化文本)少——行话把这类语言叫低资源语言, 几亿人说的语言也可能在训练语料里几乎没有18

书里的杠杆有两根。第一根,选多语言底座:XLM-R 这类 在上百种语言上同时预训练的模型,学出了跨语言共享的表示空间—— 在 A 语言上的训练样本,能改善 B 语言的表现。这叫迁移 (一种语言学到的规律,帮忙另一门语言)19

第二根,数据增强。回译:把小语种句子翻成英语、稍作改写、再翻回去, 一条样本变出三五条20。还有混批:训练时故意多放小语种样本—— 从数据里抽谁进批的动作叫采样(「过采样」就是刻意多抽小语种), 否则它们天然占比太小,推不动权重21

3.5 兜底两件套:自建基准,微调加检索

自建领域基准。通用基准(MMLU、HumanEval 这些)测的是通用能力, 测不到「你的领域能不能用」。书里给的三件套:真实分布的输入 (最好从真实使用里收,含该答「不确定」的边界例)、 参考答案或判据、领域指标22。医疗、法律这类领域, 部署决策必须有人工专家评审参与23

微调加检索增强。两者互补:微调是训练时刻的知识快照, 跟不上行情、法规、指南的更新;检索增强提供可更新的知识, 但通用模型读不懂检索到的领域材料——微调过的模型综合得准得多24。 书里给的模式里有个容易被忽略的点:检索用的那个向量化模型, 本身也该做领域微调——检索质量直接吃领域词汇的红利25

4. 作者的判断与证据

书里当证据给的:「前 1/3 层通用」式的经验规律在本章不多; 书里更依赖机制论证——比如「混 10%–30% 通用文本」来自遗忘机制的推演5, 「语义分块防断句变义」来自法律语义的常识。

书里当立场给的:「按辖区切窄,别做大杂烩法律模型」是明确的实践处方12; 「私有框架是最站得住的微调理由」是作者的价值排序17; 「先指令微调,别急着继续预训练」是给多数团队的默认路径7

**书里坦白没给的:**本章没有任何完整的实操代码(其他章都有), 也没有给「多少 token 才算够继续预训练」的硬数字——只有「数亿到数十亿」的量级5

5. 边界与局限

  • 医疗与金融两节正文缺失(转码文本里无独立小节正文,仅引子、总结与零星段落提及), 上面 3.2–3.4 的覆盖范围以实际文本为准;
  • 「10%–30% 通用文本」的区间是经验值,书里没有对照实验;
  • Pass@k 只衡量「过测试」,测不到代码质量、可维护性这些测试外的东西, 书里没有讨论这个盲区;
  • 跨语言迁移的极限书里没给:哪些语言对之间迁移得动、哪些不行, 只有一句「语言间差异太大就不行」19;
  • 领域基准的「参考答案」本身谁来校准,书里默认有专家, 没讲专家意见冲突时怎么办。

6. 可带走的

  1. 领域适配先选路:「不懂」走继续预训练(数亿 token 起,混 10%–30% 通用文本), 「懂但不会用」走指令微调;多数团队从指令微调起步;
  2. 法律切窄:按辖区加业务领域;分块必须保条款边界;术语区分必须显式示范;
  3. 代码是唯一可执行验证的领域:训练数据用执行过滤,评测用 Pass@k;
  4. 私有内部代码不在任何公开语料里——这是最硬的微调理由;
  5. 低资源语言的杠杆:多语言底座加迁移,配回译与过采样;
  6. 通用基准分数代表不了领域能力,基准必须自建三件套;
  7. 领域应用的完整形态是「微调管行为与理解,检索增强管最新知识」, 检索的向量化模型也要领域微调。

7. 原文地图

主题原书章原文位置
领域难题需要重来数据/评测/合规Fine-Tuning for Specific Domainstext/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:11(搜「not merely implementation details」)
继续预训练的定义与表示层Fine-Tuning for Specific Domainstext/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:21(搜「Continued pre-training」) · :23(搜「language representation level」)
数亿到数十亿 tokenFine-Tuning for Specific Domainstext/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:25(搜「hundreds of millions to billions」)
混 10%–30% 通用文本Fine-Tuning for Specific Domainstext/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:27(搜「10 to 30 percent」)
指令微调的适用与两段式Fine-Tuning for Specific Domainstext/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:33(搜「task-specific ways」) · :37(搜「two-stage approach」)
法律:长文档与语义分块Fine-Tuning for Specific Domainstext/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:47(搜「clause boundaries」)
法律:术语的分量Fine-Tuning for Specific Domainstext/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:51(搜「shall」)
法律:专家核对与辖区切窄Fine-Tuning for Specific Domainstext/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:53(搜「not optional」) · :59(搜「jurisdictions」)
代码:机械验证与私有框架Fine-Tuning for Specific Domainstext/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:63(搜「passes its tests」) · :69(搜「by definition not represented」)
代码:三类数据与执行过滤Fine-Tuning for Specific Domainstext/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:73(搜「docstrings」) · :75(搜「does not parse」)
Pass@k 与 HumanEvalFine-Tuning for Specific Domainstext/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:79(搜「Pass@k」)
低资源语言的定义Fine-Tuning for Specific Domainstext/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:87(搜「few speakers」)
跨语言迁移与多语言底座Fine-Tuning for Specific Domainstext/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:91(搜「XLM-R」)
回译与混批Fine-Tuning for Specific Domains · Case Studiestext/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:95(搜「Backtranslation」) · text/10-ch07-chapter-7-case-studies-and-capstone-projects.txt:137(搜「oversampling」)
领域基准三件套Fine-Tuning for Specific Domainstext/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:103(搜「three components」)
医疗法律必须专家评审Fine-Tuning for Specific Domainstext/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:113(搜「not optional」)
微调与检索增强互补Fine-Tuning for Specific Domainstext/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:121(搜「snapshot」) · :123(搜「synthesizes retrieved information」)
检索嵌入模型也要领域微调Fine-Tuning for Specific Domainstext/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:127(搜「embedding model」)

Footnotes

  1. 出处:「Fine-Tuning for Specific Domains」第 11 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:11,搜「not merely implementation details」)。

  2. 出处:「Fine-Tuning for Specific Domains」第 9、137 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:9,搜「Medical fine-tuning」;:137,搜「HIPAA」)。两节正文在我们持有的转码文本中不存在,仅引子(段 7、9)、总结(段 137,且只提医疗)与正文零星段落(段 99、113、121、123、129)提及——如实声明,不虚构其内容。

  3. 出处:「Fine-Tuning for Specific Domains」第 17 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:17,搜「two fundamentally different approaches」)。

  4. 出处:「Fine-Tuning for Specific Domains」第 21、23 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:21,搜「predict the next token」;:23,搜「language representation level」)。

  5. 出处:「Fine-Tuning for Specific Domains」第 25、27 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:25,搜「hundreds of millions to billions」;:27,搜「10 to 30 percent」)。 2 3

  6. 出处:「Fine-Tuning for Specific Domains」第 31、33 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:31,搜「shapes the model's behavior」;:33,搜「adequate domain knowledge」)。

  7. 出处:「Fine-Tuning for Specific Domains」第 135 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:135,搜「combined two-stage」)与「Chapter Summary」第 135 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:135,搜「starting with instruction tuning」)。 2

  8. 出处:「Fine-Tuning for Specific Domains」第 41 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:41,搜「document length」)。

  9. 出处:「Fine-Tuning for Specific Domains」第 47 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:47,搜「clause boundaries」)。

  10. 出处:「Fine-Tuning for Specific Domains」第 51 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:51,搜「distinct legal meanings」)。

  11. 出处:「Fine-Tuning for Specific Domains」第 53 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:53,搜「qualified legal professionals」)。

  12. 出处:「Fine-Tuning for Specific Domains」第 57、59 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:57,搜「enforceable in one US state」;:59,搜「specific jurisdictions and practice areas」)。 2

  13. 出处:「Fine-Tuning for Specific Domains」第 63 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:63,搜「mechanically verified」)。

  14. 出处:「Fine-Tuning for Specific Domains」第 75 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:75,搜「automatically filtered」)。

  15. 出处:「Fine-Tuning for Specific Domains」第 73 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:73,搜「three types of data」)。

  16. 出处:「Fine-Tuning for Specific Domains」第 79 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:79,搜「Pass@k」)。 2

  17. 出处:「Fine-Tuning for Specific Domains」第 67、69 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:67,搜「no public model has ever seen」;:69,搜「clearest and most defensible」)。 2

  18. 出处:「Fine-Tuning for Specific Domains」第 87 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:87,搜「not simply mean few speakers」)。

  19. 出处:「Fine-Tuning for Specific Domains」第 91 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:91,搜「cross-lingual representations」)。 2

  20. 出处:「Fine-Tuning for Specific Domains」第 95 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:95,搜「Backtranslation」)。

  21. 出处:「Fine-Tuning for Specific Domains」第 95 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:95,搜「Multilingual fine-tuning mixes」)。「刻意多抽」的过采样纪律来自本书案例章:text/10-ch07-chapter-7-case-studies-and-capstone-projects.txt:137(搜「oversampling」)。

  22. 出处:「Fine-Tuning for Specific Domains」第 99、103、105 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:103,搜「three components」;:105,搜「real usage」)。

  23. 出处:「Fine-Tuning for Specific Domains」第 113 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:113,搜「domain experts」)。

  24. 出处:「Fine-Tuning for Specific Domains」第 121、123 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:121,搜「snapshot of knowledge at training time」;:123,搜「far more accurately」)。

  25. 出处:「Fine-Tuning for Specific Domains」第 127 段(text/07-ch04-chapter-4-fine-tuning-for-specific-domains.txt:127,搜「embedding model used for retrieval」)。