跳到主要内容

reading-notes(通读笔记)——《大模型基础》2024 版

原文:text/01-ch01.txt ~ 23-ch06-05-6-5.txt,共 23 章约 32.8 万字符。行号=清洗文本行号,引用时用「章名」第 N 段 + 搜「短语」。

ch01 语言模型基础(text/01-ch01.txt,1418 行)

  • L3-30 开篇:语言是概率的;语言模型=预测语言符号的概率;ELIZA→GPT-4,规则→统计→神经网络。
  • 1.1 n-grams(L31-272):
    • L45-134:n-gram=长度 n 的词序列;bigrams 长颈鹿例:5 句语料库(L74-85),P(长颈鹿脖子长)=2/5×2/6=2/15(L106-112);「没直接出现也能算出概率」=泛化;trigrams 零概率(L121-123);n=拟合能力与泛化能力的权衡(L124-131);平滑(Smoothing)改善零概率。
    • L142-259:原理=n 阶马尔可夫假设(定义1.1 L153)+极大似然估计(定义1.2 L160);链式法则(L184);推导出「频率=极大似然估计」(L200-259)。
    • L261-272:结论段——神经网络不用显式公式,靠训练。
  • 1.2 RNN(L274-526):
    • L290-307:前馈 vs 循环传播范式;RNN 环路把历史叠加到当前。
    • L343-351:长颈鹿例——FNN 只看「脖子」会预测「短」「疼」;RNN 连「长颈鹿」一起考虑→预测「长」。
    • L362-410:训练难点=矩阵联乘→梯度消失/爆炸(WH 最大特征值 <1 消失、>1 爆炸);GRU/LSTM 门控解决。
    • L412-526:RNN LM 每步 P(wi+1|wi,hi-1);输出向量每维=词典词概率;例:P(长颈鹿脖子长)=0.2×0.6=0.12(L448-452);交叉熵损失;自回归生成(L475-490);两问题:错误级联放大+串行低效(L492-499);Teacher Forcing(每轮拼标准答案,L500-506);曝光偏差 Exposure Bias(L508-522);Scheduled Sampling 缓解。
  • 1.3 Transformer(L527-776):
    • L543-595:两种模块=注意力+全连接前馈;Q/K/V 编码,α=softmax(sim(qt,ki));注意力=加权平均把前文叠到当前。
    • L598-610:FFN 占近 2/3 参数、掌管记忆,是 Key-Value 记忆模块(引 Geva 2021)。
    • L612-640:层正则化加速训练;残差连接解决梯度消失。
    • L642-666:Post-LN(抗表征坍塌强/梯度消失弱) vs Pre-LN(反之)。
    • L668-689:原始 Transformer=Encoder-Decoder,各 6 层;Decoder 两个注意力(自+交叉,交叉的 K/V 来自最后一级 encoder)。
    • L698-709:三种预训练配方:Encoder-only+掩词补全→BERT;Enc-Dec+截断补全/顺序恢复→T5;Decoder-only+下一词预测→GPT-3。
    • L772-776:Transformer 可并行,但规模随序列长度平方增长→长序列挑战。
  • 1.4 采样(L778-1059):
    • L802-806:概率最大化搜索空间 M^D,NP-Hard,只能启发式。
    • L808-830:贪心搜索「只顾眼前利益」;长颈鹿故事例:首词选最高 0.3 的「是」→整句 0.03;选第二的「脖子」0.2→「长」0.5→0.1 更高。
    • L832-869:波束搜索 b=2:候选 是草食0.03/是反刍0.027/脖子长0.1/脖子优雅0.04→选脖子长。
    • L871-885:概率最大=最常见=平庸;开放式生成易出「废话文学」(重复且平庸),要加随机。
    • L900-963:Top-K 固定 K 的两难:分布方差大→选到离谱词(「长颈鹿有四条裤子」,0.02 的裤子进了 Top-2);方差小→固定候选装不下相近概率的词(打架/睡觉被 Top-2 排除)→枯燥。
    • L967-1001:Top-P(Nucleus)按累计概率阈值 p 选候选:0.9 阈值既避免裤子又容纳打架睡觉。
    • L1003-1059:Temperature:对 softmax 自变量除 T;T>1 分布平坦随机强,0<T<1 强者恒强弱者恒弱。
  • 1.5 评测(L1060-1342):
    • 内在:困惑度 PPL(L1076-1120),模型对测试文本越「肯定」PPL 越小;=交叉熵的指数;困惑度减=熵减=胡言乱语可能性降低。
    • 外在:统计指标 BLEU(精度导向,机器翻译,n-gram 精度几何平均;例「大语言模型」→big language models vs 参考 large language models:P1=2/3,P2=1/2 L1168-1172)、ROUGE(召回导向,摘要;N/L/W/S 四种,LCS)。
    • 基于语言模型:BERTScore(上下文词嵌入算相似度,仍需参考文本)、G-EVAL(GPT-4 当裁判,无需参考答案;prompt 三部分:任务描述+评分标准/评测步骤(Auto CoT)/待评文本;直接得分区分度不够→对所有可能得分加权平均 L1318-1321);InstructScore 给评分+解释。
  • L1397-1418:文件尾部带出了第 2 章的开篇段(数据/算力爆发→LLM 时代,AIGC)。
  • 术语注意:书用「标记 Token」留到第三章;「层正则化」=LayerNorm;书把 sampling 叫「解码」。

2.1 大数据+大模型→新智能(text/02-ch02-01-2-1.txt,284 行)

  • L13-17:截至 2024-06 国内外超百种 LLM;图2.1 时间线三阶段:萌芽期 2017-18(Transformer/BERT/GPT-1)、发展期 2019-22(GPT-2/T5/GPT-3)、突破期 2022-(InstructGPT/ChatGPT/GPT-4/Gemini/Claude3/Baichuan2)。
  • 2.1.1 能力增强(L58-185):
    • L76-82:扩展法则 Scaling Laws 两条:Kaplan-McCandlish(OpenAI 2020)、Chinchilla(DeepMind 2022)。
    • L86-130:Kaplan:数据 22M23B token、模型 7681.5B 参数;L(D)、L(N) 幂律(式2.1/2.2,αD≈-0.095, αN≈-0.076);同规模下架构影响相对较小;C≈6ND;最优分配 N∝C^0.73, D∝C^0.27(算力增 10 倍→模型 5.37 倍、数据 1.86 倍)。
    • L139-185:Chinchilla:7000 万1600 亿参数、50 亿5000 亿 token;L(N,D)=E+A/N^α+B/D^β(E=1.69,A=406.4,B=410.7,α=0.34,β=0.28);N∝C^0.46, D∝C^0.54,数据与模型同等重要;算力 10 倍→各扩 3.16 倍;理想数据=20×模型规模(7B→140B token);反例:GPT-3 175B 只用 300B token,MT-NLG 530B 参数只用 270B token;Chinchilla 70B 参数+1.4T token 性能突破;PaLM 2 报告佐证。
  • 2.1.2 能力扩展(L186-284):
    • 涌现能力 Emergent Abilities:非专项训练获得,随规模凭空出现;突变性、不可预见性,类似相变(L219-223)。
    • GPT 系列四能力随规模:上下文学习/常识推理/代码生成/逻辑推理——20 亿→130 亿→1750 亿参数逐级解锁(L215-217 图2.2:20亿/130亿/1750亿)。
    • L11-17(文件尾):挑战:可解释性、安全隐私、伦理公平、算力需求。

