跳到主要内容

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

这一章讲三件事: 「塞进模型内部」具体能塞在哪三个位置; 为什么这三种谁也赢不了谁;以及既然选不出来,怎么让机器替你选。 它在全书链条里的位置: 第 08 章改输入端那句话、第 09 章改输出端, 这一章改的是主干内部——三个位置到这里就齐了。 ⚠️ 重要前提:这一章的实验用的不是 CLIP,是一个在 ImageNet-21K 上预训练的 ViT。 所以它的绝对分数和第 08、09 章不能直接比,书里也没有比过。

1. 顶层全景:三个位置,一次看全

先把三章的成果拼成一张图——这是「适配一个已训好的模型」的全部下手处:

输入端 主干内部 输出端
┌─────────┐ ┌──────────────────────────┐ ┌──────────────┐
│ 那句话 │ │ 第 1 层 …… 第 12 层 │ │ 出来那串数 │
│(第08章)│ │ ↑ ↑ ↑ │ │(第 09 章) │
└─────────┘ │ VPT Adapter LoRA │ └──────────────┘
│ 塞几个 接在前馈 挂在 q/k │
│ 人造 那一小段 的投影 │
│ token 之后 矩阵旁边 │
└──────────────────────────┘
↑ 这一章讲这三个

图说:三种做法都只训自己那一小块,**主干全程冻住**。
它们的差别不在「训多少」,而在「插在哪个零件旁边」。

本章的主走查: 一个千类分类任务、每类 16 张样例, 主干是在 ImageNet-21K 上预训练的 ViT-B/16(12 层):

① 12 层里每一层都装上三种模块,宽度都开到最大 100
→ 得到一张「所有配置都在里面」的大网(超网)
② 训这张大网:每次前向随机抽 5 个配置来训,外加最大和最小两个
→ 主干一个数都不动,只训那三种模块的权重
③ 进化搜索:先随机造一批配置 → 留最好的几个 → 交叉、变异 → 下一批
→ 挑出一个具体配置(哪层留哪个模块、各多宽)
④ 用这个配置重训一遍(这一步可以省)
→ 换到四个「画风变了」的数据集上测:66.1 / 24.8 / 11.9 / 28.5
(最强的单一模块是 59.3 / 20.0 / 6.9 / 23.3)

图说:**这四步的数字全是书里的真数。** 三步的耗时分别是
3.1 + 2.0 + 1.2 = 6.3 个 GPU 小时(每个数据集)。

2. 第一个位置:接在每一层前馈那一小段之后(Adapter)

先回忆第 02 章:一个 Transformer 层里有两大块—— 一块是注意力(每块去看别的块),一块是前馈(每块各自过一个小网络加工一下)。

Adapter 的做法:在每一层前馈那一块的输出后面,插一个瓶颈形状的小网络1:

这一层前馈的输出 h(每个位置 d 个数)

├─ 降维:d 个数 → r 个数(r 远小于 d)
├─ 过一个非线性
├─ 升维:r 个数 → d 个数

加回原来的 h

图说:形状像个沙漏,所以叫「瓶颈」。r 就是这一族方法的主要旋钮——
**它决定了这一层新增多少个可训练的数。**

注意这和第 09 章那个「外挂」的差别:

第 09 章的外挂这里的 Adapter
位置整个编码器的输出之后每一层内部
数量一个每层一个
它影响什么只影响最终那串数影响后面每一层的计算

书里在第 09 章那一节里其实点过这件事:原始的适配器本来就是嵌在所有层里的, 第 09 章那篇是把它简化成了只挂最后。

3. 第二个位置:挂在 query 和 key 的投影矩阵旁边(LoRA)

这一节是全章最需要讲透的机制,因为它是今天最常见的一种适配做法。

先看它动的是什么

第 02 章讲过:每一块要生成 query、key、value 三样东西, 做法是各乘一个训练好的矩阵。LoRA 动的就是其中生成 query 和 key 的那两个矩阵2

问题:直接改那个矩阵不行吗?

