跳到主要内容

章节切分大纲 — large-vision-language-models-pre-training

这一份是动笔前的节级大纲:一节一行,每行「进来时以为 → 出去时知道」。 两头是同一件事的节已经合掉或改写(合并记录在末尾「自查」一节)。定稿后正文的节序与这里一致。

每一章除下面列出的核心原理节外,还固定带:顶层全景 / 作者的判断与证据 / 边界与局限 / 可带走的 / 原文地图。 这五段不逐行列,免得一页纸变成流水账。

避开的文件: text/55text/56text/57 三个文件的内容来自另一本讲模数转换芯片的书 (epub 打包污染,约 50k 字符),一律不读不引;本书自己的索引与总参考文献因此缺失。

2026-08-29 第二稿。 按审读意见改了十处,改动清单在文末「审读意见处理记录」。 最大的一处结构改动:章数从 18 变 20 —— 原书第 1 章 §1.3(难题清单)独立成第 04 章, 原来的 08 章按外挂/内嵌切成 09、10 两章。因此 09 及以后的编号全部后移。

切法:17 章切成 20 章,不是一一对应

原书是论文合集:17 章 = 17 篇论文,编者三人自己写了其中多章,第 1 章是唯一的导游, 其余 16 章互相独立。一章对一章会让读者读到 17 篇互不相干的论文摘要,所以按新词密度重切。

四条改动都有具体理由:

改动为什么
原书第 1 章 §1.2 + §1.4 → 拆成我们的 01/02/03 三章它一章里塞着 CLIP、注意力、ViT、三种架构、三种目标、四类数据。这是全书新词最密的一段,也是后面 16 章的全部地基,塞不进一章
原书第 1 章 §1.3 → 独立成我们的 04 章§1.3「Navigating the Complexities」是 11.2k 字符、占该章正文三成的一整节,列了 14 个具名难题(算法 6 / 算力 4 / 数据 4)。它正好是后面 16 篇的问题清单,放在 04 位置上,读者往后每读一章都知道这一篇在解哪一条;而且其中八条(模态鸿沟、可解释性、持续学习、延迟、分布式与联邦学习、数据偏向、长尾、数据伦理)后面 16 篇一次都没回来处理,不给它落点就是漏掉三成正文
原书第 5+6 章合成我们的 08这两章是同一条因果的两级:第 5 章证明学出来的提示词在同域漂移上更稳,第 6 章证明它跨数据集就废。分开写会把这条因果切断
原书第 7 章 → 我们的 09,第 8 章 → 我们的 10(不合并)原计划合成一章,实测节级大纲有 10 节、其中一节要装六张生面孔。按标准拆节 + 拆章:09 讲「在编码器外面挂东西」,10 讲「塞进每一层内部,以及让机器去搜」
原书第 10/11/12 章各自成章(我们的 12/13/14),不合并检测那一章要从零讲清 DETR 的物体查询与匈牙利匹配,分割那一章要拆开注意力池化的 q/k/v,3D 那一章要讲投影四步 —— 三套机制各带 6 个以上生面孔

另加一章 20「回头看」:全书真正的落点不在任何一章里,而在 16 篇的共性上; 另外三件事也只能在这里做 —— 五种适配方法的横向对照(书里从来没比过)、 三处互相独立的「微调会破坏图文关联」证据、以及 2024 年 12 月之后这条线的走向。

原书拆成
1. Foundations of VLMs §1.2.1 + §1.4.1 + 5. §5.3(CLIP 背景)01
1. §1.2.2(特征表示)+ 8. §8.3.1.1 + 11.(注意力池化)02
1. §1.2.2(架构/目标/数据)+ §1.4.1(连接器)03
1. §1.3 全节(算法/算力/数据三类难题)04
2. InternVL05
3. Multimodal LLMs for Video(InternVideo2)06
4. Generative Multimodal Models Are In-Context Learners(Emu2)07
5. Differentiable Prompt Learning(CoOp)+ 6. Test-Time Prompt Tuning(TPT)08
7. Learning Efficient Feature Adapters(CLIP-Adapter / Tip-Adapter)09
8. Neural Prompt Search(NOAH,含 Adapter/LoRA/VPT 三件套)10
9. Confidence Calibration(DAC)11
10. Open-Vocabulary Object Detection(OV-DETR)12
11. Unlocking CLIP for Zero-Shot Dense Segmentation(MaskCLIP)13
12. Adapting CLIP for 3D Understanding(PointCLIP V1/V2)14
13. Collaborative Diffusion15
14. FreeU16
15. AvatarCLIP17
16. Text-Driven 3D Human Motion(MotionDiffuse / ReMoDiffuse / FineMoGen)18
17. Text2Light19
全书 + 我们的判断20

文件名:01-clip-shared-space · 02-inside-the-encoders · 03-architectures-and-objectives · 04-the-hard-parts · 05-internvl-scaling-up · 06-internvideo2-time-axis · 07-emu2-generative-pretraining · 08-prompt-learning-and-test-time · 09-adapters-and-cache · 10-embedded-tuning-and-search · 11-confidence-calibration · 12-open-vocabulary-detection · 13-maskclip-dense-segmentation · 14-pointclip-3d · 15-diffusion-and-collaborative-control · 16-freeu-unet-inside · 17-avatarclip-3d-humans · 18-text-to-motion · 19-text-to-scene · 20-what-they-all-say

全书一条主线(总纲第 3 节的骨架)

判据:只读这一节、不看任何拆解章,也能把这本书的主张复述出来。

  1. 起点是一件已经做成的事。 一张图和一句话本来各说各的话。有人拿网上 4 亿对 「图 + 配图的那句话」训了一个东西:配对的那一对在同一个空间里靠近,不配对的推远。 做完之后,分类不再需要分类器 —— 写一句「a photo of a 柯基」,谁离得近就算谁。 这个模型叫 CLIP,后面 16 篇论文大部分建在它上面(具体数目是我们自己数的,数法见第 20 章)。
  2. 第一个念头是把它做大。 于是有三篇超大规模的系统论文:把视觉那半边加到 60 亿参数、 让分辨率跟着图的形状变、把语言从英文扩到中文(第 05 章);把时间加进去,让它看视频、 听声音(第 06 章);再把「会画」加进去,让它看几个例子就会做新任务(第 07 章)。 这三步的共同代价是同一笔:几百张卡训几周。
  3. 代价逼出了全书真正的问题,而且这笔代价有两层。 一层是算力:书里说训一个 GPT-4 级的系统要数千个加速器跑几周、花掉数百万美元。另一层更要命,也更少被提起: 下游任务根本没有那么多标注数据 —— 模型有几亿个参数,而一个下游数据集常常只有 中等规模,不够做全参数微调,硬调就是过拟合。所以整条适配线的默认设定从一开始就是 「每类只给十几张标注图」。 既然重训不起,那就得学会怎么把已经训好的本事取出来。 第一个尝试是改喂给它的那句话 —— 但手工调到了荒谬的地步:给类名前加一个「a」,准确率涨 5 个点。
  4. 那就让机器自己学那句话。 把「a photo of a」这几个词换成可以被梯度调的向量, 模型本体一个参数不动,16 张样例就能把 ImageNet 从 58.18 抬到 62.95。 而且它在同域漂移上确实更稳 —— 换成素描版、对抗版的 ImageNet,它比什么都不学还高一点, 作者明说学出来的提示词「有很强的泛化能力」。
  5. 但「换域」有两级台阶,第二级是塌的。 第一级是同一批类别换个画风(素描、艺术画), 它扛得住;第二级是换一个数据集、换一批类别,它就废了:在 ImageNet 上学的那套提示词 搬到 10 个细分数据集上,平均 56.18,而什么都不学是 55.82 —— 几乎没带过去; 其中纹理集上 37.29 反而低于零样本的 40.37,花卉集 61.55 低于 61.75。 源数据集换成纹理集之后更狠:学出来的提示词拿到花卉集上只剩 33.41%,零样本是 61.75%。 学到的东西没有搬过去,好几个数据集上还不如什么都不学。
  6. 换域就废,是因为它学的是那个训练集。 那就干脆不用训练集:拿要预测的那一张测试图 当场学,增广出 64 个视图,只留最自信的一成。代价是每张图都要多跑一遍,推理变慢。
  7. 也可以根本不动那句话。 改在冻住的编码器后面挂一个小网络;或者连训练都不要, 把几张样例图的特征存成一张表来查。但没有任何一条路在所有数据集上都最好 —— 于是有人把三种模块全塞进每一层,让机器搜哪一层该留哪一个。
  8. 到这里比的都是准确率。第 11 章问了一个不一样的问题:调完之后,它说「我有九成把握」还算数吗? 不算。调完之后它对没学过的新类反而更自信,而且离学过的类越远越自信;现成的校准办法在新类上 比不校准还差。
  9. 以上全是分类。挪到别的视觉任务上,同一个障碍反复出现:CLIP 只见过「整张图配一句话」, 它不知道东西在哪儿。 检测把「这是第几类」改写成「配不配得上」,绕开新类没有标签(第 12 章); 分割干脆把 CLIP 最后那层里的 query 和 key 删掉、直接用每个位置的 value,mIoU 从 8.3 跳到 18.5 (第 13 章);3D 把点云画成一张深度图,骗 CLIP 当普通图片认(第 14 章)。
  10. 后半本从「认」转向「造」,CLIP 从主角退成打分器。 画画交给扩散模型,CLIP 只负责说像不像。 同一套减法继续有效:一个小 30 倍的网络就能让两个已经训好的扩散模型逐像素分工(第 15 章); 把 UNet 里两条路重新配比,不训练、不加算力就白捡一截质量(第 16 章)。
  11. 但打分器有天花板:CLIP 只看得懂单张图。 所以数字人要补人体模型和体渲染(第 17 章), 动作要补动作先验和检索库(第 18 章),场景要用「把图像特征加噪当成伪文本」绕开 根本没有配对数据这件事(第 19 章)。
  12. 落点:16 篇里至少 11 篇的核心动作是同一个 —— 冻住主干,只动外围一小块。 而且最有效的几招都是减法:删两层、调两个数、干脆不训练。 这本书真正在回答的不是「怎么造一个更强的模型」,是「本事已经在权重里了,怎么把它取出来」。