2.2 架构概览(text/03-ch02-02-2-2.txt,411 行)

  • L21-35:Transformer=划时代转折点;自注意力擅长长距离依赖+并行;三架构:Encoder-only/Encoder-Decoder/Decoder-only。
  • 2.2.1(L37-223):
    • Encoder-only 三段:输入编码(分词/词嵌入/位置编码)+特征编码(编码块堆叠,自注意力+FFN)+任务处理(输出头按任务定制);判别任务加分类器;生成任务逐 token 预测,每次生成要重算整个输入→成本高、连贯性差(L95-99)。
    • Encoder-Decoder:加解码器+交叉注意力;解码器=掩码自注意力(只看上文不「预见」未来→无下文泄露地自回归)+交叉注意力+FFN;输出生成=线性层+Softmax 采样;训练:输出前加 [START],Teacher Forcing 并行;推理:自回归串行直到 [end] 或最大长度(L103-188)。
    • Decoder-only:去掉编码器与交叉注意力,规模小计算省;三段=输入编码+特征解码+输出生成(L189-223)。
  • 2.2.2 功能对比(L225-346):
    • 注意力矩阵:Encoder-only「完全/双向」;Enc-Dec 编码器完全+解码器下三角+交叉;Decoder-only「下三角」单向。
    • 适用任务:Enc-only→NLU(情感/分类);Enc-Dec→复杂有条件生成(翻译/摘要/问答)但规模大;Decoder-only→无条件生成强、小规模时理解受限,大规模后成「大一统」架构(L338-346)。
  • 2.2.3 历史演变(L348-412):2018 BERT(Enc-only)更亮眼→Enc-only 被冷落;2019 末 Enc-Dec 成主流(seq2seq);2021 后 GPT-3 推动 Decoder-only 主导;更迭原因=生成能力与计算效率;Enc-only 生成要多次前向传播填掩码→耗算力;Enc-Dec 长序列双端负担;Decoder-only 参数少、自回归逐步生成→可扩展、适配 AIGC。

2.3 Encoder-only(text/04-ch02-03-2-3-encoder-only.txt,454 行)

  • L19-48:双向编码=正向+反向注意力,「全面注意力」;对比 Word2Vec/GloVe 静态向量→动态上下文嵌入 Contextual Embedding,解决多义词。
  • 2.3.2 BERT(L52-199):
    • 结构与 Transformer 编码器几乎一致;BERT-Base 12 层/768 维/12 头/1.1 亿参数;BERT-Large 24 层/1024 维/16 头/3.4 亿(L70-76)。
    • 数据:BookCorpus 8 亿 token+维基 25 亿=33 亿 token,15GB(L80-83)。
    • 预训练任务:MLM 掩码语言建模(随机掩 ~15% token,完型填空;只对被掩 token 算损失)+NSP 下文预测(50% 连续句 vs 50% 随机句;[CLS]/[SEP] 标签;水豚例图2.7)(L84-150)。
    • 下游:[CLS]=Classification Token,聚合全序列→定长向量;分类:取[CLS]+全连接;问答:「[CLS]问题[SEP]文本[SEP]」两个全连接输出答案起止位置;相似度:余弦(L158-191)。
  • 2.3.3 衍生(L201-455):
    • RoBERTa(2019.07,Meta):解决 BERT 训练不充分;结构同;数据 160GB(+CC-News/OpenWebText/Stories);去 NSP;静态掩码→动态掩码(10 个副本各训 4 次 vs BERT 静态掩码训 40 次)。
    • ALBERT(2019.09,Google):轻量化;参数因子分解(V×H 2304 万→V×E+E×H 394 万,1/6;Large 版 1/8)+跨层参数共享(只学第一层,牺牲部分性能);NSP→SOP 句序预测(正序 vs 反序);四版本 0.12/0.18/0.6/2.2 亿。
    • ELECTRA(2020.03,Google Brain+斯坦福):生成器-判别器(GAN 思想);生成器=MLP 恢复掩码,判别器=替换词检测 RTD 判断每个 token 是否被替换;训练信号从 15% 扩到全部 token→样本效率高;0.28/2.2/6.6 亿;Large 用 330 亿 token(ClueWeb/CommonCrawl/Gigaword)。
    • 表2.1(L28-33)+L17-27 结论:Encoder-only 参数止步 6.6 亿,只擅判别任务,生成式时代作用有限。

2.4 Encoder-Decoder(text/05-ch02-04-2-4-encoder-decoder.txt,327 行)

  • 2.4.1(L43-109):编码器=Enc-only 编码器(双向);解码模块=掩码自注意力+交叉注意力+FFN;掩码防「泄露/窥视未来」;交叉注意力=query 来自解码器,K/V 来自编码器。
  • 2.4.2 T5(2019.10,Google)(L111-233):
    • 动机:NLP 任务各自定制=「重复造轮子」;统一文本到文本框架,输入前缀指示任务=早期 Prompt 技术(L130-139;图2.11:翻译成中文:/总结以下内容:)。
    • 五版本:Small 6000 万/6+6 层 512 维 8 头;Base 2.2 亿;Large 7.7 亿;3B 28 亿(头 32,FFN 中间层×4);11B 110 亿(头 128,再×4)(L159-177)。
    • 数据:C4(Colossal Clean Crawled Corpus)约 750GB(L181-189)。
    • 预训练:Span Corruption——15% token 破坏、每 3 个连续 token 成 span 掩成 [MASK],要预测整个片段(比 BERT 单 token 难)(L191-207)。
    • 下游:零样本+Prompt 或微调(微调贵,只用于高精度场景);变体:mT5(100+语言)/T0(多任务零样本)/Flan-T5(指令微调)(L211-233)。
  • 2.4.3 BART(2019.10,Meta)(L234-328):
    • 与 T5 相反思路:不统一任务,而是多样化破坏任务提升生成与理解;结构=原始 Transformer;Base 6+6 层 768 维 1.4 亿;Large 12+12 层 4 亿。
    • 数据=RoBERTa 同款 160GB;五个破坏任务:Token 遮挡(类 MLM)/Token 删除(推断位置+内容)/连续文本填空(span 长度服从 λ=3 泊松分布)/句子打乱(句间关系)/文档旋转(找合理起点)(L268-328;水豚例图2.12)。

2.5 Decoder-only(text/06-ch02-05-2-5-decoder-only.txt,727 行)

  • L33-70:开放式生成输入简单→完整编码器不必要;Dec-only 自回归逐字生成、轻量;概念最早=GPT-1(2018),GPT-3(2020)后普及;GPT 系闭源 vs LLaMA 开源。
  • 表2.3(L91-98):GPT-1 2018.06 1.17 亿/5GB;GPT-2 2019.02 1.2415 亿/40GB;GPT-3 2020.05 1.251750 亿/1TB;ChatGPT 2022.11 未知;GPT-4 2023.03;GPT-4o 2024.05。
  • GPT-1(L100-224):Ilya 采访:OpenAI 早期就想用下一词预测解决无监督学习,RNN 长依赖不行,2017 Transformer 指明方向;12 解码块/768 维/12 头/1.17 亿;与 BERT-Base 结构高度类似,本质区别=掩码单向 vs 双向(图2.13);BookCorpus 8 亿 token(5GB);下一词预测;下游要微调(分类/相似度/多选);四个月后 BERT 出现遮盖其锋芒。
  • GPT-2(L226-279):四版本 Small 1.24 亿(12 层)/Medium 3.55 亿(24)/Large 7.74 亿(36)/XL 15 亿(48 层,表2.4 写 36 头);WebText 40GB 精挑网文;部分任务可零样本。
  • GPT-3(L281-346):涌现 ICL,不微调仅任务描述+少量示例;最高 1750 亿(96 解码块/12288 维/96 头);数据近 1TB(CommonCrawl/WebText/BookCorpus/Wikipedia)。
  • InstructGPT 等(L348-451):Codex=十亿行代码继续预训练;InstructGPT=用户偏好对齐,ChatGPT 前身;RLHF 三步:①有监督微调(问题-人类回答对)②训练奖励模型(多候选人工排名→偏好数据集)③强化学习微调(PPO,奖励模型打分)(L367-385;水豚例图2.15,偏好顺序 输出2>输出4>输出1=输出3);RLHF 贵:奖励模型训练复杂+双模型联合训练;DPO(斯坦福 2023):直接用偏好数据训练,省奖励模型与 RL,效率高、复杂偏好略逊。
  • ChatGPT/GPT-4/GPT-4o(L453-497):ChatGPT 2022-11「一鸣惊人」,图灵测试讨论;LLMaaS(LLM as a Service)新服务模式;闭源无从窥探;GPT-4(2023-03)复杂语境/数学/编程+图文双模态;GPT-4o(2024-05)速度/延迟/多模态/多语言;6 年从科幻到现实。
  • LLaMA(L499-727):开源共创;LLaMA 主线=模型规模稳定、提升数据规模;GPT=规模与语料同步提。表2.5:LLaMA-1 2023.02 67/130/325/652 亿·5TB;LLaMA-2 2023.07 70/130/340/700 亿·7TB;LLaMA-3 2024.04 80/700 亿·50TB。
    • LLaMA1:Chinchilla 指引「小模型+大数据」;RoPE 旋转位置编码(参考 GPTNeo);SwiGLU 替换 ReLU(参考 PaLM);Pre-Norm(参考 GPT-3)(L545-581);4 版本 7B/13B/32B/65B(表2.6,652 亿=65B)。
    • LLaMA2:语料 7TB;RLHF:公开指令微调数据 SFT→奖励模型→PPO+拒绝采样;34B/70B 加 GQA 分组查询注意力(一组 query 共享 K/V→省内存省参数)(L595-628)。
    • LLaMA3:50TB=LLaMA2 的 7 倍;含代码+5% 非英文 30+语言;80 亿版超 LLaMA2 700 亿版;700 亿版多任务超 GPT-4;架构几乎同 LLaMA2,词表扩 3 倍(中文少拆 token)(L630-665)「充分证明了数据的力量」。
    • 衍生三类(L667-718):性能改进(Alpaca=GPT-3.5 生成指令数据微调;Vicuna=ShareGPT 对话数据;Guanaco=QLoRA)/垂域(CodeLLaMA 代码;LawGPT 30 万法律问答;GOAT 数学;Cornucopia 金融)/多模态(LLaVA=CLIP+线性投影;MiniGPT4=VIT-G/14+Q-Former)。

