-
Notifications
You must be signed in to change notification settings - Fork 154
Expand file tree
/
Copy pathquiz.json
More file actions
64 lines (64 loc) · 4.45 KB
/
Copy pathquiz.json
File metadata and controls
64 lines (64 loc) · 4.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
{
"questions": [
{
"stage": "pre",
"question": "对于一个查询是文本、图库项是图像的视觉搜索产品,你会首先选择哪个主干?",
"options": [
"一个自监督的 DINOv2 模型",
"一个监督的 ResNet-50",
"一个 CLIP 或 SigLIP 模型——它们学习一个共享的文本-图像嵌入空间,因此文本查询与图像图库之间的余弦相似度开箱即用就有意义",
"一个手工设计的 ORB 描述子"
],
"correct": 2,
"explanation": "用文本查询做检索需要文本和图像最终落在同一空间的嵌入。CLIP/SigLIP 正是用第 18 课的对比损失训练出这一点的。监督的 ImageNet 特征只针对图像。DINOv2 很强但也只针对图像。文本查询要求一个视觉-语言编码器。"
},
{
"stage": "pre",
"question": "在三元组损失训练中,“半难挖掘(semi-hard mining)”是什么意思?",
"options": [
"为训练样本挖加密货币",
"只使用可能的最难负样本",
"随机挑选三元组",
"对每个锚点,选择一个比正样本更远但仍在间隔之内的负样本;容易的负样本不贡献梯度,最难的负样本可能使训练不稳定,所以半难是最佳平衡点"
],
"correct": 3,
"explanation": "三元组损失的梯度只有在 d(a, n) < d(a, p) + margin 时才非零。容易的负样本(已经很远)给出零梯度。最难的负样本可能使训练坍缩。半难——d(a, p) < d(a, n) < d(a, p) + margin——正是损失既有信息量又不至于不稳定的区间。FaceNet 在 2015 年引入了这一做法,它至今仍是三元组微调的默认选择。"
},
{
"stage": "post",
"question": "你的检索系统报告 recall@10 = 0.95,但 recall@1 = 0.42。你应该得出什么结论?",
"options": [
"嵌入空间结构正确——相关项通常在前 10 名之内——但前 10 名内部的排序带噪声;一个重排序模型(交叉编码器、二阶段打分器)或更长的度量学习微调能在不损害 recall@10 的情况下修复 recall@1",
"评估出错了",
"数据从图库泄漏到了查询",
"模型在过拟合"
],
"correct": 0,
"explanation": "recall@K 与 @1 的对比告诉你信息位于何处。高 recall@10 配低 recall@1 意味着检索大致正确,但模型对前几名的排序没有信心。重排序——一个把每个 top-K 候选与查询逐一打分的独立模型——是生产中的修复办法,也是 Pinterest 和 Google Photos 这类搜索引擎所采用的。"
},
{
"stage": "post",
"question": "在未归一化的嵌入上计算余弦相似度并不是真正的余弦相似度——哪里出错了?",
"options": [
"没什么,没问题",
"它把方向和模长混在一起;只有当两个向量都做了 L2 归一化时 cos(a, b) 才正确。在未归一化的嵌入上,无论方向如何,大模长的项都会占主导,使排名偏向模长大的向量",
"矩阵乘法会溢出",
"PyTorch 会报错"
],
"correct": 1,
"explanation": "cos(a, b) = (a . b) / (||a|| * ||b||)。跳过归一化得到的是原始内积,它按被模长加权的方向来排序。在典型的神经嵌入上,各样本的模长相差 2-3 倍,仅这一点就足以主导排名。在计算余弦或在 FAISS IndexFlatIP 中建索引之前,务必先做 L2 归一化。"
},
{
"stage": "post",
"question": "在实例级检索(找这辆具体的车)和类别级检索(找各种车)之间,哪一种需要度量学习微调?",
"options": [
"类别级",
"两者需要相同程度的微调",
"实例级。现成的 DINOv2 和 CLIP 嵌入能很好地区分类别,但无法区分同一类别中视觉相似的不同实例。在 (同一实例, 不同实例) 对上做三元组或对比微调,能把嵌入在每个实例周围收紧",
"两者都不需要"
],
"correct": 2,
"explanation": "类别级检索是预训练模型本就擅长的:猫聚在猫附近,狗聚在狗附近。实例级——同一辆车、同一张脸、同一个商品 SKU——需要度量学习,因为同一商品的两个实例在通用嵌入空间中看起来非常相似。在实例标注的对上用三元组或 InfoNCE 微调,会缩小实例内距离、增大实例间距离。"
}
]
}