第 1 题
正确答案:B
没有激活函数的多层线性变换可以合并为单层:$W_3 \cdot W_2 \cdot W_1 = W’$,因此该网络等价于 $y = W’ \cdot x$,无法学到任何非线性特征。这正是激活函数存在的意义。
第 2 题
正确答案:B
Softmax + 交叉熵损失的组合有一个非常简洁的梯度公式:$\delta = \hat{y} - y$。在房价预测的例子中,$\hat{y} = [0.85, 0.15]$,$y = [1, 0]$,所以 $\delta = [-0.15, 0.15]$。注意是预测值减去真实值,不是反过来。
第 3 题
正确答案:B
One-hot 编码中,所有词向量两两正交(余弦相似度为 0),因此"国王"和"女王"的距离与"国王"和"桌子"的距离完全相同。模型无法从向量本身获取任何语义相似度信息。密集词嵌入则将语义相近的词映射到向量空间中相近的位置。
第 4 题
参考答案:
维度效率:如果将位置编码与词嵌入拼接,假设词嵌入维度为 $d$,位置编码维度也为 $d$,拼接后总维度为 $2d$,后续所有层的参数量都要翻倍。而相加保持维度为 $d$,不增加任何参数。
信息融合:相加操作让位置信息和语义信息从一开始就在同一个向量空间中交互。后续的注意力层可以同时利用两种信息做计算。如果是拼接,模型需要额外学习如何将两个独立的子空间关联起来。
实践验证:原始 Transformer 论文的实验表明,正弦/余弦位置编码与可学习位置编码(两者都是相加方式)效果接近,说明相加方式已经足够。
第 5 题
正确答案:C
当 $d_k$ 较大时(如 64 或 128),$Q \cdot K^T$ 的元素量级大约为 $O(\sqrt{d_k})$。如果不做缩放,softmax 的输入值过大,输出会趋近于 one-hot 分布,梯度几乎为零(处于 softmax 的饱和区)。除以 $\sqrt{d_k}$ 将数值拉回方差为 1 的范围,使 softmax 在有效梯度区间工作。
第 6 题
参考答案:
假设 d_model=512, num_heads=8,则 d_k = 512 // 8 = 64。
- 输入 Q 的形状:
(B, T, 512) - 经
Wq线性层后:(B, T, 512)—— 维度不变,但投影到新空间 view(B, T, 8, 64):将最后一维拆分为 8 个头,每头 64 维 →(B, T, 8, 64)transpose(1, 2):交换序列维度和头维度 →(B, 8, T, 64)
这样做的目的是让 (B, 8, ...) 可以被当作 batch 维度并行处理,8 个头的注意力计算可以用一次矩阵乘法完成。
注意力计算后:
5. scores = Q @ K^T:(B, 8, T, 64) @ (B, 8, 64, T) → (B, 8, T, T)
6. output = attn_weights @ V:(B, 8, T, T) @ (B, 8, T, 64) → (B, 8, T, 64)
7. transpose(1, 2):→ (B, T, 8, 64)
8. contiguous().view(B, T, 512):合并多头 → (B, T, 512)
9. 经 Wo 输出投影:(B, T, 512) → (B, T, 512)
第 7 题
正确答案:C
BERT 是 Encoder-Only 架构,使用双向注意力(无 mask),每个 token 可以看到序列中所有其他 token。GPT-3、LLaMA、Qwen 都是 Decoder-Only 架构,使用因果掩码(下三角 mask),只能看到左侧的 token。
第 8 题
参考答案:
因果掩码的作用是防止模型在训练时"偷看"未来的 token。
Decoder-Only 模型的训练目标是:给定前 $t-1$ 个 token,预测第 $t$ 个 token。如果去掉因果掩码,模型在预测第 $t$ 个 token 时能直接看到第 $t$ 个 token 本身(以及之后的所有 token),等于直接看到了答案。
后果:
- 训练时:模型的损失会极低,但它学到的不是"根据上下文预测",而是"直接抄答案"
- 推理时:由于是自回归生成(逐个 token 生成),后面的 token 尚未生成,模型没有答案可抄,性能会急剧下降
- 本质问题:训练和推理的信息条件不一致(train-test mismatch),模型泛化能力崩溃
第 9 题
正确答案:B
Pre-LN 将 LayerNorm 放在残差连接的"前面":$y = x + F(\text{LN}(x))$。这意味着反向传播时,梯度可以沿着残差路径($\frac{\partial y}{\partial x} = 1 + \frac{\partial F}{\partial x}$)直接流向浅层,不需要穿过 LayerNorm。这使得 24-48 层甚至上百层的网络都能稳定训练,不太依赖学习率 warm-up。
第 10 题
参考答案:
语料:“hello world hello”
初始状态:每个词拆成字符
- “hello” →
['▁', 'h', 'e', 'l', 'l', 'o'](出现 2 次) - “world” →
['▁', 'w', 'o', 'r', 'l', 'd'](出现 1 次)
第 1 步合并: 统计相邻 token 对频率:
('h', 'e'): 2(来自两个 “hello”)('e', 'l'): 2('l', 'l'): 2('l', 'o'): 2 + 1 = 3(两个 “hello” + “world” 中无此对,应为 2)
实际上 ('▁', 'h') 出现 2 次,('h', 'e') 出现 2 次… 频率最高的对(假设为 ('h', 'e'),频率 2)被合并:
- 新 token:
'he' - “hello” 变为
['▁', 'he', 'l', 'l', 'o']
第 2 步合并:
重新统计,('▁', 'he') 出现 2 次(频率最高之一),合并为 '▁he':
- “hello” 变为
['▁he', 'l', 'l', 'o']
以此类推,高频词 “hello” 最终会被完整保留为一个 token。
第 11 题
正确答案:B
基础 MOE 中每个 token 需要过所有专家然后加权平均,计算量等于专家数量乘以单个专家的计算量。稀疏 MOE 通过 Top-K 路由机制,让每个 token 只经过 K 个(通常 1-2 个)专家,将计算量从 $O(N)$ 降低到 $O(K)$,同时保留了 $N$ 个专家的总参数量。
第 12 题
参考答案:
共享专家的作用: 共享专家对所有 token 都生效,不经过路由选择。它们负责学习和存储通用知识,如语法规则、常见搭配、世界常识等每个 token 都可能需要的基础信息。
为什么不能只靠路由专家:
- 知识冗余:如果通用知识只存在于路由专家中,每个路由专家都需要各自存储一份相同的通用知识,造成参数浪费
- 不稳定的知识获取:不同 token 被路由到不同专家,如果某个专家恰好没学到某条通用知识,经过该专家的 token 就会丢失这部分信息
- 训练效率:共享专家集中学习通用模式,路由专家可以专注于领域特定知识,分工明确,训练更高效
DeepSeek 的实验表明,加入共享专家后,模型在各种基准测试上的表现都有提升,验证了"通用 + 专业"双轨制的有效性。