不行,因为它太大了。 一个 d×d 的矩阵,d 是 768 的话就是 59 万个数; 12 层、两个矩阵,就是一千四百万个可训练的数—— 而你只有每类 16 张样例(第 04 章第 ⑦ 堵墙)。

做法:用两个瘦矩阵的乘积当修正量

原来: Q = x · W W 是 d×d 的胖矩阵,冻住不动

现在: Q = x · W + s · x · W_down · W_up
└────────┬────────┘
这就是修正量 ΔW

W_down:d×r 的瘦矩阵(把 d 个数压到 r 个)
W_up :r×d 的瘦矩阵(再升回 d 个)
s :一个固定的缩放系数

图说:两个瘦矩阵相乘,形状和 W 一样是 d×d,**但它能表达的变化受限于 r**。
这个「用两个瘦矩阵的乘积代替一个胖矩阵」的技巧叫**低秩分解**。

省了多少: d=768、r=10 时,一个矩阵的可训练参数从 59 万降到 1.5 万—— 降到约 1/38(这个算术是我们做的,书里只给了形状)。

为什么这样有效: 适配一个已经训好的模型,需要的修正本来就不大; 用一个「受限的」修正量,反而正好防住了过拟合。

「LoRA」这个名字必须留下:它是今天最常被提到的适配做法, 你在任何一份模型微调的文档、任何一个开源项目里都会撞见它。

4. 第三个位置:不动权重,只动输入(VPT)

前两种都在动「模型内部的算法」。第三种什么权重都不碰。

做法:在每一层的输入序列里,额外塞进 m 个可训练的 token3:

原来这一层的输入:[CLS] + 196 个图块
现在: [CLS] + 【m 个人造 token】 + 196 个图块
└── 这 m 个是可训练的,不来自任何像素 ──┘

图说:书里的原话是,这相当于**在输入空间里追加了几个虚拟的「像素」**。
它们和真图块一起参与注意力,于是能影响这一层所有块的计算——
**但模型本身一个权重都没改。**

这一族的主要旋钮是 m(塞几个)。

三种做法的一句话总结: Adapter 在前馈之后加一段加工;LoRA 在 query/key 的生成上加一个小修正; VPT 什么都不改,只往输入里掺东西。

5. 谁最好?没有答案——这是这一章存在的理由

书里的立论是一个实测观察4:

在 19 个视觉数据集上,没有任何一种方法在所有数据集上都好。

书里给的具体例子: VPT 在一个「判断物体朝向」的任务上很强, 但在同一个数据集的「判断仰角」任务和一个「数数」任务上,不如另外两种4

还有第二个坏消息: 三种方法对超参都极其敏感—— Adapter 的瓶颈宽度、VPT 塞几个 token,换个值结果就变4

这两条合起来意味着什么: 你没法靠读论文选方法,只能一个个试。 而「一个个试」的成本是实打实的:第 9 节那张成本表里, 手工网格搜索一种方法要 7.2 个 GPU 小时(每个数据集)。

6. 那就让机器搜:先训一张「什么都装上」的大网

这一节的两个新概念都得就地讲清。

第一步:超网

超网就是「把所有候选配置都装进同一张网里」的那张大网。 这里的做法是:12 层,每层都装上三种模块,宽度全部开到最大(100)。 任何一个具体配置(比如「前 6 层用 VPT 宽度 10、后 6 层用 LoRA 宽度 50」), 都是这张大网的一个子集。

训它的办法5:

动作具体做法为什么
每次前向抽几个子网抽 5 个,外加最大和最小那两个不可能把所有配置都训一遍,只能抽样
只训模块,不训主干主干全程冻住这是「参数高效」的前提
权重复用训 100 个 token 的配置时,复用已经训过的 50 个 token 的那部分权重让不同配置共享训练成果,训得更快、更省内存
按模块抽,不按块抽某个模块可以只出现在浅层,另一个只出现在深层上一代的做法是整块整块抽,做不到这种分工

这里有一个很关键的设计取舍: 书里说,不按「块」抽而按「模块」抽, 灵感来自 VPT 那篇论文的发现——把 VPT 集中在浅层参数效率更高5换句话说:搜索空间的设计本身就用上了人的先验。