01 一张图和一句话怎么被钉进同一个空间

位置:全书地基。后面 19 章每一章都从这里出发。 原书:第 1 章 §1.2.1 + §1.4.1 + 第 5 章 §5.3。

进来时以为 → 出去时知道
§1以为教机器看图要先教它认物体的名字 → 知道它一个名字都没学过,只学过「这张图和这句话是不是一对」:4 亿对里配对的拉近、不配对的推远
§2以为「拉近推远」是打比方 → 知道近和远是算得出来的数:图和句子各变成一串固定长度的数,比的是这两串数的夹角
§3以为分类总得有个分类器 → 知道类名写成一句话过文本编码器,那串数本身就是分类器的一行;换一批类名就换一个分类器,这叫零样本
§4以为谁的分数高就选谁,到此为止 → 知道分数要先除以一个温度再归一化,而这个温度是训练时学出来的,它决定这排数被拉多开
§5以为这套本事是天上掉的 → 知道作者把成功归给三件同时到位的事:一种能一次看完整段序列、而且能并行算的模型(它的名字叫 Transformer)、对比这个训练目标、网上现成的几亿对图文;「共享空间」这个想法十多年前就有,缺的是后两样
§6以为零样本等于什么都认得 → 知道它认的是「像不像那句话」:jaguar 是动物还是车它分不出;而且它只见过整张图配一句话,不知道东西在哪儿 —— 这一句是第 12/13/14 三章的共同前提
  • 主走查: 一张柯基照片 + 三个候选类名(corgi / cat / airplane)。 图 → 一串数;三句「a photo of a {类名}」→ 三串数;夹角余弦 0.31 / 0.19 / 0.05; 除以温度后归一化 → 0.72 / 0.21 / 0.07。相似度那三个数是为演示编的,4 亿对是书里的真数。 这排还没归一化的分数,名字挂在句末:logits
  • 承重词(单开一节,从现象讲起):嵌入(§2:为什么「变成一串数」这件事是整本书的地基); ②对比学习(§1:从「怎么给它出题」讲起,而不是从损失函数讲起)。 §5 给 Transformer 挂牌(先大白话讲清、名字放句末,和它解释的那件事算同一张脸)。
  • 书外要补: CLIP 自己是怎么训出来的(批量多大、温度怎么学),书里最详的一段也只有三段 —— 先走书架;不够再核 arXiv:2103.00020 原文。共享空间的维数书里没给,要标成通用知识。

02 打开这两个编码器:token、图块、注意力

位置:01 把两个编码器当黑箱,这一章打开它们。 理由很实在:第 13 章全章的关键动作是「删掉注意力池化的 query 和 key」,不先讲清这三样,那一章就是天书。 原书:第 1 章 §1.2.1 + §1.2.2 + 第 5 章 §5.3.1 + 第 8 章 §8.3.1.1 + 第 11 章 §11.3。

进来时以为 → 出去时知道
§1以为句子是整句喂进去的 → 知道先被切成小块,每块叫一个 token;CLIP 认得 49152 种块、固定 77 个位子、每块换成 512 个数
§2以为图片没法这么切 → 知道图片也切:224 的图切成边长 16 的小方块,一共 196 块,每块当一个 token —— 「ViT-B/16」里的 16 就是这个边长,B 是尺码
§3以为每块各算各的 → 知道每块要去看别的块:拿自己的 query 和别人的 key 打分,再按分数取走别人的 value,这三样合起来叫注意力
§4以为一堆块最后怎么合成一串数是自动的 → 知道要专门指定一个「代表」:ViT 版多加一个 [CLS] 块,ResNet 版拿全图平均特征当 query 去做一次注意力池化 —— 第 13 章拆的就是这一层
§5以为卷积网络早被淘汰了 → 知道这条线是 ImageNet → AlexNet → ResNet → ViT,而本书里两种主干一直并存;分割那一章两者差距最大(抗噪时 ResNet 版几乎全废)
  • 主走查: 承接 01 的同一张柯基照片:224×224 → 196 块 → 处理 [CLS] 时对各块打分 (狗脸那块 0.31、草地那块 0.02)→ 按分数取 value → 汇成一串数,正好接回第 01 章那串数。 打分那两个数是为演示编的。
  • 承重词:注意力(query / key / value)(§3);②token 与图块(§1–2 连讲,一段一个); ③CNN / 卷积(§5)。
  • 书外要补: Transformer 与注意力的来历(01 只挂了牌,这里讲机制)。先走书架。不必联网。

03 接起来有三种架构,训练它有三种目标

位置:这一章是读懂后面 16 章的地图 —— 它解释「为什么大部分章都建在双编码器上,而生成那条线必须换一种」。 原书:第 1 章 §1.2.2 + §1.4.1。

进来时以为 → 出去时知道
§1以为图文模型只有 CLIP 那一种长相 → 知道有三种接法:两边各出一串数各不相干(双编码器)、把图的特征插进语言模型的层与层之间(交叉注意力)、把图和字拼成一条序列一起处理(统一)
§2以为三种接法只是实现细节 → 知道它决定这个模型能干什么:双编码器只能比相似度,好处是图那边可以预先算好、比得飞快;要它回答「他在干什么」,两边必须真的混在一起。并当场点破 §1 与这一节末尾那三种「连接器」的差别:§1 回答「从头设计时两个模态怎么融合」,连接器回答「一个已经训好的视觉编码器,怎么接到一个已经训好的大语言模型上」——后者是拿现成零件拼,只有三种做法:一层线性投影、交叉注意力、可学查询
§3以为训练目标就是「学对齐」四个字 → 知道有三种出题法:在一批里认领自己那一条(对比)、遮住一部分让它补(图和字都能遮)、逐个吐出下一个词(自回归)
§4以为选哪个目标是口味问题 → 知道目标决定它会不会「说」:只做过对比的模型永远吐不出一句话,所以后半本要生成,就必须换目标 —— 第 07 章正是这么做的
§5以为训练数据都是人写的图注 → 知道有四类:人工图注几十万条、网爬几十亿条、问答对、视频配文;网爬那批噪声大,这正是第 05 章要花大力气清洗的东西
  • 主走查: 同一对(柯基照片,「a photo of a corgi」)走三种架构,每种写出它吐出什么: 双编码器 → 两串数 + 一个相似度;交叉注意力 → 一句「一只柯基坐在草地上」; 统一序列 → 一条 196+7 个位子的序列。再用同一对走三种目标,写出各自的「答案」长什么样: 对比 → 在一批 256 对里认领第 17 条;遮住 → 补出被挖掉的「corgi」;自回归 → 逐词写出图注。 批大小 256、序列长度这些数是为演示编的。
  • 承重词:交叉注意力(与 02 的自注意力对照着讲:一边是自己看自己,一边是文字去看图); ②自回归(逐个预测下一个);③掩码建模(遮住再补)
  • 这一章落三张脸:大语言模型(LLM)GPT / GPT-4V(全书共同的对照物)、NLP

04 这条路上绕不过去的十四堵墙(原书自己的难题清单)

位置:03 讲完「怎么造」,04 讲「造起来会撞上什么」,然后 05–07 才是三篇真的去造的论文。 原书:第 1 章 §1.3(§1.3.1 算法 / §1.3.2 算力 / §1.3.3 数据),占该章正文三成。 这一章的存在理由:它是后面 16 篇的问题清单,读者往后每读一章都知道那一篇在解哪一条; 而且有七条书里点了名、16 篇一次都没回来处理 —— 空白比不提值钱。