2.6 非 Transformer 架构(text/07-ch02-06-2-6-transformer.txt,567 行)

  • L25-44:Transformer 并行输入→规模随序列长度平方增长→长序列瓶颈;RNN 理论无限长但梯度问题;两类现代变体:SSM 状态空间模型、TTT 测试时训练,均为线性复杂度。
  • 2.6.1 SSM(L46-384):
    • SSM(L56-165):思想源自控制理论动力系统;三个变量 x(t)/u(t)/y(t)+四矩阵 A 状态/B 控制/C 输出/D 命令(式2.5);Du(t)=残差可忽略;连续形式慢→离散化是关键步骤(梯形法):递归形式(类 RNN,推理线性、不可并行训练)+卷积形式(卷积核 K̄=(C̄B̄,C̄ĀB̄,…),时不变→可并行训练、自回归延迟长);训练用卷积形式、推理用递归形式(L147);S4=HiPPO 矩阵初始化 A,长序列优。
    • RWKV(L166-278):Receptance Weighted Key Value;WKV=两个 SSM 之比(式2.10);R 接收/K 键/V 值/W 时间衰减权重 wt,i=-(t-i)w;时间混合模块(时间步间)+通道混合模块(同时间步特征通道间;通道=向量每个元素);Token 位移=当前与前一步线性插值;时间依赖 Softmax;14B,第一个扩展到数百亿参数的非 Transformer 架构;训练可表示为 Transformer、推理为 RNN(恒定计算/内存);性能与同级 Transformer 相当,长上下文仅次于 S4。
    • Mamba(L280-384):时不变→处理信息密集数据(文本)弱;选择机制:B,C,Δ 变成输入的函数(sB/sC=LinearN,sΔ=BroadcastD(Linear1),τΔ=softplus),参数带时间维度→时变,失去平移不变/卷积效率;硬件感知算法:内核融合(减内存 I/O)+并行扫描+重计算(反向传播重算中间状态省内存);SSM 参数从 HBM 加载到 SRAM 计算;训练线性、推理每步常数;A100 上推理吞吐比同规模 Transformer 高 5 倍;Mamba-3B 超两倍参数量 Transformer;能处理百万级序列;Mamba 模块=前馈层中插卷积层+选择 SSM,激活 SiLU/Swish。
  • 2.6.2 TTT(L386-452):SSM 压缩进固定长隐藏状态→过长饱和(Mamba 上下文超 16k 困惑度基本不再下降);TTT=用模型自身参数当隐藏状态记上文,推理时每步对参数做梯度更新(一边循环训练一边推理);预训练双循环:外部循环=下一词预测优化全局权重,内部循环=自监督优化隐藏状态(重构损失 ℓ(Wt-1;xt)=‖f(θK xt;Wt-1)-θV xt‖²,梯度下降 Wt=Wt-1-η∇ℓ);推理只做内部循环;线性复杂度+比 SSM 更能捕捉超长上下文。
  • 文件尾 L548-568:第 3 章 Prompt 工程开篇:大模型突破泛化瓶颈+指令跟随→Prompt 引导适应下游任务,免微调高成本;Prompt 工程=连接模型与任务需求的桥梁。

3.1 Prompt 工程简介(text/08-ch03-01-3-1-prompt.txt,396 行)

  • L3-17:范式转变:「预训练-微调-预测」→「预训练-提示预测」;Prompt 设计影响性能。
  • 3.1.1 定义(L21-61):Prompt=指导生成式 AI 执行特定任务的输入指令(自然语言);小浣熊干脆面例:生成/文生图/分类。
  • 3.1.2(L63-162):Prompt 工程=设计+优化 Prompt;核心=把新任务构建成模型预训练时熟悉的形式;图3.3 优化前后对比(加示例+JSON 输出格式,情感判断从「负面」变「积极」——例子显示格式化 Prompt 改变判断结果);好 Prompt 四元素:任务说明/上下文/问题/输出格式;Prompt 变长→推理慢成本高;LLMLingua 压缩至 1/20 几乎不损性能;FIT-RAG 压缩检索内容至 50%。
  • 3.1.3 分词向量化(L163-328):
    • Token=承载语义的最小单元,Token ID 唯一标识;分词 Tokenization;图3.4 DeepSeek-V2 例:「小浣熊吃干脆面」→BOS+小+æµ+£+熊+吃+干脆+面(ID 100000/1312/1103/96/21172/3424/65553/1359)→嵌入向量。
    • 一句多种拆法,拆错致语义混乱;词表+分词算法:BBPE/BPE/WordPiece;BBPE 四步:①按底层编码拆字节为初始 token②统计相邻 token 对频率③合并最高频对成新 token④迭代至词表大小达标。
    • 词表过小(256 单字节):形近义远难区分、序列变长;过大:长尾词学不深、丢形态关联;「干脆」1 个 token;「浣」用 2 个 token(æµ+£)。
    • 表3.1 分词器对比(中文语料《朱自清散文》、英文《项链》):LLaMA1/2 词表 32000 中文 0.6588 字/Token;LLaMA3 128256→1.0996;DeepSeek-V1/V2 100016→1.2915;Qwen-1.5 151646→1.2989(每字仅 0.7 个 Token);GPT-3 50257 中文 0.4858;英文有 ly/ist 后缀 token,一单词≥1 token;单 token 承载语义多→输出 token 少→推理效率高。
  • 3.1.4 意义(L330-397):三领域:①垂域任务(Text-to-SQL Spider 榜超越微调;MMLU)②数据增强(合成推理数据蒸馏到小模型;Alpaca/Evol-Instruct 数据集)③智能代理(感知环境/自主行动/学习;斯坦福 GPT-4 虚拟西部小镇,运转全由 Prompt 驱动)。