第二步:进化搜索

进化搜索:先随机造一批配置,评一下分,留下最好的几个当「父母」; 让它们「交叉」和「变异」生出下一批;重复几轮,最后留最好的。

这里的交叉和变异具体是什么6:

  • 交叉: 拿两个配置,在相同的层上互换模块设计;
  • 变异: 以一定概率随机改一个模块的深度或宽度

评分用的是验证集上的表现。 每一轮结束后只保留最好的那几个。

7. 搜索空间只有两件事——而且深度是「前 k 层」

这一节短,但它是理解搜索结果的前提7:

可调项候选值含义
宽度1 / 5 / 10 / 50 / 100Adapter 和 LoRA 是那个 r,VPT 是塞几个 token
深度3 / 6 / 9 / 12装在前 k 层,不是任选 k 层

注意深度那一行的限制: 深度取 3,意思是第 0、1、2 层装,后面 9 层不装你不能让它「只装在第 5 层和第 9 层」。

三种模块各自独立地选这两项,所以一个配置就是 3×(宽度,深度)= 6 个数。

8. 搜出来长什么样:三种模块的分工是有规律的

这是全章最有价值的发现,因为它不只是个分数。

书里把搜出来的结构平均起来看,得到三条观察8:

观察具体是什么
Adapter 和 LoRA 扎堆在深层而且宽度大于 4;在浅层几乎不出现
VPT 几乎每一层都有但宽度在不同任务组之间差别很大:偏自然图像的任务集中在浅层,偏结构理解的任务集中在深层
三者在深层共存书里把这当成它们互补的强证据

作者给的解释:

神经网络从浅层的像素级特征一路走到深层的语义特征, 而不同的模块擅长的抽象层级不一样8

(神经网络是这一整类模型的通名:一层层堆起来、每层内部全是可调的数; 本书里说的「模型」「主干」「编码器」都属于它。)

判断(我们的,不是书里的): 这三条观察比这一章的准确率数字值钱得多。 它把「选哪种方法」这个问题,从「谁更好」改写成了「在哪一层该用谁」—— 而后者是可以被回答的。 如果错,会错在: 这些结构是在一个特定主干(12 层的 ViT-B/16)、 一个特定搜索空间(深度只能取「前 k 层」)下搜出来的。 换一个主干或者放开深度的限制,分工规律可能就变了——书里没有做这个对照。

9. 效果与成本:值不值

效果:平均高一个点,换环境时高五六个点

在 19 个数据集上,它比最强的单一模块平均高约 1 个点9书里自己说这个数看起来不大,但考虑到这些数据集的多样性,它是显著的。

书里也照实写了它输的地方: 在一组「专门设备拍出来的图像」(遥感、医学影像)上, 它 84.9,而单一模块 84.6——反而略输。作者的归因是: 这类数据离预训练的领域远,超网训练不够稳定9

真正的亮点在换环境的时候10:

方法原数据集另一批照片素描版对抗版艺术画版
Adapter70.559.116.45.522.1
VPT70.558.018.34.623.2
LoRA70.859.320.06.923.3
搜出来的71.566.124.811.928.5

四个变体上分别高 6.8 / 4.8 / 5.0 / 5.2 个点。

⚠️ 这张表里的绝对值,和第 08 章那张(零样本 47.87、当场学 54.77)不能比。 主干不同:那边是 CLIP,这边是 ImageNet-21K 上预训练的 ViT—— 后者根本没有零样本能力,必须先学点什么才能用。 能比的是「同一张表内部的相对关系」。

成本:6.3 个 GPU 小时,而且最后一步能省

方法每个数据集要花的 GPU 小时参数量三个数据集的平均分
单个模块(Adapter / LoRA)1.20.2–0.3M87.7 / 88.4
手工网格搜索出来的最好单模块7.21.5–3.0M89.4
搜出来的6.3(超网 3.1 + 搜索 2.0 + 重训 1.2)0.5M89.9

