-
Notifications
You must be signed in to change notification settings - Fork 37
Expand file tree
/
Copy pathquiz.json
More file actions
39 lines (39 loc) · 2.94 KB
/
Copy pathquiz.json
File metadata and controls
39 lines (39 loc) · 2.94 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
{
"questions": [
{
"stage": "pre",
"question": "为什么普通自注意力要把点积乘以 1/sqrt(d_k)?",
"options": ["为了让输出值落在 0 到 1 之间", "为了防止点积在高维度下变得过大,否则会把 softmax 推入梯度极小的区域", "为了把 query 和 key 向量归一化为单位长度", "为了降低矩阵乘法的计算成本"],
"correct": 1,
"explanation": "当 d_k 较大时,随机向量的点积会按 sqrt(d_k) 成比例增长。若不做缩放,softmax 会收到很大的输入,产生近乎 one-hot 的输出,从而梯度消失。"
},
{
"stage": "pre",
"question": "自注意力中的三个投影是什么?",
"options": ["输入、隐藏和输出", "query、key 和 value —— 每个都是同一输入的一个学习线性投影", "编码器、解码器和交叉注意力", "嵌入、位置和段(segment)"],
"correct": 1,
"explanation": "自注意力把输入通过三个不同的权重矩阵投影,产生 query(我在找什么?)、key(我包含什么?)和 value(如果匹配上我输出什么?)。"
},
{
"stage": "post",
"question": "在 8 个 head、d_model=512 的多头注意力中,每个 head 的维度是多少?",
"options": ["512 —— 每个 head 看到完整维度", "64 —— d_model 在各 head 间均分(512/8=64)", "8 —— 每个 head 一个维度", "4096 —— 每个 head 扩展了表示"],
"correct": 1,
"explanation": "多头注意力把 d_model 拆分为 h 个 head,每个在 d_k = d_model/h 维度上运算。每个 head 512/8 = 64 维时,总计算成本等于在完整维度上做单头注意力。"
},
{
"stage": "post",
"question": "自回归注意力中的因果掩码(causal mask)防止了什么?",
"options": ["它防止模型关注 padding token", "它防止每个位置关注未来位置,确保模型在预测下一个 token 时只能使用过去的上下文", "它防止注意力权重变得过大", "它防止模型关注自身位置"],
"correct": 1,
"explanation": "在自回归生成中,token t 不得看到 token t+1、t+2 等。因果掩码在 softmax 之前把未来位置设为负无穷,从而把它们的注意力权重归零。"
},
{
"stage": "post",
"question": "为什么自注意力在序列长度 n 上有 O(n^2) 复杂度?",
"options": ["因为模型有 n 层堆叠在一起", "因为每个 token 都与其他每个 token 计算注意力分数,产生一个 n x n 的注意力矩阵", "因为注意力之后的前馈层是二次方的", "因为通过注意力的反向传播需要 n^2 次梯度计算"],
"correct": 1,
"explanation": "QK^T 矩阵乘法产生一个 n x n 的注意力矩阵,其中条目 (i,j) 是 token i 对 token j 的注意力。计算和内存都按 O(n^2) 增长,这正是长上下文模型需要 FlashAttention 等技术的原因。"
}
]
}