3.2 上下文学习(text/09-ch03-02-3-2.txt,374 行)

  • L9-24:ICL 涌现;给任务说明/示例即可掌握新任务;免微调;为 LLM as a Service 奠基。
  • 3.2.1 定义(L26-141):ICL=构造含演示示例+任务说明的 Prompt,模型从上下文学任务逻辑,无额外训练;小浣熊例:情感分类+数学(8-6=2 示例→24-2×5=14);三形式:零样本(仅任务说明,泛化强但全赖模型能力)/单样本(举一反三,强依赖示例代表性)/少样本(几个~十几个,效果最好但推理成本高);为何奏效:斯坦福研究「隐式贝叶斯推理」——示例把模型「锚定」到预训练学到的相关概念(L124-141)。
  • 3.2.2 示例选择(L142-273):两原则:相似性(关键字/语义/结构)+多样性;三方法:
    • 直接检索:KATE——RoBERTa 编码问题与候选(去标签),余弦相似度取 top-K;简单但趋同。
    • 聚类检索:Self-Prompting——K-Means 聚 K 簇,每簇取与问题最相似的 1 个;多样性好但部分簇相似性不够。
    • 迭代检索:RetICL——LSTM 检索器,依当前问题+已选集更新内部状态逐个选;兼顾两者,计算复杂。
  • 3.2.3 性能影响因素(L275-375):
    • 预训练数据:领域丰富度(单领域限适应)、任务多样性、分布特性(突发性分布+罕见类别增强 ICL)。
    • 模型:参数达亿级以上 ICL 才涌现;已知最小=Qwen2-0.5B(5 亿);规模越大越强。
    • 示例:格式(复杂推理任务要思维链示例);输入-输出映射错误:大模型更敏感(会跟着错),小模型不敏感;数量↑性能↑但边际递减,生成任务比分类更受益;顺序影响显著且最优顺序有模型依赖性;任务说明质量直接影响。

3.3 思维链(text/10-ch03-03-3-3.txt,301 行)

  • L3-21:Flat Scaling Curves——算术/常识/符号推理上,规模增长不带来性能突破;CoT 模拟人类逐步推理,突破此限制。
  • 3.3.1 定义(L23-110):CoT=生成中间推理步骤;早期=少样本示例(手写推理过程供模仿;图3.10 大白兔奶糖 12-4+6=14 例);CoT 下复杂问题能力随参数变大而增强;三模式:按部就班(CoT/Zero-Shot-CoT/Auto-CoT)、三思后行(ToT/GoT)、集思广益(Self-Consistency)
  • 3.3.2 按部就班(L112-209):
    • 原始 CoT:手工构造推理示例;费时费力、依赖编写质量。
    • Zero-Shot CoT:触发词「Let's think step by step/让我们一步一步思考」;两阶段:①问题+触发词→生成推理链 ②问题+推理链+「Therefore, the answer is/因此,最终答案为」→输出答案(图3.12 浣熊 8-3=5,+6-2=4)。
    • Auto-CoT:问题聚类→从簇中选问题→Zero-Shot CoT 自动生成推理链示例→示例+触发词答用户问题(图3.13);全自动无手工标注。
  • 3.3.3 三思后行(L211-301):
    • ToT 思维树四要素:拆解(子问题粒度按任务:数学=一行等式,写作=提纲)/衍生(样本启发=宽思维空间 vs 命令提示=限制空间)/评估(投票 vs 打分)/搜索(DFS/BFS/A*/蒙特卡洛树);24 点例(图3.14:4 9 10 13→10-4=6 剩 6 9 13 等,广度优先遍历评估「可以/可能/不可能」)。
    • GoT 思维图:树→有向图,顶点=解决方案,有向边=构造思维;新增思维自我评估修正+思维聚合