进来时以为 → 出去时知道
§1以为图文对齐已经做成了 → 知道对齐从来没做干净:jaguar 是动物还是车,模型分不出;书里管这叫「模态鸿沟」,它是全书所有失败案例的共同源头
§2以为算不动只是买卡的问题 → 知道有两笔账:训一个 GPT-4 级的系统要数千个加速器跑几周、数百万美元;而 Transformer 的开销随序列长度平方增长,所以「把图切得更细」和「看更长的视频」都是指数级涨价
§3以为适配下游任务就是再训一遍 → 知道下游数据太少:模型几亿个参数,下游数据集只有中等规模,不够做全参数微调 —— 这是 08/09/10 三章全部方法的前提,也是「少样本」这个默认设定的由来
§4以为模型看错了总能查出原因 → 知道查不出:现成的可视化只说明「它在看哪儿」,不说明「为什么这块重要」;书里明说这条线远远落后
§5以为模型可以边用边学 → 知道持续学习基本没解:加新知识就要么忘旧的、要么内存和算力一路涨
§6以为闭源模型只是不给权重 → 知道后果是连锁的:不能适配、只能靠试错式的提示工程、调试与归因都做不了 —— 这正是第 05 章那篇论文要追赶的对象
§7以为数据只要多就行 → 知道三个坑:数据偏西方中心;网爬图注噪声大、常常和图无关;长尾概念学不到
§8以为爬数据没什么代价 → 知道爬来的东西里有隐私、有版权、有未经同意的个人照片,作者点名要求写清数据来源与标注规范
§9以为这些难题后面都会被解决 → 知道只有六条被后面 16 篇正面或部分处理,另外八条(模态鸿沟、延迟、分布式与联邦学习、可解释性、持续学习、数据偏向、长尾、数据伦理)一次都没回来 —— 照实写,并交代这是我们数的
  • 主走查: 一支只有 8 张卡的团队,想做一个「看中文发票并答问题」的模型,顺着这十四堵墙走一遍: 想从头训 → 撞第 §2 堵(数千加速器/数周/数百万美元,他们有 8 张卡); 想微调现成的 → 撞第 §3 堵(手上只有两千张发票); 想把发票扫描件切细一点看清小字 → 撞平方复杂度(196 块变 1792 块,注意力那一步的开销约涨 83 倍 —— 这个倍数是我们按平方关系算的,不是书里的数); 想解释某次答错 → 撞第 §4 堵;想直接用闭源 API → 撞第 §6 堵。 每一步旁边标出「后面哪一章回答它」,答不了的当场写明「书里点了名,16 篇没回来」。
  • 承重词:模态鸿沟;②平方复杂度(为什么序列一长就贵);③过拟合; ④联邦学习(点到即止,并说明它在本书里没有下文)。
  • 兑现: §3 立起来的「下游数据太少」是第 08 章「少样本」的前置台阶,必须进兑现表。

05 把它做大,会先撞上哪三堵墙(InternVL)

原书:第 2 章。

进来时以为 → 出去时知道
§1以为开源模型追不上闭源是因为算法差 → 知道差在三处点得出名字的地方:视觉那半边只有 3 亿参数对上百亿、分辨率被钉死在 336 或 448、训练数据几乎全是英文
§2以为把视觉编码器加大就完事 → 知道加到 60 亿之后文本那半边配不上了,于是他们干脆拿一个多语言的语言模型来当文本编码器
§3以为换个更大的语言模型要从头再来 → 知道他们赌了一个假设:不同语言模型的表示空间是同质的,所以视觉那边只要对齐过一个,换更大的只需少量增量训练
§4以为训练是一锤子买卖 → 知道分三阶段,每阶段冻住的部件都不一样:先在噪声网页数据上做对比,再冻住语言模型只训中间那层,最后全参数微调
§5以为高分辨率就是把图放大 → 知道是按图的形状切块:800×1300 的截图切成 6 块 448 再加一张缩略图
§6以为视觉 token 多多益善 → 知道每块 1024 个 token 会把语言模型撑爆,所以要压成 256 —— 分辨率与序列长度这笔账是这类模型的核心矛盾
§7以为数据多就够 → 知道 60.3 亿对里只留下 49.8 亿(82.6%),六个过滤条件,还要剔掉与测试集重复的图防止「泄题」
§8以为砍掉网络层是偷工减料 → 知道他们实测倒数第 4 层往前的特征最好,直接把最后 3 层砍掉
  • 主走查: 一张 800×1300 的文档截图:选 2×3 的切法 → 缩放到 896×1344 → 6 块 448 + 1 张缩略图 → 每块 1024 个视觉 token → 压成 256 → 合计 1792 个 token 交给语言模型 → 答出 DocVQA 上的 90.9 (对照:同期闭源的 GPT-4V 是 88.4;数学题那一项它 53.5 反超 GPT-4V 的 49.9)。
  • 承重词:冻结与增量训练(现象起:为什么「只训中间那层」是这本书后面十几篇的共同动作); ②视觉 token(以及为什么非压不可);③线性探测(实验里反复出现的量法)。
  • 这一章落两张脸:OCR(数据配比里占 40% 以上,不解释读不下去)、GPU / 加速器(训练成本)。

06 加上时间维:视频、声音和一份合成的图注(InternVideo2)

原书:第 3 章。

进来时以为 → 出去时知道
§1以为视频就是很多张图 → 知道多出两件事:动作只存在于帧与帧之间;token 数按帧数翻倍,贵得多
§2以为要从零训一个视频模型 → 知道第一阶段是让一个学生去同时对齐两个老师:一个懂语义的图文模型、一个懂运动的视频模型
§3以为遮住再补是为了学会补全 → 知道在这里它是省算力的手段:80% 的 token 被遮住,只在剩下的 20% 上算差距
§4以为文本是唯一的第二模态 → 知道还有音频和语音,而且实测加音频有用、加语音反而有害
§5以为图注从哪来无所谓 → 知道是三个描述器分别描述画面、声音、说的话,再由一个语言模型融合;融合之后检索指标从 24.7 提到 27.1
§6以为模型越大越好 → 知道 60 亿的版本在几个动作识别集上反而略低于 10 亿版,原因是第二阶段的大数据把第一阶段学到的东西冲掉了
§7以为合成的图注是中性的 → 知道作者自己统计过:成人 87%、男性 62%、亚裔 56%,并明说这未必代表视频的真实内容
  • 主走查: 一段做菜视频:按语义切镜头 → 抽 8 帧 → 每帧降到 14×14 个格 → 遮住 80% 的 token → 在剩下的 20% 上同时对齐两个老师(只算未遮处的均方误差)→ 配上融合图注做对比学习 → 接语言模型回答「他先放的是什么」。旁边挂训练量:256 张卡 × 18 天(第一阶段)。
  • 承重词:知识蒸馏(老师带学生);②掩码重建(在 03 只被点名,这里讲机制); ③均方误差

07 从「看懂」到「会做」:把下一个元素放宽(Emu2)

原书:第 4 章。

进来时以为 → 出去时知道
§1以为多模态模型只能回答问题 → 知道把「预测下一个词」放宽成「预测下一个元素,元素可以是词、也可以是一张图的那串数」,它就同时会看和会画
§2以为图片没法当序列里的一个元素 → 知道每张图被固定编码成 64 个视觉嵌入,与文字 token 交错排成一条序列
§3以为文字用分类损失、图片照搬就行 → 知道图片那一步只能用回归损失:图的表示是一串连续的数,没有「第几个词」可挑
§4以为它自己会画 → 知道画图交给一个独立训练的「去分词器」:把那 64 个数还原成一张 1024 的图。这个还原器是个扩散模型,它怎么画,第 15 章讲
§5以为学新任务必须再训练一遍 → 知道少样本(每类只给几个例子,这里是把例子直接写进输入里)当场就能学会,一个参数都不改:同一个模型零样本时 VQAv2 只有 33.5,给 4 个例子跳到 67.0;而 370 亿参数的它 16 个例子时 68.8,赢过 800 亿参数的对手 66.8
§6以为「让它画在指定位置」要重训 → 知道位置是把物体框画在一张黑图上,当成一个视觉提示塞进序列里
§7以为基础模型直接就能当助手用 → 知道还要再训一轮:用 [USER]/[ASSISTANT] 两个特殊标记把对话切开、只对答案那一段算损失,才有 Emu2-Chat;可控生成那一版(Emu2-Gen)另训一轮、只对最后那张图的嵌入算回归损失,并冻住视觉编码器防崩塌 —— 这是全书唯一一处讲「多模态助手是怎么造出来的」
  • 主走查: 书里给出的真实训练序列: <s>A photo of <p>a man</p><coor>定位图的嵌入</coor>[IMG]男人的图嵌入[/IMG] sitting next to <p>a dog</p>…[IMG]整图嵌入[/IMG]</s> —— 逐个元素走一遍,每一步写出它此刻在预测什么、用的是分类损失还是回归损失。
  • 承重词:上下文学习(现象起:同一个模型,给三个例子和不给例子,答案不一样); ②少样本(按阅读顺序,这个词在全书第一次出现就在这一节,必须就地立起来,并回指第 04 章 §3); ③去分词器(一串数怎么变回一张图);④回归损失 vs 分类损失
  • 许诺记账: §4 的「第 15 章讲扩散模型怎么画」必须进总纲的兑现表。