两条读法11:

  1. 和「手工把每个超参都试一遍」比,搜索反而更便宜(6.3 对 7.2), 而且参数少 3 到 6 倍、分数还高 0.5;
  2. 和「随便选一种、用默认超参」比,它贵 5 倍多(6.3 对 1.2)。

另外两个实用结论:

  • 最后那步重训可以省。 直接用超网里继承下来的权重是 75.1,重训过是 75.5——差 0.4; 而对照的三种单一模块是 72.0 / 73.9 / 74.5,所以不重训也仍然领先12;
  • 进化搜索确实比随机搜索强:89.9 对 88.7,高 1.2 个点13

10. 作者自陈的两条局限

书里在结论里写得很直接14:

  1. 训超网本身是额外开销,会推高整体的开发成本;
  2. 少样本时优势不明显——1 到 2 张样例时,它和 LoRA、Adapter 基本打平 (VPT 明显更差),要到 16 张样例才拉开约 2 个点15

第 2 条要和第 09 章那张表连起来读,才看得出分量: 第 09 章证明样例只有 1 张时,零训练的查表法就赢过训了 14 小时的方法; 这一章证明样例只有 1 到 2 张时,搜索也搜不出优势两条指向同一个结论:样例极少的时候,「学得多」不管用,「用得好」才管用。

11. 作者的判断与证据

书里给了证据的:

说法证据
没有一种方法全胜19 个数据集的完整结果,并点名了具体反例
搜出来的比最强单模块好平均高约 1 个点,19 个里 10 个明显更好
换环境时优势最大四个变体上 +6.8 / +4.8 / +5.0 / +5.2
三种模块的分工有规律把搜出来的结构按组平均后可视化
进化搜索胜过随机搜索89.9 对 88.7
重训可以省75.1 对 75.5
搜出来的结构能迁移从一个数据集搜出的配置搬到 19 个数据集上重训,差距小于 3%;越相似差距越小

属于作者的推断:

  • 「不同模块擅长不同抽象层级」——这是对分工现象的解释,不是被单独验证过的结论;
  • 「在专门设备图像上略输,是因为超网训练不稳」——原文用的是「likely contributes」。

12. 边界与局限

① 主干不是 CLIP,这一章的绝对值不能和别章比。 这是全书最容易被读错的一处,我们已经在第 1 节和第 9 节各写了一次。

② 搜索空间是人设计的。 宽度只有 5 档、深度只能取「前 k 层」、 只有这三种模块——「搜出来的最优」只是这个空间里的最优。

③ 每个数据集要搜一次。 虽然书里证明了搜出来的结构有一定的迁移性 (差距小于 3%),但默认用法仍然是「一个数据集搜一次」

④ 这一章只做了图像分类。 书里在实验开头就把「能不能扩展到分类以外」 列成了待答问题之一,正文里没有回答。

13. 可带走的

  1. 适配一个已训好的模型,一共三个下手处:输入端那句话、主干内部、输出端那串数;
  2. 主干内部又分三种,区别只在挂的位置: Adapter 接在每层前馈之后、LoRA 挂在 query/key 的投影矩阵旁边、VPT 只往输入里塞 token;
  3. 低秩分解 = 用两个瘦矩阵的乘积代替一个胖矩阵,可训练参数能降到约 1/38;
  4. 19 个数据集上没有一种方法全胜,而且各自对超参极其敏感——这是这一章存在的理由;
  5. 超网 = 把所有候选配置装进同一张大网,靠抽样和权重复用来训;
  6. 进化搜索 = 随机造一批 → 留最好的 → 交叉变异 → 下一批;
  7. 搜索空间只有两件事:宽度(1/5/10/50/100)和深度(3/6/9/12,且只能是「前 k 层」);
  8. 搜出来的结构有规律:Adapter 和 LoRA 扎堆深层,VPT 几乎每层都有, 三者在深层共存是它们互补的证据;
  9. 换环境时优势最大:四个变体上比最强单模块高 5 到 7 个点;
  10. 成本 6.3 个 GPU 小时,比手工网格搜索(7.2)还便宜,参数还少 3 到 6 倍;
  11. 最后那步重训可以省(75.1 对 75.5),资源紧的时候直接用继承的权重;
  12. 样例只有一两张时,搜索没有优势——和第 09 章那条「1 张样例时零训练就赢」互相呼应。