3.3.4+3.4 Prompt 技巧(text/11-ch03-04-3-4-prompt.txt,752 行)

  • 3.3.4 集思广益(L1-51):Self-Consistency 三步:①随机采样下生成多条推理路径②收集各路径最终答案、统计频率③选最高频=最一致答案;与其他 CoT 兼容(图3.15:三条路径 4/9/4→多数投票选 4)。
  • 3.4.1 规范编写(L62-338):四要素实例化(图3.16 情感分类:任务说明/问题/上下文=3 示例/输出格式 JSON);①任务说明明确:明确动词(判断/分类/生成,勿「处理」)、具体名词、简洁;结构化布局:任务说明放开头和结尾——模型更关注首尾(L162-166 引 [18]);②上下文丰富且清晰:示例与问题紧密相关,冗余信息加重负担(图3.18 对照);③输出格式规范:JSON/XML/HTML/Markdown/CSV;不指定→自由文本难解析;给格式示例指明关键字;④排版清晰:一致分隔符(#/###/—)、空白缩进、标题;图3.20 去掉分隔符→模型把示例当输入批量分类输出 JSON 数组(答案崩坏的好例子)。
  • 3.4.2 合理归纳提问(L340-537):
    • 复杂问题拆解=分而治之:分步引导+归纳总结;例:小浣熊吃几包干脆面→拆「一天多少热量」(600-900 千卡)×「一包干脆面热量」(250-350 千卡)→800÷300≈2.7 包。
    • 追问三形式:深入追问(挖深层;去除调味料行不行→油炸高脂肪仍不宜)/扩展追问(拓宽广度;能不能当零食)/反馈追问(指错修正;吃 20 包后呕吐→模型道歉改口+急救建议)。
  • 3.4.3 适时使用 CoT(L538-666):
    • 何时:任务类别(复杂推理适用;情感分类/常识问答不必);模型规模:千亿级(PaLM/GPT-3)显著提升,小模型可能逻辑不连贯反而更差(图3.26:十亿参数模型算出 5+4=9 包——推理链前面对、结论错);模型能力:未经推理指令微调的(GPT-3 早期/PaLM/LLaMA2-13B-Base/Baichuan2-13B-Base)CoT 提示有效;已经指令微调的(ChatGPT/GPT-4/LLaMA2-13B-Chat)无提示也自发生成推理链,有时无 CoT 指令反而更好——已内化 CoT
    • 灵活:调整详细程度(Few-shot 示例控制输出风格,图3.27 金丝猴例子);按场景选形式:逻辑分析→Zero-Shot/Auto CoT;高可靠→Self-Consistency(代码多版本);创意→ToT/GoT(故事情节探索)。
  • 3.4.4 善用心理暗示(L667-752):「Fake it till you make it」类比;①角色扮演:设定具体角色(属性/职责/知识/技能),选对任务有优势的角色;小浣熊营养顾问例:不能吃→偶尔当零食+搭配水果蔬菜;②情景代入:嵌入情境/历史背景;90 年代街头例:从「味道丰富」变「水浒卡收集、一代人情感记忆」。

3.5 相关应用(text/12-ch03-05-3-5.txt,554 行)

  • 3.5.1 Agent(L33-166):Agent=自主感知环境采取行动实现目标;LLM 作核心控制器;经典框架四模块:配置 Profile(角色扮演,设定嵌入每次 Prompt)/记忆 Memory(检索增强获取,ICL 构造查询)/计划 Planning(思维链分解任务,少样本调控子任务粒度)/行动 Action(工具 API,调用示例作上下文让模型生成调用代码)(图3.30 小浣熊健康助理:兽医角色→规划子任务→记忆查习性/急救→搜索医院+地图路线→汇总);斯坦福虚拟西部小镇(Generative Agents);HuggingGPT(ChatGPT 控制器拆任务调 HuggingFace 模型)。
  • 3.5.2 数据合成(L168-292):Garbage in, Garbage out;公共高质量语言数据预计 2026 年左右耗尽(Villalobos,引 [33]);Self-Instruct 五步:①构建任务池(人工 175 个种子指令)②指令生成(随机抽 8 个指令作少样本上下文)③指令分类(分类任务 vs 生成任务)④数据生成(分类任务先生成标签再生成输入;生成任务先输入再回答)⑤数据过滤(启发式去低质/高重复),2-5 循环;意义:缓解数据枯竭+泛化+隐私+蒸馏小模型。
  • 3.5.3 Text-to-SQL(L293-425):自然语言→SQL;传统预训练-微调需大量数据难泛化;C3 方法(首个 LLM 零样本 Text-to-SQL)三部分:清晰提示 Clear Prompting(清晰布局+清晰上下文=Schema Linking 只召相关表列)/提示校准 Calibration with Hints(角色扮演 SQL 专家+先验知识 Tips)/一致输出 Consistent Output(Self-Consistency 采样多条 SQL 按执行结果投票)(图3.32/3.33;Peter 主人例)。
  • 3.5.4 GPTs(L427-454):OpenAI 自定义 GPT 应用;Description/Instructions(预设 Prompt)+知识库+能力(搜索/图像生成/代码解释);可分享。
  • ch03 参考文献 [1]-[48]。

ch04 参数高效微调(text/13-ch04.txt,1397 行)

  • L1-19:动机:垂直领域提示工程不够→要微调,但参数量巨大成本高→PEFT。
  • 4.1.1 下游任务适配(L38-137):
    • 上下文学习缺点:性能与微调有差距+Prompt 设计人力成本高、不同 Prompt 性能差异大;推理代价随示例增多快速增加(L81-89)。
    • 指令微调:指令数据构建两法:数据集成(模板转换,Flan/P3)+LLM 生成(GPT-3.5/4 扩展,InstructWild/Self-Instruct);监督微调=顺序预测输出 token。
    • LLaMA2-7B 全量微调需近 60GB 内存,RTX4090(24GB)做不了(L130-137)。
  • 4.1.2 分类(L139-190):三类:参数附加(Adapter/Prompt/Prefix/Proxy-tuning)、参数选择(BitFit/Child-tuning/FishMask)、「抓住主要矛盾」、低秩适配(LoRA/AdaLoRA/DyLoRA/DoRA)。
  • 4.1.3 优势(L192-239):计算效率/存储效率/适应性强;表4.1(A100 80GB):T0_3B 全量 47.14GB vs LoRA 14.4GB;mt0-xxl 12B 全量 OOM vs LoRA 56GB;bloomz-7b1 全量 OOM vs LoRA 32GB
  • 4.2 参数附加(L241-573):
    • 4.2.1 加在输入:Prompt-tuning=软提示 Soft prompt(可微连续张量拼在输入嵌入前,P∈R^{m×d}),只训 P;长度 1-200,20+ 有性能保证;词表 token/类名初始化优于随机;原动机=自动学提示词(硬提示不可微,找「咒语」费时);优势:T5-XXL 11B 参数→软提示仅 20480 个(长度 5);单冻结模型多任务(每任务只存小提示,可混合推理);10B 规模接近全参微调。
    • 4.2.2 加在模型:Prefix-tuning=前缀插入输入嵌入+每层注意力 K/V 前(Pk/Pv);不稳定→MLP 重参数化,训完丢 MLP 留前缀;Adapter-tuning=瓶颈结构(下投影 Wd d×r→非线性→上投影 Wu r×d+残差,式4.1),插在每多头注意力层和 FFN 层后;每层参数 2dr+d+r,r≪d;AdapterFusion 两阶段:①知识提取(ST-A 独立训练 vs MT-A 联合)②知识组合(融合模块=注意力,Q=全连接输出,K/V=适配器输出,式4.2;冻结语言模型+适配器,只训融合)。
    • 4.2.3 加在输出:Proxy-tuning=解码时算法;专家 M+(小模型微调后)与反专家 M− 的 logits 差加到代理大模型 M:s̃=sM+sM+−sM−(式4.3)再 softmax 采样;不需权重,黑盒模型适用;小模型知识迁移到大模型(7B 专家→13B/70B 代理)。
  • 4.3 参数选择(L575-715):不加参数→推理无额外成本;两类:
    • 基于规则:BitFit=只调偏置项+分类头,偏置占 0.08%-0.09%,GLUE 上媲美全量微调,可用更大学习率更稳;只在 BERT/RoBERTa 级小模型验证过,大模型未知;Lee 等只调最后 1/4 层→90% 全量性能;PaFi 选绝对值最小的参数。
    • 基于学习:Child-tuning=0-1 梯度掩码 Mt 只更新子网络(式4.5/4.6);F 变体=任务无关,伯努利分布采样掩码+噪声正则防过拟合;D 变体=任务驱动,费舍尔信息矩阵 FIM 估计参数重要性(式4.8),取前 pD 比例;缺点:FIM 计算耗时;其他:Fish-Dip(动态重算)、LT-SFT(彩票假设)、SAM。
  • 4.4 低秩适配(L717-980):
    • 前提:低维固有维度假设——过参数化模型固有维度低,存在与全参更新媲美的低维更新
    • LoRA:ΔW=αBA,B d×r 高斯初始化,A r×k 零初始化(初始时 BA=0,训练从原模型出发);训练参数 r×(d+k)≪d×k;原论文用于注意力层,后续 FFN 更好;不增加推理延迟(可合并);可插拔。
    • 参数效率案例:LLaMA2-7B 第一个 FFN 层:全量 11008×4096=45,088,768 参数 vs r=4 时 60,416(不到千分之一);显存四部分:权重/激活/梯度/优化器内存;RTX4090 24GB:全量约 60GB 放不下,LoRA 约 23GB 可行;优化器内存省约 25GB、梯度内存省约 14GB,增量参数多占约 2GB;速度 1.9 倍
    • 变体三方向:①打破低秩瓶颈(全量微调的秩是 LoRA 的 10-100 倍;ReLoRA=merge-and-reinit 周期合并+重初始化,累积成高秩)②动态秩分配(秩非越高越好;AdaLoRA=SVD 参数化 PΛQ+奇异值剪枝+正交惩罚项)③训练过程优化(LoRA 收敛慢、超参敏感、易过拟合;DoRA=权重分解为大小 m×方向 V,只对方向施加 LoRA)。
    • LoRAHub:组合阶段=逐元素线性加权组合多任务 LoRA(式4.15);适应阶段=无梯度方法 Shiwa 学权重;跨任务泛化。
  • 4.5 实践与应用(L981-1261):
    • HF-PEFT 框架:集成 LoRA/Adapter/Prompt-tuning/IA3;与 Transformers/Diffusers/Accelerate 集成;兼容量化;五步流程;技巧:Prompt Tuning num_virtual_tokens 10-20;LoRA r 常 4/8/16(小数据更小)、lora_alpha 与 r 成反比、lora_dropout 0.01、target_modules。
    • 应用:FinSQL 金融 Text-to-SQL(提示构造/PEFT 微调 LoRAHub 融合/输出校准=语法修正+Self-Consistency);TabLLM 少样本表格分类(表格序列化为自然语言+LoRA 微调;超梯度提升树)。
  • 文件尾(L1382-1398):第 5 章开篇:模型编辑动机——回炉重造成本过高/继续教育(微调注知识)易过拟合+灾难性遗忘→只修正特定知识点的模型编辑

5.1 模型编辑简介(text/14-ch05-01-5-1.txt,363 行)

  • L3-48:三类问题:偏见/毒性/知识错误;斑马皮肤例:ChatGPT 答「肉色」,实际黑色(图5.1);重预训练(洗数据成本高+知识会过期+算力巨大)与微调(新知识样本有限→过拟合+灾难性遗忘)都不适用。
  • 5.1.1 思想(L56-82):《三体2·黑暗森林》「思想钢印」类比——让接受者接触特定信息时修改大脑处理过程输出正向答案;类比人类学习:预训练=体验世界形成知识体系,微调=专门学科学习,编辑=与人交流纠正特定知识点的错误认知。
  • 5.1.2 定义(L83-145):统一术语:KME/KE→模型编辑 ME;编辑对象统一叫「知识点」;定义5.1:M*(x)=yk 若 x=xk 或相关,M(x) 若无关;难点=知识内在关联性,「牵一发而动全身」→如何精确控制编辑范围是关键挑战
  • 5.1.3 五性质(L147-305)(图5.3 斑马例贯穿):
    • 准确性 Acc:「斑马的皮肤是什么颜色的?」→黑色(式5.1 指示函数);
    • 泛化性 Gen:同义改写「剃毛后的斑马/请告诉我斑马的肤色」→黑色(式5.2);
    • 可迁移性 Port:相关但答案不同的问题——反向问题(「皮肤为黑色的马是什么马?」)、推理问题(「皮肤颜色是否与毛发相同?」)、实体替换(「黑白条纹相间的马」);大多数编辑方法可迁移性差,是挑战;
    • 局部性 Loc:无关问题(赤兔马/斑马吃什么/鸵鸟会飞)输出不变(式5.4);局部性是编辑相较朴素微调的重要改进;
    • 高效性:时间/资源;批量并行编辑 vs 依次编辑。
  • 5.1.4 数据集(L307-363):表5.1:zsRE(最常用,244173 训/测,事实陈述→对象)、COUNTERFACT(2023,区分表面词汇变化 vs 基础事实的显著泛化修改,21919 测试)、WikiGen、T-REx、ParaRel(253448)、NQ-SituatedQA、MQuAKE(多跳)、Hallucination、MMEdit 多模态、FEVER 等 16 个。

5.2 模型编辑经典方法(text/15-ch05-02-5-2.txt,532 行)

  • L33-86:冒险游戏勇者类比——外部改造(置办装备保留原技能)vs 内部改造(锻炼自身加属性);分类:外部拓展法=知识缓存法+附加参数法;内部修改法=元学习法+定位编辑法(图5.4)。
  • 5.2.1 外部拓展法(L88-240):
    • 知识缓存法:三门组件=门控单元(判断输入与缓存知识相关度,分类/噪声对比估计训练)+编辑缓存(存知识)+推理模块(监督训练);推理时门控相关→推理模块,不相关→原始模型(图5.5:鸵鸟不相关走原模型,黑马问题相关走推理模块);存储形式三种:事实知识(问答对,SERAC)/自然语言补丁(「如果…那么…」句式,像 Prompt,便于人工增删)/正则表达式(早期,编写复杂泛化低);局限=「求助」而非内化
    • 附加参数法:思想同 PEFT 参数附加;CaliNET=最后一层 FFN 加参数矩阵(对比知识评估找错误);T-Patcher=最后 FFN 引入可训练神经元,每神经元对应一个知识点;GRACE=适配器形式插特定层(BERT 倒数第 2 层/GPT2-XL 第 36 层),codebook 键值存储(错误知识 Key+修正值 Value+延迟半径),持续更新;优势=最小化干预保局部性;代价=存储需求
  • 5.2.2 内部修改法(L241-483):
    • 元学习法:「学习如何编辑」;元知识 ω(优化器参数/超网络);元训练=双层优化(式5.5:内层=各编辑任务上优化模型参数 Ledit,外层=验证集上综合优化元知识 Lmeta);ENN=元知识为优化器参数(仅 ResNet 小网络);KE=元知识为超网络(损失=准确性+局部性两项);MEND=低秩分解优化(利用 FFN 梯度秩-1 特性,梯度分解为两向量乘积,超网络输入分解向量输出新向量再相乘+可学习缩放因子);不足=训练复杂、大模型成本高、全局视角更新可能伤原知识
    • 定位编辑法:前提=知识存储机制;16 层 Transformer 实验(图5.8):FFN=键值存储体——实验1:key 与所有 query 内积,激活大的 query 前缀模式相同(k2 对应「斑马的」结尾);实验2:value×输出嵌入+softmax→下一词概率分布与 query 下一词高度相关(v2→「条纹」);key 总结句子前缀特征,value=下一词概率分布;KN=知识神经元(FFN 每个中间激活值),归因方法积累梯度定贡献,改键向量;ROME=因果跟踪实验+更新整个 FFN 模块,GPT-J 上准确/泛化/局部均好;MEMIT=ROME 扩展到大规模(数千次同时编辑)。
  • 5.2.3 方法比较(L484-532):表5.2:SERAC 准/泛/局=高 但可迁移低、高效3(批量);T-Patcher 准/泛/迁=高 局中 7(依次);KE 低;MEND 中泛高;KN 中/低;ROME 四高+7;MEMIT 四高+3;T-Patcher 批量编辑内存需求高。

5.3 T-Patcher(text/16-ch05-03-5-3-t-patcher.txt,214 行)

  • L19-51:附加参数法代表;在最后一个 Transformer 层的 FFN 中添加「补丁」并训练;不改原始架构;ROME/MEMIT 主要针对 decoder-only 设计。
  • 5.3.1 补丁位置(L52-111):FFN=键值存储体(承接 5.2 结论);键 Wfc=[k1..kn] 偏置 bk+激活 σ+值 Wproj=[v1..vn] 偏置 bv;每个键对应特定文本模式(n-gram/语义主题),值关联输出概率分布;q 输入→a=σ(q·Wfc+bk)→FFN(q)=a·Wproj+bv(式5.6)=用激活值对所有值向量加权求和;隐藏层维度=「记忆」的文本模式数量→加键值对=插新事实;只在最后一层加=充分修改输出不被干扰。
  • 5.3.2 补丁形式(L113-134):补丁=键 kp+值 vp+偏置 bp;加入后 FFNp(q)=FFN(q)+ap·vp(式5.7);ap=补丁激活值=对输入查询的响应程度;ap·vp 形成偏置项叠加到原输出上;补丁=只被相关输入激活的小修正器
  • 5.3.3 补丁实现(L136-214):冻结原参数只训补丁;每个需要编辑的 Token 都加一个补丁;损失=准确性 LAcc+局部性 Lm:
    • LAcc=la+αle(式5.8):la 激活损失=exp(−qe·kp−bp)(最大化目标输入下激活);le 编辑损失=CE(ye,pe)(激活后输出对准目标 token)。
    • Lm=lm1+lm2(式5.11-5.13):记忆数据集 DM=随机保留的先前查询向量(与当前编辑无关);lm1=q·kp+bp−β(压无关 query 的激活);lm2=(qi−qe)·kp+bp−γ。

5.4 ROME(text/17-ch05-04-5-4-rome.txt,510 行)

  • L33-50:ROME=Rank-One Model Editing;因果跟踪+阻断实验→知识存于中间层 FFN
  • 5.4.1 因果跟踪实验(L52-208):控制变量:①正常推理(保存所有模块输出;「斑马的肤色是」→肉色)②干扰推理(对 s=「斑马」各 token 嵌入加噪声→内部混乱推不出答案)③恢复推理(逐个把某 token 在某层的输出恢复为干净值,记录答案概率增量=因果效应);知识元组 t=(s,r,o):(「斑马」,「的肤色是」,「黑色」);1000 个知识陈述上实验:中间层 Transformer 处理 s 的最后一个 token s(-1)(「马」)时因果效应显著,主要来自 FFN;注意力层主要贡献于末尾层处理 q(-1)
  • 阻断实验(L210-257):恢复某层 s(-1) 输出后,把后续 FFN(或注意力)冻结为干扰态;阻断 FFN→中间层因果效应消失;阻断注意力→仅小降;结论:知识存于中间层 FFN,在处理主体末 token 时起作用。
  • 5.4.2 知识存储机制假设(L259-298):Geva=FFN 键值存储体;Elhage=注意力头=信息复制单元,Query-Key/Output-Value 电路,写入残差流;Zhao=层可互换性能不变;ROME 假设三段:起始注意力层收集 s 信息汇入 s(-1) 向量→中间层 FFN 查询该表示把相关信息融入残差流→末尾注意力层整理生成输出;残差流=残差连接传播的信息流。
  • 5.4.3 精准编辑(L300-510):ROME 键=下投影矩阵的输入向量(FFN 激活后),值=输出向量(与 T-Patcher 相反:T-Patcher 键=上投影参数向量,值=下投影参数向量);三步:
    1. 确定键向量 k*:s 输入模型,读 s(-1) 在被编辑 FFN 激活函数后的输出;为泛化性,拼接随机前缀文本多次推理取平均(式5.15;图5.17「我是一只 AI 助手/她微笑着」等前缀)。
    2. 优化值向量 v*:把被编辑 FFN 输出视为可训练参数梯度下降;L(v)=L1+L2(式5.16-5.18):L1=交叉熵最大化目标 o 概率(不同前缀);L2=KL 散度,在 p′=「{s} 是」上最小化 M′ 与 M 输出差→防对 s 本身理解偏移(保局部性)。
    3. 插入知识:解带约束最小二乘 min‖ŴK−V‖ s.t. Ŵk*=v*(式5.19/5.20);闭式解 Ŵ=W+Λ(C⁻¹k)ᵀ,Λ=(v−Wk*)/(C⁻¹k*)ᵀk*,C=KKᵀ=维基文本样本 k 的去中心化协方差矩阵预先估计**(式5.21);更新矩阵秩为一→得名秩一模型编辑。

5.5 模型编辑应用(text/18-ch05-05-5-5.txt,290 行)

  • L1-7:ROME 局限=知识元组形式、复杂事实表现不佳、不支持批量编辑;MEMIT=并行批量编辑。
  • 5.5.1 精准模型更新(L23-52):Gemini Pro 事件:2023-12 网友中文问「你是谁」答「我是百度文心大模型」,一天后被修复;书猜测 Google 用了模型编辑紧急修复(知乎 @段小草);「外科手术般的精准度」。
  • 5.5.2 保护被遗忘权(L54-127):RTBF=从互联网删除个人信息的权利;欧盟法院冈萨雷斯诉谷歌案确立,纳入 GDPR;LLM 泄露隐私三形式:生成时无意泄露/攻击者从输出推断训练数据/参数被不当访问(图5.22 张三例:邮箱电话身份证→编辑后拒答);Nasr:让模型无限重复一个词可诱出训练数据(个人隐私);DPEN=隐私神经元检测器定位+编辑器将激活值置零(模型编辑作为机器遗忘手段)。
  • 5.5.3 提升模型安全(L129-227):
    • 祛除毒性:图5.23 偷猎斑马例(编辑前给狙击枪子弹射击位置全流程,编辑后拒答+法律后果);对齐微调抗恶意干扰弱+标注贵;Geva=促进积极概念神经元加权(词级别编辑局限:过度回避「炸弹」→说不出「不制造炸弹」)。
    • 减弱偏见:图5.24 狐狸狡猾刻板印象例;LSDM=因果跟踪定位(偏见组件=底层 FFN+顶层注意力)→带约束矩阵方程调整 FFN;DAMA=定位偏见参数表示子空间+正交投影矩阵编辑。
  • ch05 参考文献 [1]-[30] (ROME=Meng 2022 NeurIPS「Locating and Editing Factual Associations in GPT」;MEMIT=ICLR 2023;T-Patcher=ICLR 2023「One Mistake Worth One Neuron」)。

6.1 RAG 简介(text/19-ch06-01-6-1.txt,274 行)

  • L3-25:动机:训练数据正确性/时效性/完备性不足+「没有免费午餐」定理(参数空间有限学不全)→幻觉;RAG=从外部数据库检索相关信息辅助生成。
  • 6.1.1 背景(L40-187):幻觉两类成因:
    • 训练数据导致:知识过时(ChatGPT(训练止于 2022)答 2023 考拉数量 5000-8000 只,实际 86,000-176,000 只,图6.1)、知识边界(考拉基因数量)、知识偏差(网爬未核验)。
    • 模型自身导致:图6.2 问「树袋熊和考拉是什么关系」答成两种近亲动物;但图6.3 直接问「考拉的别名」能答对树袋熊——知识在,推理时仍错;四因素:知识长尾(低频学得差)/曝光偏差/对齐不当/解码偏差。
    • 验证实验:把外部知识以 Prompt 形式加入(图6.4 澳政府考拉监测页、图6.6 维基),模型自然答对→RAG 核心思想。
  • 6.1.2 组成(L189-274):RAG 概念最早=Facebook AI Research「Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks」;三模块=外部知识库 Corpus+检索器 Retriever+生成器 Generator(LLM);流程:query 编码→检索相关文档→知识+问题以 Prompt 给 LLM;核心优势=不改模型内部知识,避免更新成本与灾难性遗忘;考拉例完整走查(检索 3 文档→正确答案)。
  • 三优化问题:①检索器与 LLM 协作:黑盒增强(不动参数)vs 白盒增强(微调)→6.2;②检索过程:知识库构建/查询增强/检索器/效率增强(相似度索引)/重排→6.3;③增强过程→6.4。

6.2 RAG 架构(text/20-ch06-02-6-2.txt,371 行)

  • 6.2.1 分类(L32-100):按是否微调 LLM:黑盒增强(GPT-4 闭源只能用输出)/白盒增强(LLaMA 可微调);黑盒再分:无微调/检索器微调;白盒再分:仅微调 LLM/协同微调(图6.9 蓝雪花=冻结,红火焰=更新);也可调其他模块(知识库向量)。
  • 6.2.2 黑盒(L102-235):
    • 无微调:In-Context RALM=检索文档前置到问题前作上下文;两阶段检索+生成;可多次检索(长文生成每生成一段检索一次);关键参数:检索步长(每多少词检索一次,短=及时但贵)+检索查询长度(取输入最后几个词)
    • 检索器微调:REPLUG LSR=用 LLM 困惑度作监督信号微调检索器;KL 散度对齐「检索器输出的文档分布(余弦相似度→概率)」与「文档对 LLM 的贡献分布(每个文档+原上下文各自生成预测)」;异步索引更新(隔若干训练步才更新向量编码省算力);AAR=引入小型语言模型,用其交叉注意力得分标注偏好文档来微调检索器;闭源 ChatGPT 也能靠优化检索器提升
  • 6.2.3 白盒(L236-343):
    • 仅微调 LLM:RETRO=改模型结构,知识库文本切块 BERT 编码,自回归生成每块后检索最相似嵌入,外置 Transformer 编码器编码→块交叉注意力层的 K/V;SELF-RAG=反思标记,动态决定是否检索+自我批判。
    • 协同微调:Atlas=KL 散度联合训练(同 REPLUG LSR 损失),检索器与 LLM(T5)参数同步更新;定期更新语料库向量编码。
  • 6.2.4 对比(L344-371):黑盒=闭源背景,无微调快部署但无优化;检索器微调=不改 LLM 也可提升;白盒=协调更好;协同=最动态。

6.3 知识检索(text/21-ch06-03-6-3.txt,543 行)

  • L9-23:树袋熊 vs 袋熊(名称相近)检索错→答案错;检索效果(召回/精度/多样性)直接影响生成质量;检索时间=RAG 总耗时关键。
  • 6.3.1 知识库构建(L25-114):「巧妇难为无米之炊」;
    • 数据采集预处理:文档对象+元信息(Metadata:标题/分类/时间/关键词);清洗(特殊字符/异常编码/HTML 标签/去重);文本分块两好处:适应检索模型上下文窗口限制+降噪提准;分块策略=切分方法(句/段)+块大小+重叠区。
    • 知识库增强:查询生成(LLM 生成伪查询作文档的「键」,考拉树袋熊关系例)+标题生成(语义锚点)。
  • 6.3.2 查询增强(L116-200):用户问法千人千面 vs 知识库表达有限;
    • 语义增强:同义改写(「考拉的饮食习惯」→主要吃什么/食物有哪些/饮食结构,各查后合并去重)+多视角分解(「考拉面临哪些威胁」→栖息地丧失/气候变化/人类活动/自然灾害四子查询)。
    • 内容增强:生成背景文档(「如何保护考拉栖息地」→LLM 生成考拉分布桉树林背景文档作补充)。
  • 6.3.3 检索器(L202-391):判别式 vs 生成式:
    • 稀疏检索器:词频统计特征;TF-IDF(TF=词在文档频率(标准化防偏长文档),IDF=log(总文档数/含词文档数),TF-IDF=乘积;高词频+低文档频率=高权重,滤常见词)+BM25(加文档长度归一化+词项饱和度调整;大规模数据表现优异,搜索引擎广泛用)。
    • 稠密检索器:交叉编码器(查询+文档拼接→BERT→分类器 0-1 分;深度交互但算力大→适合少量候选精排)vs 双编码器(各自编码→向量相似度;文档向量可离线预计算→工业部署效率极高;但缺交互);DPR=两个 BERT+点积+对比学习(最大化正例最小化负例);ColBERT=Token 级相似度缓解缺交互;Poly-encoder=m 个向量表示长查询+注意力交互。
    • 生成式检索器:直接生成文档标识符 DocID(知识记在参数里);T5/BART 架构;两阶段训练:MLE 学查询→DocID 映射+数据增强/排名优化;DocID 设计:数字 DocID(简单但数量激增)vs 词 DocID(标题最佳,URL/N-gram 次之);效果仍逊稠密检索器
  • 6.3.4 检索效率增强(L393-509):向量数据库=高效相似度索引;三类索引:
    • 空间划分:树(KD 树/Ball 树,递归划分空间)与哈希(LSH 局部敏感哈希,相似向量同桶)。
    • 图:邻近图,检索=图遍历;小世界网络模型,贪婪逼近;稀疏(每步便宜)vs 稠密(路径短)权衡;NSW/IPNSW/HNSW。
    • 乘积量化 PQ:高维空间划子空间聚类→码本码字;查询=子向量找最近码字→距离表→累加近似距离;省内存快但量化的有误差,可再精排;OPQ/IVFPQ。
    • 软件库:Faiss(Meta,工具库非完整数据库,CPU/GPU);向量数据库=milvus 28.4K star/typesense/qdrant/chroma/weaviate/pinecone(表6.1)。
  • 6.3.5 重排(L511-543):相关性不高的文档直接给 LLM 会拉低质量;两类:交叉编码重排(MiniLM-L5 最常用,减层数+知识蒸馏;Cohere rerank API;MTEB 榜单)+基于 ICL 的重排(LLM 作重排器)。

6.3.5 尾+6.4 生成增强(text/22-ch06-04-6-4.txt,713 行)

  • RankGPT(3.5 尾):LLM 作重排器;Prompt 模板(段落编号,输出 [ ]>[ ] 降序);滑动窗口:文档分窗口从末尾开始排序替换,窗口按步长前移;解决超上下文窗口。
  • 6.4 四问题:何时增强/何处增强/多次增强/降本增效。
  • 6.4.1 何时增强(L53-309):内部知识可答就不增强——盲目增强「画蛇添足」:效率(增输入 token+检索成本)与质量(噪音知识误导)双降;图6.17/6.18 树袋熊例:模型直接答对;给了袋熊(挖洞穴居 10 米洞)的知识后反而答错;判断是否具备内部知识两法:
    • 外部观测法(类比面试):①直接问(「你需要额外信息吗」)——模型「过度自信」难「知之为知之」,准确率低;②多次询问看一致性——但会「执拗」地重复错误答案,且费时;③观察训练数据(出现频率与记忆程度正相关)——数万亿级统计耗时+闭源不可得;④伪训练数据统计量:实体流行度(维基页面浏览量);流行知识(考拉是什么)答对,不流行(考拉基因数量,正确 26,558)答错;依赖数据时间、拟合不准。
    • 内部观测法(类比测谎):分析隐藏状态(注意力输出/MLP 输出/隐层状态);知识检索主要发生在中间层 FFN;探针=线性分类器判「已知/未知」,分类准确率高;局限:黑盒不可用、问题本身模糊会干扰;初步探索阶段。
  • 6.4.2 何处增强(L311-418):三位置(图6.23 考拉例):①输入端=拼进 Prompt(主流;直观易实现;文本过长超限+推理成本高;Prompt 设计+知识排序,可用 CoT);②中间层=向量经交叉注意力入隐藏状态(RETRO;影响深、省输入长度;需改结构,黑盒不可用);③输出端=后矫正(REFEED:先生成初步回答,再用检索知识验证校准;依赖检索质量)。三者可组合。
  • 6.4.3 多次增强(L420-563):
    • 复杂问题→分解式增强:多跳理解;「世界上睡眠时间最长的动物爱吃什么?」=两跳;DSP 三模块:DEMONSTRATE(ICL 演示分解,例:最大动物→蓝鲸→150 吨)+SEARCH(迭代检索:考拉每天睡 22 小时→「考拉爱吃什么」→桉树叶)+PREDICT(汇总);性能取决于分解质量。
    • 模糊问题→渐进式增强:「国宝动物爱吃什么?」指代不明;TOC=递归式检索树状澄清路径(中国→熊猫→竹子;澳洲→考拉→桉树叶/袋鼠→杂草灌木),按相关性与知识一致性剪枝;计算量随复杂度指数增长+多路径不稳定
  • 6.4.4 降本增效(L565-713):
    • 去冗余三法:Token 级(困惑度低=易预测=信息少=可删;LongLLMLingua:小模型评困惑度,问题感知粗粒度(文档均值)→细粒度(逐 token),+文档重排/动态压缩比/子序列恢复);子文本级(FIT-RAG:双标签打分器=事实性+模型偏好,滑动窗口分子文档评分删低分);全文本级(PRCA:信息提取器两阶段=上下文提取(最小化压缩文本与原文差异)+奖励驱动(LLM 作奖励模型,RL 优化))。
    • 复用计算:KV-cache(自回归每 token 要用之前所有 token 的 K/V 结果;输入长→KV-cache 显存剧增甚至超模型参数显存);RAGCache:KV 张量缓存库(树结构,节点=文档)+缓存检索器+RAG 控制器(PGDSF 前缀感知贪婪双重尺度频率替换策略:访问频率/大小/成本/最近访问时间)。

6.5 实践与应用(text/23-ch06-05-6-5.txt,531 行)+ch06 参考

  • 6.5.1 搭建(L25-226):
    • LangChain 六模块:Model IO(模型接口+Prompt 组件)/Retrieval(文档加载/文本分割/向量构建/索引生成/向量检索,非结构化库接口)/Chains(链接模块)/Memory(对话存储)/Agents(自动决定操作)/Callbacks(干预监控)。
    • LlamaIndex=专注数据索引与检索(API/PDF/SQL 多源),过滤/重排精细化;查询效率突出,大数据量场景;可与 LangChain 结合。
    • LangChain 搭建五步代码:安装(langchain/langchain_community/langchain_chroma)→WebBaseLoader 加载→RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)→Chroma+OpenAIEmbeddings 索引→VectorStoreRetriever+ChatOpenAI(gpt-3.5-turbo-0125)+hub.pull("rlm/rag-prompt")+LCEL 链(retriever|format_docs+prompt+llm+StrOutputParser)。
  • 6.5.2 应用(L227-391):
    • Agent:图6.27 框架四模块(Profile/Memory/Planning/Action)均融入 RAG;「我在澳大利亚想抱考拉」例:旅游顾问角色→规划(地点/法规/交通)→记忆检索+行动模块调工具→整合决策→输出(龙柏考拉动物园/科伦宾野生动物园)。
    • 多模态垂域:医疗(X 光/MRI/CT+病历)Ossowski 框架:图像+文本特征→多模态检索器→Prompt 构建→T5 编码解码;X 光例输出「心肌肥大」;金融 FinTextQA/生物学/音频/视频。
  • ch06 参考文献 [1]-[61] (RAG 原始论文=Lewis 2020 NeurIPS [28];DPR=Karpukhin 2020 [23];ColBERT=Khattab 2020 [24];HNSW=Malkov 2018 [31];Self-RAG=Asai [3];RETRO=Borgeaud ICML 2022 [5])。