08 那句话本身可以被学出来,也可以当场学(CoOp → TPT)

位置:全书的转折点 —— 从「怎么造」转到「怎么用」。 原书:第 5 章 + 第 6 章。这两章是同一条因果的两级台阶: 第 5 章证明学出来的提示词在同域漂移上更稳,第 6 章证明它跨数据集就废。

进来时以为 → 出去时知道
§1以为提示词怎么写不太要紧 → 知道在 Caltech101 上给类名前加一个「a」,准确率涨 5 个点以上;在纹理集上把上下文换成「texture」还能再涨
§2以为那就多试几种模板 → 知道试出来的不保证最好、换个数据集还得重试;所以干脆把那几个词换成可以被梯度调的向量,而模型本体一个参数都不动(手工 58.18 / 多模板集成 60.41 / 学出来 62.95)
§3以为学出来的向量能读懂 → 知道作者拿词表去找最近的词,得到的是「potd / that / filmed」这种连不成句的东西,他只敢说「可能编码了词表之外的含义」,不下结论
§4以为学一套提示词一换环境就废 → 知道第一级台阶它扛住了:同一批 ImageNet 类别换成素描版、艺术画版、对抗版,4 个上下文向量的版本全面高于零样本(如 -Sketch 34.67 对 33.32、-A 23.06 对 21.65),作者明说学出来的提示词「有很强的泛化能力」;而同样条件下的线性探测崩到 19.07 / 12.74
§5以为那它就是通用的了 → 知道第二级台阶是塌的:换数据集、换类别,ImageNet 上学的那套搬到 10 个细分集平均 56.18,零样本 55.82,纹理集 37.29 低于 40.37、花卉 61.55 低于 61.75;源换成纹理集之后花卉只剩 33.41%(零样本 61.75%),这是全书最有冲击力的一个反例
§6以为泛化差是因为学得不够 → 知道恰恰相反:上下文向量从 4 个加到 16 个,源数据集上更好(72.65 → 73.42)、换域后更差,而且作者明说「没有确定的规则」
§7以为没有训练数据就没辙 → 知道可以拿要预测的那一张图当场学:增广出 64 个视图,让它们的平均预测更「确定」,只走一步就停
§8以为「只留最自信的一成」是投机取巧 → 知道随机裁剪会把关键内容裁掉,那种视图的预测是噪声;去掉这道筛子,分布外平均掉 1.61
§9以为这招只对分类有效 → 知道它在另一个任务上也成立:Bongard-HOI 给两组示例图(一组有「骑车」这个人-物关系、一组没有),问查询图有没有。TPT 在示例图上同时学提示词前缀和两个二元「类名」、训 64 步再判查询图,平均 66.59,胜过此前最好的 62.46,而一个普通卷积网络基线只有 49.92(约等于瞎猜)
§10以为这条路白赚 → 知道每张测试图都要多跑一遍反向传播,推理变慢;作者自己把加速列为待解问题
  • 主走查: 一张纹理图,类名「banded」,四步走完全章: ① 手工模板「a photo of a banded texture.」;② 换成 4 个可学向量,16 张样例训练, EuroSAT 上比手工高 45 个点、ImageNet 上只高 4.77;③ 把这套向量搬到花卉集 → 33.41%(零样本 61.75%); ④ 换 TPT:同一张测试图增广 63 次 + 原图 = 64 张,按自信程度排序取前 10%(约 6 张), 算这几张平均预测的熵,AdamW 学习率 0.005 走 1 步 → ImageNet-A 从 47.87 抬到 54.77(ViT-B/16 版)。
  • 承重词:提示学习(把一句话里的词换成可以被调的向量);②熵与置信度筛选 (从「模型有多犹豫」这个现象讲起,不从公式讲起);③数据增广;④分布漂移

09 不改那句话,改编码器外面:外挂一个小网络,或者干脆查表

原书:第 7 章。

进来时以为 → 出去时知道
§1以为适配只有调提示词一条路 → 知道可以在冻住的编码器后面外挂一个两层小网络,再把它的输出和原来的零样本输出按一个比例 α 混合;α 大表示预训练与下游差得远
§2以为哪怕小网络也得训 → 知道可以完全不训:把每类几张样例图的特征当 key、标签当 value 存成一张表,来一张测试图算相似度加权取标签,全程两次矩阵乘法
§3以为不训练一定不如训练 → 知道 1 张样例时,不训练的缓存法 60.70 就赢过训了 14 小时 40 分的可学提示词 57.15;把表里的 key 解冻再训 20 轮(5 分钟)到 65.51
§4以为这两种东西是两回事 → 知道外挂小网络其实是缓存法的一个特例,差别只有三处:key/value 是随机初始化还是直接用数据造、瓶颈宽度、激活函数
§5以为几种方法快慢差不多 → 知道可学提示词每次推理都要重跑一遍文本编码器,慢 29 倍、显存多 3 倍;外挂路线可以把文本特征预先算好存着
§6以为挂在哪儿无所谓 → 知道挂在最后一层最好(70.88),挂在第 10 层更好一点(71.85),挂在所有层反而最差(67.67),因为参数从 0.52M 涨到 5.20M,少样本下过拟合
§7以为不训练的东西一定更脆 → 知道反过来:换成素描版 ImageNet,不训练的缓存法 35.90 高于可学提示词的 31.04,而线性探测崩到 19.13
  • 主走查: 同一个 16 张样例的 ImageNet 任务,六条路排在一张表上,每条写出 准确率 / 训练时长 / 单次推理时延 / 显存:零样本 60.33 / 0 / 10.22ms / 2227MiB; 线性探测 56.13(比零样本还低 4.20);可学提示词 62.95 / 14 小时 40 分 / 299.64ms / 7193MiB; 外挂小网络 63.59 / 50 分钟 / 10.59ms / 2227MiB;缓存法 62.03 / 0 分钟 / 10.42ms; 缓存法微调 65.51 / 5 分钟 / 10.53ms。
  • 承重词:适配器(本章只讲「挂在编码器外面」这一种,内嵌那一族留给第 10 章,一词一义); ②缓存与查表(key/value);③残差混合
  • 书外要补: Adapter 的来历(书里当已知概念用,只说了「原始的 Adapter 是嵌在每一层里的」)。先走书架。

10 塞进每一层内部,以及让机器去搜(Adapter / LoRA / VPT → NOAH)

原书:第 8 章。位置:09 讲完「挂在外面」,这一章讲「塞进里面」,并回答「三种到底选哪种」。

进来时以为 → 出去时知道
§1以为适配器就是 09 那种外挂 → 知道还有一族是塞进 Transformer 每一层内部的,而且这一族才是原始做法;三种做法的区别只在「挂在哪个零件旁边」
§2以为「动权重旁边」只有一种 → 知道有两种:Adapter 接在每一层 MLP 的归一化输出之后,先把 d 维降到 r 维再升回来;LoRA 挂在 query 和 key 两个投影矩阵旁边当残差,用两个瘦矩阵相乘代替一个胖矩阵(低秩分解),乘一个固定缩放系数加回去
§3以为改模型只能改权重 → 知道还能只改输入:VPT 在每一层的输入端塞 m 个可学 token,相当于往图里加了几个人造「像素」,与 [CLS] 和图块嵌入拼在一起
§4以为总有一条最好 → 知道 19 个数据集上没有任何一条全胜(VPT 在方位角那个集上强,在仰角和计数上不如另两个),而且各自对超参极其敏感
§5以为那就一条条试过去 → 知道可以把三种模块全塞进每一层,先训一个超网(把所有配置一起训、权重互相复用的那一张大网),再用进化搜索(随机造一批配置 → 留最好的几个 → 交叉变异出下一批)挑每层留哪个、留多宽
§6以为搜索空间要多大有多大 → 知道只搜两件事:宽度 ∈{1,5,10,50,100},深度 ∈{3,6,9,12},而且深度是「前 k 层」不是任选 k 层
§7以为搜出来是一团黑箱 → 知道搜出来有规律:Adapter 和 LoRA 集中在深层,VPT 几乎每层都有 —— 不同模块擅长的抽象层级不同
§8以为搜索这么贵不划算 → 知道一共 6.3 个 GPU 小时(超网 3.1 + 搜索 2.0 + 重训 1.2),而同等预算下手工网格搜出来的 Adapter*/LoRA* 参数多 3–6 倍、准确率还低 0.5;而且重训那一步可以省,只掉 0.4
§9以为这套东西在少样本下更有用 → 知道反过来:1–2 张样例时它和单个模块打平,要到 16 张才拉开约 2 个点;超网训练本身也是额外开销 —— 作者自陈的两条局限
  • 主走查: 同一个 ImageNet 16 张样例的任务(主干是 ImageNet-21K 预训练的 ViT-B/16,不是 CLIP, 所以这一章的绝对值不能和 08、09 两章直接比,表头写死): 12 层每层装满三个模块、宽度都取 100 → 训超网(每次前向抽 5 个子网 + 最大最小两个)→ 进化搜索 → 搜出来的子网 → 四个漂移集上 66.1 / 24.8 / 11.9 / 28.5,分别比最好的单个模块高 6.8 / 4.8 / 5.0 / 5.2。
  • 承重词:LoRA 与低秩分解;②超网与权重复用;③进化搜索;④神经架构搜索。 (这一节的四张脸是全书节级配额的顶格,不许再加第五张;真塞不下就把 §5–§6 再拆一节。)
  • 书外要补: LoRA 的来历(书里当已知概念用)。先走书架:book=build-large-language-model §LoRA 基础不必联网。