14. 原文地图

主题原书章原文位置
三种做法各挂在哪、没有一种全胜、对超参敏感8. Efficient Tuning with Neural Prompt Searchtext/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:37(搜「rank-decomposed residual layers」) · text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:41(搜「no single method consistently performs well」)
Adapter 的瓶颈结构同上text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:85(搜「bottleneck-like neural network」)
LoRA 的低秩分解同上text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:93(搜「low-rank decomposition」)
VPT:往输入里塞虚拟像素同上text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:101(搜「appending virtual “pixels”」)
搜索空间:宽度与深度、深度是前 k 层同上text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:129(搜「the first three layers」)
超网训练:抽 5 个、只训模块、权重复用、按模块抽同上text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:133(搜「five subnets are sampled per forward pass」) · text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:139(搜「weight entanglement」)
进化搜索的交叉与变异同上text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:159(搜「exchanging prompt module designs」)
平均高 1 个点、专门设备那一组略输同上text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:189(搜「1% average improvement」)
换环境的四个变体 +6.8/+4.8/+5.0/+5.2同上text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:217(搜「improvements of 6.8%, 4.8%」) · text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:273(搜「66.1」)
搜出来的结构规律与解释同上text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:379(搜「Adapter and LoRA predominantly appear in the deeper layers」)
结构可迁移(差距小于 3%)同上text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:385(搜「below 3%」)
成本 6.3 小时、参数 0.5M、对照 7.2 小时同上text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:391(搜「1.2 vs. 6.3」) · text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:391(搜「89.9」)
进化搜索胜随机搜索 1.2 个点同上text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:537(搜「outperforms random search by 1.2%」)
重训可省(75.1 对 75.5)同上text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:567(搜「without retraining」) · text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:627(搜「75.5」)
自陈局限:超网开销、少样本时优势不明显同上text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:635(搜「Training the supernet introduces additional computational overhead」) · text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:201(搜「NOAH, LoRA, and Adapter perform similarly」)