===== 全书通读完成(23/23 章)=====

全书结构与切分草案

原书 6 大章:1 语言模型基础 / 2 大语言模型架构(2.1-2.6) / 3 Prompt 工程(3.1-3.5) / 4 参数高效微调 / 5 模型编辑(5.1-5.5) / 6 检索增强生成(6.1-6.5)。 全书主线:预测下一个词(统计→RNN→Transformer)→规模定律与涌现→三种架构演进(Dec-only 胜出)→用前不调参的手段(Prompt/ICL/CoT)→调参的性价比手段(PEFT)→改已固化知识(模型编辑)→接外部知识(RAG)。 差异化定位:全书=大模型全景教材(从语言模型原理到 RAG 应用的一条完整链路);与 nndl 系列(深度学习基础)、llm-and-agent(邱锡鹏 2026,偏 agent 与前沿)区分:本书重心在「训练好的大模型怎么调教」(Prompt/PEFT/编辑/RAG 四大后训练手段各占一章)。 特色例子贯穿:长颈鹿(ch1)、水豚(BERT/T5/BART/RLHF)、小浣熊干脆面(ch3)、斑马皮肤(ch5)、考拉/树袋熊(ch6)。 关键数字:Kaplan N∝C^0.73 vs Chinchilla 20 倍数据;GPT-3 175B/300B token;LLaMA3 50TB;RLHF 三步;LLaMA2-7B 全量 60GB vs LoRA 23GB(RTX4090);偏置 0.08%;ROME 闭式解;考拉 86,000-176,000。