11 调完之后,它说的「九成把握」还算数吗

原书:第 9 章。全书唯一一章不比准确率。

进来时以为 → 出去时知道
§1以为准确率上去了就够了 → 知道还有一个独立的问题:它报 0.9 的时候,那一批里是不是真有九成对;这个差距量得出来
§2以为微调会让它更有分寸 → 知道反过来:调完之后它对学过的类偏保守、对没学过的新类过度自信 —— 与直觉正相反
§3以为拿现成办法校准一下就好 → 知道温度缩放在学过的类上把误差从 4.82 降到 1.94,在新类上却是 3.90,比根本不校准的 1.59 还差;分箱那一类方法对零样本预测压根用不了
§4以为过度自信没有规律 → 知道有:把嵌入投到平面上看,调完之后新类的文本嵌入与学过的类之间裂开一条缝,离得越远越自信
§5以为要治它得先有新类的图片 → 知道只用类名的文本嵌入就够:算这个新类离学过的类有多远,按这个距离给每一类单独调温度,学过的类一个字不改
§6以为好处只有一点点 → 知道 11 个数据集上,可学提示词那一路的新类校准误差从 13.84 降到 7.00;而且效果集中在高置信区:某个数据集 0.9 那一箱的差距从 41.60 降到 11.37
§7以为文本这条是权宜之计 → 知道基于图像的同类办法一次推理要 15.88 秒,文本这条只要 0.13 秒,慢 120 倍的那条还更差,而且两者可以叠加
  • 主走查: 纹理数据集里一个没学过的类:模型报 0.9 → 这一箱真实准确率只有 0.48 → 算它到学过的那些类的邻近度 → 按邻近度给这一类的温度打折 → 报出来的把握降到 0.62 → 这一箱的差距从 41.60 降到 11.37,全数据集误差 13.84 → 7.00。 0.48 与 0.62 是为演示编的,41.60 / 11.37 / 13.84 / 7.00 是书里的数。
  • 承重词:校准与期望校准误差(ECE)(从「天气预报说 70% 下雨」这类日常经验起步); ②邻近度(作者自定义的量,要点明是这篇论文提的);③温度缩放(回指第 01 章的温度)。

12 让它指出东西在哪:开放词表检测

原书:第 10 章。第 01 章末尾埋的「它不知道东西在哪儿」在这里第一次被正面处理。

进来时以为 → 出去时知道
§1以为检测器认得出照片里的东西 → 知道它只认训练时定死的那几类:COCO 上训出来的只认 80 类,之外的东西对它不存在
§2以为接上 CLIP 就能认新类 → 知道卡在第一步:大多数做法先用一个候选框网络框出「可能是物体的区域」,而这个网络是在旧类上训的,对没见过的类几乎不给框
§3以为换一种检测器就绕开了 → 知道 DETR 这种「一口气吐 N 个框」的做法,要靠匈牙利匹配把预测和真值一对一配起来,而匹配代价里有一项是分类损失 —— 新类没有标签,这一项算不出来
§4以为那就没救了 → 知道把问题换个问法:不问「这是第几类」,只问「这个框和给它的条件配不配得上」,匹配代价就变成一个二元判断
§5以为条件只能是类名 → 知道条件也可以是把物体裁出来过 CLIP 得到的图像嵌入;训练时两种随机挑一种,新类没有类名时就只用图像
§6以为一张图里多个物体会打架 → 知道查询被复制成 N×R 份,用注意力掩码彼此隔开,一次前向全出来
§7以为换个数据集要重训 → 知道只换一套类名的文本嵌入就能直接测,而且全面胜过对照方法
§8以为代价可以忽略 → 知道每个条件都要过一遍解码器:1203 类的数据集上一次要 23.84 秒,原来只要 1.49 秒;并行化之后仍慢 6 倍以上
§9以为失败案例作者不会写 → 知道他写了:小目标和被遮挡的目标用图像条件检不到;给一个不相干的词(「philosophy」)它会硬吐出假阳性框
  • 主走查: 一张有猫和玩具的照片,而「猫」不在训练类里: 候选框网络给出 0 个框 → 换成 100 个物体查询 → 匈牙利匹配要分类代价、算不出 → 改成二元「配不配」→ 把裁出来的猫过 CLIP 得到条件、加到查询上 → 出框。 末尾接真数:新类 mask mAP 17.4(对照 16.1),而且不以牺牲已学类为代价(对照方法 61.8 → 59.5)。
  • 承重词:目标检测(框、mAP)(从「分类只答是什么,检测还要答在哪儿」起步); ②物体查询与匈牙利匹配(全书唯一一处需要讲清「一对一配对」的地方);③候选框网络

13 让它给每个像素分类:删掉两块就够了(MaskCLIP)

原书:第 11 章。全书最能说明「减法」的一章,而且它把失败的尝试也写了出来。

进来时以为 → 出去时知道
§1以为分割和分类差不多 → 知道差在「每个像素都要一个答案」,而 CLIP 训练时从没见过像素级标注
§2以为常规做法是微调 → 知道作者先试了:用 CLIP 的权重初始化分割网络,再把文本嵌入映成分类器,一起微调 —— 学过的类 83.4,没学过的类 3.7,基本全废
§3以为失败是因为训练不够 → 知道作者给了三条归因,落点是一句话:微调把 CLIP 原有的图文关联破坏了(第 08 章的消融独立复现了同一件事:四组参数里调视觉编码器最差)
§4以为不微调就拿不到稠密特征 → 知道 CLIP 图像编码器最后那层注意力池化里,每个位置的 value 过完线性层,本身就已经是这个位置的语义响应
§5以为要改结构 → 知道只做减法:删掉 query 和 key 两个嵌入层,把 value 层和最后那层线性层改写成两个 1×1 卷积,文本编码器一个字不改 —— mIoU 从 8.3 变 18.5
§6以为既然是自注意力,不改也能出稠密特征 → 知道不行:预训练里只训过那一个全局 query
§7以为剩下的只能靠训练 → 知道还有两个免训练的精修:按 key 的相似度把邻近图块的预测抹平;把「在所有位置置信度都低于 0.5」的类整个丢掉。到 21.8
§8以为到这就是上限 → 知道拿它的输出当伪标签去训一个正经的分割网络:这是另一个基准(PASCAL VOC 零样本分割,新类 mIoU),不是主走查那条链的续集 —— 没学过的类 3.7 → 72.8,再自训练一轮 → 86.1,而学过的类只掉 0.7
§9以为哪个主干都一样 → 知道 ResNet 版下采样 32 倍、对稠密预测不利,而且抗损伤差得多:高斯噪声最强档时从 18.5 掉到 2.1,ViT 版还有 6.8
  • 主走查(锁死 ResNet-50 一条链,不许中途换主干): 一张「狗 + 草地 + 天空」的图, 要给每个像素一个类,量的是 PASCAL Context 的 mIoU: 常规微调 → 新类 3.7(失败,注意这是另一个基准上的数,只用来说明「微调会废」)→ 回到注意力池化,删掉 q 和 k → 每个位置各出一串数 → 与三个类名的文本嵌入比 → 8.3 → 18.5 →(键平滑 + 提示去噪)21.8 →(当伪标签训 DeepLabv2)23.9。 再单列一句:换成 ViT-B/16 版,这条链是 9.0 → 21.7 → 25.5 → 31.1。
  • 承重词:稠密预测与 mIoU(从「分类给一张图一个答案,分割要给几万个」起步); ②伪标签与自训练;③下采样倍数
  • 回指: §4–§5 直接用第 02 章 §3–§4 立过的 query / key / value 与注意力池化,不重新解释。

14 让它认没见过的立体:把点云画成一张图(PointCLIP)

原书:第 12 章。