Footnotes

  1. 出处:「8. Efficient Tuning of Vision Foundation Models with Neural Prompt Search」第 85 段(text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:85,搜「bottleneck-like neural network」)。原文:Adapter 引入一个瓶颈形状的小网络,由一个降采样层与一个升采样层组成,中间夹一个非线性激活;它作用的对象是一个 Transformer 块里 MLP 的归一化输出。

  2. 出处:同上第 93 段(text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:93,搜「low-rank decomposition」)。原文:LoRA 通过低秩分解修改 query 与 key 的投影层,更新量写成两个瘦矩阵的乘积,再乘一个固定的缩放系数加回原来的投影结果上。「768×768 降到 768×10 + 10×768,约 1/38」这个算术是我们做的,书里只给了形状记号。

  3. 出处:同上第 101 段(text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:101,搜「appending virtual “pixels”」)。原文:VPT 在 Transformer 块的输入里引入可学 token,相当于在输入空间里追加虚拟的「像素」;这一章用的是把它应用到多层的那个变体,输入序列变成 [CLS, 可学 token, 图块嵌入]。

  4. 出处:同上第 41 段(text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:41,搜「no single method consistently performs well」)。原文:在一个包含 19 个视觉数据集的基准上,没有任何一种方法在所有数据集上都表现好;VPT 在场景结构理解类任务(如 SmallNORB 的方位角)上很强,但在另一些(SmallNORB 的仰角、Clevr 的计数)上不如 Adapter 和 LoRA;此外表现对参数选择高度敏感,比如 Adapter 的特征维度或 VPT 的 token 长度。 2 3

  5. 出处:同上第 133 段(text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:133,搜「five subnets are sampled per forward pass」)与第 139 段(text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:139,搜「weight entanglement」)。原文:超网从 ViT-B/16 出发,12 层每层装三个模块、初始宽度都取最大的 100;训练时每次前向按一种「注意力采样」策略抽 5 个子网,再加上最大和最小的子网;只训练模块权重,主干不动;并采用权重复用——训练 100 个 token 的配置时,复用此前训过的 50 个 token 的权重一起更新。按模块抽而不是按块抽这一点,原文说是受 VPT 那篇「把它集中在浅层更省参数」的发现启发 2

  6. 出处:同上第 159 段(text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:159,搜「exchanging prompt module designs」)。原文:搜索从 K 个随机架构开始,选出表现最好的 k 个当父代,通过交叉(在相同的层上互换模块设计)与变异(以概率 Pm 随机改深度或宽度)产生子代;每一轮结束后按验证集表现只保留最好的 k 个。

  7. 出处:同上第 129 段(text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:129,搜「the first three layers」)。原文明确:每个模块两个可调项——嵌入维度 ∈ {1,5,10,50,100},深度 ∈ {3,6,9,12};深度决定模块装在哪几层,例如 VPT 深度为 3 意味着装在前三层(第 0、1、2 层),其余层不装。

  8. 出处:同上第 379 段(text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:379,搜「Adapter and LoRA predominantly appear in the deeper layers」)。原文三条观察:结构理解那一组把大部分参数分给深层;Adapter 与 LoRA 主要出现在深层且宽度大于 4,浅层几乎没有;VPT 几乎分布在所有层,但宽度在不同组之间差别很大(自然图像组集中在浅层,结构理解组集中在深层);三者尤其在深层共存,是它们互补的强证据。解释见结论段第 633 段:网络从浅层的像素级特征走向深层的高层语义特征,不同模块适合抽取不同抽象层级的特征 2

  9. 出处:同上第 189 段(text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:189,搜「1% average improvement」)。原文:比最强的单一模块(LoRA)平均高 1%,「1% 看起来不多,但考虑到这个基准的多样性,它是显著的」;同时坦承在「专门设备图像」那一组略输(84.9 对 84.6),归因于这类任务离预训练领域(ImageNet-21K)较远,超网训练稳定性下降 2

  10. 出处:同上第 217 段(text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:217,搜「improvements of 6.8%, 4.8%」)与表 8.1 所在的第 273 段(text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:273,搜「66.1」)。设定是在千类数据集上用每类 16 张样例训练,再到四个漂移数据集上测。注意主干是 ImageNet-21K 预训练的 ViT-B/16,不是 CLIP——这一点在同章第 121 段的实验设置里交代。

  11. 出处:同上第 391 段(text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:391,搜「1.2 vs. 6.3」)与表 8.3 所在的第 391 段(text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:391,搜「89.9」)。原文:与三种单一模块相比,搜索方法在三个抽样数据集上至少高 1.5% 的平均准确率,而计算开销「可控」(1.2 对 6.3);在相近的预算下(7.2 对 6.3),手工网格搜出来的最好单模块仍落后 0.5%,而且参数是它的 3 到 6 倍。

  12. 出处:同上第 567 段(text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:567,搜「without retraining」)与表 8.5 所在的第 627 段(text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:627,搜「75.5」)。原文:得益于权重复用与那种采样策略,从超网里直接取出的子网不重训也能用;不重训 75.1、重训 75.5,而三种单一模块是 72.0 / 73.9 / 74.5,所以资源紧张时可以安全地省掉重训这一步

  13. 出处:同上第 537 段(text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:537,搜「outperforms random search by 1.2%」)。表 8.4:随机搜索三个数据集平均 88.7,进化搜索 89.9。

  14. 出处:同上第 635 段(text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:635,搜「Training the supernet introduces additional computational overhead」)。原文:训练超网引入额外的计算开销,推高整体开发成本;而且如少样本实验所示,这个方法需要足够多的标注数据才能发挥潜力

  15. 出处:同上第 201 段(text/38-ch08-8-efficient-tuning-of-vision-foundation-models-w.txt:201,搜「NOAH, LoRA, and Adapter perform similarly」)。原文:在低数据量(1 或 2 张样例)时,搜索方法与 LoRA、Adapter 表现相近,而 VPT 明显更差;样例增加到 16 张时,搜索方法才拉开约 2% 的差距。