进来时以为 → 出去时知道
§1以为 3D 迟早也有自己的大模型 → 知道 3D 数据集小、类别少,训不出来;而点云稀疏又无序,2D 那套搬不过来
§2以为要教 CLIP 认点云 → 知道不用教:把点云画成一张深度图,它就当普通图片认了,一次 3D 训练都不用做
§3以为画图得渲染、得建网格、得上色 → 知道最省的做法只有一行:点 (x,y,z) 投到 (x/z, y/z),像素值直接取 z,复制三份当彩色三通道
§4以为这样就能用了 → 知道零样本只有 20% 出头;把六个视角的特征拼起来过一个小网络再残差加回去(还是第 09 章那个适配器),16 张样例就到 87.20%
§5以为后续提升要靠训练 → 知道第二代把提升挪到了投影本身:落格取最小深度、局部最小池化加密、高斯平滑、沿深度压扁 —— 光加密一步就值 15.14
§6以为「取最小」是随手一选 → 知道取最大 57.35、取平均 60.71、取最小 64.22:因为近的东西本来就该挡住远的
§7以为文本模板无关紧要 → 知道让 GPT-3 按四类指令写 3D 专用的描述,只改文本就值 25.11 分
§8以为分类之外做不了 → 知道取池化之前的稠密特征就能做零件分割(31.0 → 49.5);3D 检测靠一个现成的候选框网络,但绝对值只有 11.53 —— 这是这条路线的真实上限,书里没有粉饰
  • 主走查: 一把椅子的点云(1024 个点):归一化到 [0,1] → 落进网格、同格取最小深度 → 局部最小池化把点之间的空格填上 → 高斯平滑去伪影 → 沿深度取最小压成一张深度图 → 复制三份 → 六个视角各过一次 CLIP → 与 GPT-3 写的「a depth map of a chair, it portrays…」比 → 加权求和。ModelNet40 零样本 23.78 → 64.22。
  • 承重词:点云(从「3D 扫描出来的是一堆坐标,不是一张图」起步);②深度图与投影; ③池化(取最大/平均/最小的差别在这一章是承重的)。

15 扩散模型怎么画画,以及怎么让它同时听两个条件

原书:第 13 章。前两节是全书生成线的地基(第 07、16、17、18、19 章都建在上面), 书里两处公式都是写给已经懂的人看的,这两节要重讲。

进来时以为 → 出去时知道
§1以为生成图像是「一次画出来」 → 知道扩散模型反着做:先把一张图一步步加噪声加到什么都不剩,再学着把每一步加进去的噪声认出来、减掉
§2以为它学的是「该画什么」 → 知道它学的是「这一步加的噪声长什么样」,训练目标就是让预测的噪声和真加的噪声差最小
§3以为条件就是开头喂的那句话 → 知道条件是每一步都要参与的东西;同一个模型可以被文字控,也可以被一张分割掩码控,但一次只能一种
§4以为想要两种就得从头训 → 知道两个已经训好的模型可以合作:一个小 30 倍的网络看着当前的噪声图、当前是第几步、各自的条件,吐出两张逐像素的影响力图
§5以为影响力是平均分配的 → 知道分工看得出来:掩码那一路的权重压在轮廓上(头发、脸、眼睛的边界),文字那一路压在皮肤上(脸颊、下巴),因为年龄和胡子是皮肤纹理
§6以为分工只发生在空间上 → 知道时间上也分工:掩码在早期强(先把布局摆出来),文字在后期强(把皱纹和胡子填进去)
§7以为这只是个巧劲 → 知道去掉空间变化 FID 从 111.36 涨到 117.81,去掉时间变化涨到 117.34 —— 两者都必要。FID 是后半本唯一贯穿的指标,在这一节连同「生成质量怎么量」一起讲透并给参照物(同一张表里 TediGAN 157.81、Composable 124.62;这个数越低越好)
§8以为这套东西只能从零生成 → 知道同一批已经训好的小网络还能直接用来改图:分别做一次文本编辑和一次掩码编辑,再用它们合起来 —— 扩到编辑不必重训
§9以为条件越多越好 → 知道作者做了件老实事:把「刘海、眼镜、微笑」从文字描述里删掉,因为掩码已经在管它们,留着会打架
§10以为生成人脸没什么风险 → 知道作者自己写了一节社会影响:可能被用来恶意篡改真人脸;采样过程可能泄露训练数据;训练用的是名人脸数据集,与普通人的长相分布有偏
  • 主走查: 「一个戴眼镜的中年男人」+ 一张发型掩码: 加噪走到第 t 步 → 两个已训好的模型各出一份噪声预测 → 13.1M 的小网络吐出两张影响力图 → 逐像素归一化(早期掩码那路 0.8 / 文字 0.2,后期反过来)→ 加权合成这一步的噪声 → 减掉 → 下一步。 0.8 / 0.2 是为演示编的;13.1M 对 403.6M(小 30 倍)、FID 111.36 是书里的数。
  • 承重词:扩散(加噪与去噪)(从「照片被雪花糊住,一点点擦回来」这个现象起步,讲完即改口用正式说法); ②条件控制;③FID(按阅读顺序它在这一章第一次出现,由这一章负责讲清并给参照物); ④分割掩码
  • 书外要补: 扩散的前向/反向过程与 UNet。先走书架。不必联网。
  • 这一章落一张脸:GAN(对照方法 TediGAN、StyleGAN 从这里开始反复出现)。
  • 兑现: 第 07 章 §4 许诺的「扩散模型怎么画」在 §1–§2 兑现。

16 白捡的质量:UNet 里那两条路各在干什么(FreeU)

原书:第 14 章。全书最便宜的一章:不训练、不加参数、不加显存、不加采样时间,只调两个数。

进来时以为 → 出去时知道
§1以为预训练的生成模型只能拿来直接用 → 知道没人研究过它内部在干什么,而研究一下就能白捡质量
§2以为去噪过程是均匀变化的 → 知道拆成高低频看:低频(整体结构和颜色)几乎不动,高频(边缘和纹理)剧烈变化 —— 因为噪声本身就表现为高频
§3以为 UNet 的两条路差不多 → 知道给它们各乘一个数做对照:放大主干那条,图明显更干净;放大跳连那条,几乎没反应
§4以为「更干净」说不清 → 知道看频谱就清楚:主干的因子越大,生成图里的高频被压得越狠 —— 主干干的活就是去噪
§5以为跳连是多余的 → 知道它灌的是高频:训练时帮 UNet 更快重建输入,推理时反而削弱去噪 —— 训练目标和推理目标要的不是一回事
§6以为放大主干就完事 → 知道全部通道一起放大会把纹理磨平,所以只放大一半通道;再对跳连做傅里叶变换,把低频压下去治过平滑
§7以为提升很小 → 知道美学分 5.675 → 5.994、FID 43.82 → 40.79,在少步蒸馏模型上提升最大;但因子调到 1.8 就过平滑 —— 去噪太狠会连细节高频一起削掉
  • 主走查: 同一句「a cat wearing sunglasses」在同一个模型上跑四次: 主干因子 0.6(一堆噪点)→ 1.0(原样)→ 1.4(干净)→ 1.8(过平滑); 全通道放大(纹理磨平)→ 只放大一半通道 + 跳连低频乘一个小于 1 的数 → 美学分 5.675 → 5.994。
  • 承重词:UNet 的主干与跳连(在 15 章只当「一个网络」用,这里必须拆开); ②高频与低频(从「照片压缩后先糊掉的是什么」起步);③傅里叶变换(只讲「换个角度看同一张图」)。

17 一句话长出一个能动的人(AvatarCLIP)

原书:第 15 章。

进来时以为 → 出去时知道
§1以为文生 3D 人是文生图的推广 → 知道根本没有「3D 人体–文本」的配对数据集,所以监督学习这条路一开始就不存在
§2以为那就做不了 → 知道拿三块现成的先验拼:CLIP 负责说「渲出来的图像不像这句话」,一个参数化人体模型负责体型和骨架,一个体渲染方法负责几何与颜色
§3以为体型可以直接优化出来 → 知道 CLIP 看一张渲染图判断不出「高」:得有参照。所以定一个中性体型和一句中性文本当锚,比的是两个差向量的方向;而且体型不是连续优化出来的,是从一本码本里挑的 —— 码本就是先把所有可能的体型压成 2048 个代表,挑其中最像的一个(码本这个词在全书第一次出现就在这里,由这一章负责讲清;第 19 章只回指)
§4以为纹理和几何一起优化就行 → 知道要再加一个专管风格的颜色网络,让原来那套继续负责「还是个人形、还能绑骨骼」
§5以为几何没法让 CLIP 打分 → 知道办法来自一个日常观察:人看模型会关掉贴图只看形。所以渲一张无纹理的灰度图交给 CLIP
§6以为渲染分辨率不是问题 → 知道 32GB 的卡只渲得到约 110×110,而 CLIP 要 224;办法是先算剪影再膨胀一圈,只渲剪影内的光线,提到约 150
§7以为背景和相机是无关细节 → 知道随机背景防止长出飘在空中的碎块,每四次迭代把相机对准脸并换成「the face of …」,因为人对脸最敏感
§8以为动作也能让 CLIP 直接打分 → 知道不行:它只看单张图,判断不了一段动作像不像一句话、也判断不了顺不顺;所以先用它挑候选姿态,再靠一个动作先验补出顺序和连贯
§9以为同一句话能生成多样结果 → 知道每次跑出来都差不多,因为文本特征固定、优化方向就固定;作者还点名了该拿什么取代自己这套(扩散 + 分数蒸馏),而那正是第 15–19 章这条线
  • 主走查: 「a tall, skinny Steve Jobs」+「doing a T-pose」: 从 2048 个体型码里按差向量方向挑一个 → 渲多视角图训出初始几何 → 加风格颜色网络 → 无纹理灰度图交 CLIP 打几何分 → 剪影内渲染把分辨率从 110 提到 150 → 抽出网格、从模板拷一份蒙皮权重 → 从 4096 个姿态码里取最像的 5 个 → 动作先验生成 60 帧。
  • 承重词:参数化人体模型 SMPL(10 个数管体型、24×3 个数管关节,顺带白送骨骼绑定); ②体渲染与 NeuS(把「表面在哪」和「这点什么颜色」分成两个函数);③码本
  • 诚实点: 作者自陈的四条局限 + 「doctor 多半生成男性、nurse 多半生成女性」的偏见,照实写。

18 让动作跟着文字走:三代方法

原书:第 16 章(MotionDiffuse → ReMoDiffuse → FineMoGen)。

进来时以为 → 出去时知道
§1以为生成动作就是生成视频 → 知道动作是一串关节数:每帧 263 个数,含根关节的角速度与线速度、每个关节的位置与 6 维旋转,还有 4 个 0/1 位记录左右脚跟脚尖有没有踩地
§2以为早期方法差在模型不够大 → 知道差在两件具体的事:同一句描述只出一种结果、复杂描述生成不了
§3以为扩散模型直接搬过来就行 → 知道主干要从 UNet 换成 Transformer,理由很实在:动作长度可变;文本编码器沿用冻住的 CLIP,后面接几层可学的
§4以为几百帧的注意力算得起 → 知道两两打分是平方级的;改成先把 key 和 value 压成一张全局模板、再拿 query 去查它,又快又更准
§5以为文本条件是拼在输入里 → 知道文本嵌入和「现在是第几步」加起来,生成一组缩放和偏置,直接作用在特征上
§6以为质量只能靠更大的模型 → 知道可以学游戏行业:建一个动作库,用时检索几段再融合进来
§7以为检索按语义找最像的就行 → 知道只按语义检索比不检索还略差;必须同时看动作长度(测试时唯一拿得到的运动学线索),并在注意力里把「检索来的动作」和「它与目标的语义差距」分开处理
§8以为细粒度控制(左手做这个、同时右腿做那个)要重训 → 知道有两条路:测试期给每个部位各去噪一遍再加一个梯度修正项拼起来(不改训练),或者把注意力拆成时间分支和空间分支、让注意力头数等于身体部位数
§9以为两条路差不多 → 知道测试期拼接只抹平了坐标,速度和加速度会突变;从结构上建模时空独立性更好 —— 这是本章可带走的判断
  • 主走查: 「一个人先蹲下再跳起来」: 263 × F 的表示 → 加噪 → Transformer 主干 + 风格化块(文本 + 步数生成缩放和偏置)→ 高效注意力压成全局模板 → 按「语义相似度 × 长度差」检索两段参考,key 拼 [动作;文本]、 value 只拼动作 → 四路条件混合 → 去噪出 60 帧 → 用 FID 与 R-Precision 量(FID 在第 15 章已讲)。
  • 承重词:动作表示(每帧 263 个数到底是什么,这是全书唯一系统交代数据格式的地方); ②检索增强(以及它为什么在这里比在文本里难);③无分类器引导

19 造一整个能当光源的世界(Text2Light)

原书:第 17 章。

进来时以为 → 出去时知道
§1以为文生图已经把场景解决了 → 知道渲染要的是 4K 以上的高动态范围全景:它提供真实的光照和反射,而拍一张这样的图又贵又受物理条件限制
§2以为难点就是分辨率 → 知道有四个:分辨率、结构连贯、根本没有「文本–场景」配对数据、动态范围
§3以为全景图就是一张很宽的图 → 知道每个像素对应球面上一个方向,把像素坐标换算回球面角度再做傅里叶编码,模型才抓得住高频;去掉这一步它会横向铺出重复纹理
§4以为一个生成器能兼顾全局和细节 → 知道拆成两本码本(码本在第 17 章已讲,这里只回指):一本在缩小的全景上训、管布局,一本在随机裁的图块上训、管纹理。去掉全局那本,FID 从 32 崩到 308
§5以为没有配对数据就没法用文本控 → 知道把图像特征加噪当成「伪文本特征」来训,再取它在图像嵌入里最近的 K 个邻居一起当条件;推理时换成真的文本特征,零样本就能用
§6以为最近邻那一步是锦上添花 → 知道去掉它,文本一致性从 4.56 掉到 1.23
§7以为超分和动态范围要两个大网络 → 知道把全景当成球面上的连续场、任意方向都能查值,两个小 MLP 依次提分辨率和动态范围就赢过重型全卷积网络
§8以为 FID 低就说明生成对了 → 知道 StyleGAN 系的 FID 不算差,但教堂内景的天花板和长椅是扭的、断的 —— 分数低不等于结构对
  • 主走查: 「a church interior at sunset」: 文本过 CLIP → 全局采样器吐出 8×16 的码 → 局部采样器在球面编码条件下滑窗拼出 1K 全景 → 当成连续场查任意方向 → 两个小 MLP 提到 4K 高动态范围 → 丢进渲染引擎当环境光。 零样本 FID 32.01(对照 38.16),去掉全局码本 308.38。
  • 承重词:向量量化(码本已在 17 讲过,这里只补「怎么把连续的东西对齐到码本上」); ②全景与高动态范围(等距柱状投影是什么、为什么渲染非要 HDR 不可);③多层感知机 MLP
  • 诚实点: 作者自陈的两条 —— 一切依赖 CLIP 所以继承它的偏见;罕见景象生成不了 (给「tree and aurora rays」它只理会「tree」)。

20 回头看:16 篇论文其实在说同一句话

这一章不对应原书任何一章。 它存在的理由有四个,每个都是别处放不下的: 全书的落点在共性上、五种适配方法书里从没比过、「微调破坏图文关联」有三处互相独立的证据、 时间戳停在 2024 年 12 月。

进来时以为 → 出去时知道
§1以为这是 17 个互不相干的方法 → 知道 16 篇里至少 11 篇的核心动作是同一个:冻住主干,只动外围一小块(附我们自己数的清单,并说明数法)
§2以为好方法都是往上加东西 → 知道最有效的几招是减法:删掉两个嵌入层(8.3 → 18.5)、只调两个数(FreeU)、干脆不训练(缓存法)
§3以为「微调会破坏图文关联」是一句口号 → 知道有三处互相独立的证据:分割那章的失败实验、提示词那章的消融(四组参数里调视觉编码器最差)、检测那章「不牺牲已学类」的对照
§4以为这些方法可以直接比 → 知道不能:主干、样例数、指标各不相同(有的用 CLIP,有的用 ImageNet 预训练的 ViT)。我们仍然排一张横向表,表头写死「设定不同,不可直接比较」
§5以为这条路线没有代价 → 知道有三笔账,书里都写了:推理变慢(测试时调提示词、每个类过一遍解码器)、学出来的东西读不懂、CLIP 的偏见照单继承。外加第 04 章那张难题清单的结账:八条书里点了名、16 篇一次没回来处理的(模态鸿沟、延迟、分布式与联邦学习、可解释性、持续学习、数据偏向、长尾、数据伦理)
§6以为书里讲的就是现在 → 知道时间戳停在 2024 年 12 月:「开源与闭源差在三处」这个判断、以及第 08 章点名却没展开的「测试时计算」那条线,之后都变了(补充,标查阅日期)
§7我们的判断(判断块,逐条带「如果错,会错在」)
  • 主走查: 同一个任务 —— 把一个已训好的图文模型适配到一个新数据集,手上只有 16 张标注图 —— 让五条路各走一遍,每条写出:训练时长、单次推理时延、准确率、换到别的数据集后掉多少。 这条走查全部用第 08、09、10、11 章已经出现过的真数字重排,并在表头写明不可直接比较
  • 承重词:无。 整章只用前 19 章立过的词,力气全在对照和判断上。
  • 书外要补: 只有这一章需要联网(2024 年 12 月之后的走向)。规矩照旧:一次只抓一个, 同一个地址失败两次立刻换源。

自查:两头是同一件事的节,已经合掉或改写

疑似重复处理
03 §3(三种训练目标里的「遮住再补」)与 06 §3(掩码重建)不重复,但改写了 06 §3 的落点:03 讲「这是一种出题法」,06 讲「遮住 80% 在这里是省算力的手段,只在剩下的 20% 上算差距」
02 §3(自注意力)与 03 §1(交叉注意力)02 是「块看块」,03 是「文字看图」,一词一义、互为对照,保留
03 §1(三种架构)与原 03 §6(三种连接器)已合并:连接器并进 03 §2 末尾,并当场点破差别(从头设计融合 vs 拿两个训好的零件对接)。03 由 6 节收成 5 节
09 §1(外挂适配器)与 10 §1–§3(内嵌的 Adapter/LoRA/VPT)曾经是同一节里的六张脸。已拆成两章:09 是「接在编码器输出之后、与零样本输出混合」,10 是「塞进 Transformer 每一层内部」,并在 10 §1 的「进来时以为」里点破这个差别
09 §1 与 14 §4(视角间适配器)14 §4 明确回指「还是第 09 章那个适配器」,不重讲机制,只讲它在 3D 上换了什么输入
13 §3(微调破坏图文关联)与 20 §3(三处证据)13 讲这一处实验本身,20 讲「三处互相独立的证据放在一起才成立」。20 §3 只做汇合,不重述实验细节
08 §10(测试时调提示词变慢)与 20 §5(三笔账)08 是这条方法自己的局限,20 是全书代价的汇总。保留
15 §1–§2(扩散基础)与 07 §4(去分词器是个扩散模型)07 只挂名 + 记一笔许诺,机制留到 15。已进兑现表
04 §2(平方复杂度)与 18 §4(高效注意力)04 讲「为什么序列一长就贵」这件事本身,18 讲一种具体的绕法。保留
17 §8(CLIP 判断不了一段动作)与 18 §1(动作是一串关节数)17 是「为什么必须外接动作先验」,18 是「这串数具体是什么」。保留
原计划的「01 讲 token」挪到 02。01 已经有嵌入、对比学习、零样本、温度四张脸,再塞 token 会破段级配额;01 一律把两个编码器当黑箱

原书反复讲、必须交代的 11 个词,各落在哪一章

book-dodged 在还没写一个字时报出 11 个(阈值:原书出现 ≥15 次)。落点:

原书出现落在备注
token11902 §1–§2文字块与图块连着讲,一段一个
LLM10503 §2讲连接器时立
GPT7903 §1全书共同的对照物
GAN7215生成线的对照方法从这里开始出现
OCR5505 §7数据配比里占 40% 以上,不解释读不下去
LoRA4110 §2与 Adapter、VPT 一起讲
CNN2902 §5ResNet 与 ViT 的对照
NLP2303 §1
GPU1704 §2算力那堵墙
logits1501 主走查句末挂牌与「相似度分数」算同一张脸
F117不引只出现在我们不引的实验表里;理由写进书卡

检查器只认缩写。 这本书真正承重、而它数不出来的词,按阅读顺序分配如下 (每一个都必须在它第一次出现的那一节讲清):

第一次出现谁负责讲
嵌入 / 对比学习 / 零样本 / 温度 / Transformer(挂牌)0101
token / 图块 / 注意力(q/k/v)/ 注意力池化 / 卷积0202
交叉注意力 / 自回归 / 掩码建模0303
模态鸿沟 / 平方复杂度 / 过拟合 / 联邦学习0404
冻结 / 增量训练 / 视觉 token / 线性探测0505
蒸馏 / 掩码重建(机制)/ 均方误差0606
上下文学习 / 少样本 / 去分词器 / 回归损失0707(原大纲漏了少样本,已补)
提示学习 / 熵 / 置信度筛选 / 数据增广 / 分布漂移0808
适配器(外挂)/ 缓存查表 / 残差混合0909
LoRA / 低秩 / 超网 / 进化搜索 / 神经架构搜索1010(原大纲漏了后两个,已补)
校准 / ECE / 邻近度 / 温度缩放1111
目标检测 / mAP / 物体查询 / 匈牙利匹配 / 候选框网络1212
稠密预测 / mIoU / 伪标签 / 自训练1313
点云 / 深度图 / 投影 / 池化1414
扩散 / 去噪 / 条件控制 / FID / 分割掩码 / GAN1515(原大纲把 FID 漏在半空,已补)
UNet 主干与跳连 / 高低频 / 傅里叶1616
SMPL / 体渲染 / 码本1717(原大纲把码本排在 19,晚于首现,已前移)
动作表示 / 检索增强 / 无分类器引导1818
向量量化 / 全景 / HDR / MLP1919

书外缺口落在哪一章、从哪儿取

顺序写死:先翻书架,再上网。 已经查过,四个大缺口本书架里都有现成拆解,不必联网:

缺口落在取自
CLIP 自己怎么训出来的01书架里的多模态章节(4 亿对、对比学习);要更细再核 arXiv:2103.00020
Transformer 与注意力02书架里讲注意力与 ViT 的那几章
扩散的前向/反向与 UNet15、16书架里讲扩散模型与 U-Net 的那几章
Adapter / LoRA 的来历09、10book=build-large-language-model §LoRA 基础
2024 年 12 月之后的走向20 §6唯一需要联网的一处:一次只抓一个,失败两次换源,写明查阅日期
SMPL / NeuS / VQVAE17、19书内各有一段 + 通用知识,标成「补充(不在书里,来自通用知识)」

篇幅与密度预估

20 章,每章 5–10 个核心节 + 五个固定段,预计每章 12k–20k 字符,全书约 30 万字符。 原书可用正文约 86 万字符,其中参考文献与实验表占掉一大半 —— 我们不搬表、只留效果句。

风险点(动笔时盯住):

  1. 04 章有 9 节而且全是「问题」不是「机制」。 它的主走查必须是一个具体团队的具体项目, 否则会退化成清单。写出来若失去张力,退回到 03 §6 + 20 §5 两处收编。
  2. 01–03 三章是全书生死线。 它们错了后面全错,所以第一章正文写完必须停下等主人验口径。
  3. 10 章 §5 一节四张脸已经顶格。 再多一张就拆成 §5/§6 两节。
  4. 15 章的扩散基础放在第 15 章才讲,但第 07 章就用到了。 已用「许诺 + 记账」处理。

审读意见处理记录(2026-08-29)

审读给了 10 条,9 条照办,1 条经复核不成立。逐条:

#意见处理
1「33.41% 对 61.75%」这个数原书不存在,而且第 5 章结论与它相反半数照办,半数不成立。 复核:33.41 在原书里真实存在 —— text/32-ch06-04-6-4-experiments.txt:293 原文写着「baseline CLIP with a hand-crafted prompt achieves 61.75% accuracy on Flower102, while CoOp trained on DTD only has 33.41% on Flower102」,审读说「全书零命中」是误报。但审读的实质意见完全成立且更值钱:这个数出自原书第 6 章(TPT)不是第 5 章,而第 5 章 §5.5.6 的结论恰恰相反(CoOp 提高了对分布漂移的鲁棒性,原文「learned prompts possess strong generalization capabilities」)。已按「两级台阶」重写主线第 5 步与 08 章 §4/§5:同域漂移它扛得住(第 5 章表 5.3),跨数据集它废了(第 6 章表 6.2 + 图 6.2),两组数字全部核过
2原书第 1 章 §1.3 整节没落点照办,取 (a) 方案:独立成第 04 章,九节,并在 20 §5 结账「哪几条 16 篇一次没回来处理」
3主线第 3 步跳级:「不能重训」不止算力,还有下游数据太少照办:主线第 3 步补一级台阶,04 章 §3 单独一节讲,07 章 §5 首现处立「少样本」
4少样本 / FID / 码本 / 超网与进化搜索 五个词首现在没解释的位置照办:少样本落 07 §5;FID 落 15 §7;码本从 19 前移到 17 §3;超网与进化搜索各在 10 §5 就地解释并计入配额
501 §5 躲了 Transformer 这个词照办:01 §5 照原书留名,大白话讲清后名字放句末
608 §5 一节六张生面孔,顶破节级配额照办:拆成两节(动权重旁边 / 动输入),并顺势切成 09、10 两章
711 章主走查中途换主干,数不成一条链照办:13 章主走查锁死 ResNet-50(8.3 → 18.5 → 21.8 → 23.9),ViT 版单列一句;§8 的 72.8/86.1 当场写明是另一个基准
803 §1 与 §6 会被读成同一句照办:§6 并进 §2 并当场点破差别,03 收成 5 节
906/07/13 三处原书小节没落点照办:07 补 §7(指令微调与两个版本);08 补 §9(Bongard-HOI);15 补 §8(协同编辑)与 §10(社会影响)
10「14 篇建在 CLIP 上」没说数法;原书小节号标错照办:主线改成「大部分」并注明数法见第 20 章;01 的原书行改成 §1.2.1 + §1.4.1 + 第 5 章 §5.3,03 改成 §1.2.2 + §1.4.1,对照表同步改