手撕代码题(一):Transformer 与注意力(10 题)

发布时间:2026/11/11 15:53:17
手撕代码题(一):Transformer 与注意力(10 题) 本篇把 Transformer 手撕题按出现频率排了 10 道,每道给考点定位、解题思路、逐行注释的伪代码,以及面试官看你写完后的下一问。伪代码用 Python 风格,面试时用 numpy 或纯 Python 写都行,关键是维度变换每一步说得出口。题目结构说明:每题四部分。考点定位讲面试官到底在筛什么;解题思路是白板上先写什么后写什么的框架;伪代码逐行注释,# [b, s, d]这种标注就是面试时口述维度的话术,照着说;追问链是写完代码后 80% 会跟上的问题,附一句话答法。标记:⭐ 高频(出现率过半)、🔥 近两年新增。Q1 手撕 Self-Attention(含缩放与因果掩码)⭐考点定位:全场出现率最高的一道手撕。面试官在筛三件事:缩放因子写不写、mask 的方向对不对、softmax 沿哪个维度。前两件筛掉背题的,第三件筛掉没跑过代码的。解题思路:先写签名和维度注释,再按「线性投影 → 缩放点积 → 掩码 → softmax → 加权求和」四步落笔。掩码方向记一句话:上三角是未来,要屏蔽。伪代码:def self_attention(x, W_q, W_k, W_v, d_k): # x: [batch, seq_len, d_model] Q = x @ W_q # [b, s, d_k] K = x @ W_k # [b, s, d_k] V = x @ W_v # [b, s, d_k] ​ scores = Q @ K.transpose(-2, -1) # [b, s, s] 每行是 q 对所有 k 的相似度 scores = scores / sqrt(d_k) # 缩放:点积方差约 d_k,不除会导致 softmax 饱和 ​ # 因果掩码:位置 i 只允许看 j = i mask = triangular_ones(seq_len, upper=True) * (-1e9) # 上三角(未来)填负无穷 scores = scores + mask # 加负无穷后 softmax 权重趋近 0 ​ attn = softmax(scores, dim=-1) # 沿最后一维(key 维)归一化,务必说出口 return attn @ V # [b, s, d_k]追问链:「为什么除以 √d_k?」→ d_k 大时点积方差 ≈ d_k,softmax 退化成 one-hot,梯度消失;√d_k 把方差拉回 1。「mask 为什么加负数而不是置 0?」→ 置 0 仍是合法 score,softmax 后照样分到权重;负无穷才让权重趋近 0。「softmax 之前还有哪步可以做?」→ 加 QK 偏置或 ALiBi 的距离偏置,都在 score 上动手。Q2 手撕 Multi-Head Attention ⭐考点定位:单头注意力几乎人人会,多头的分头与合头 reshape是真正的分水岭。维度变换说不出「先拆最后一维再交换轴」的,基本没自己实现过。解题思路:核心口诀「先投影、再拆头、算完拼回去」。拆头不引入任何新矩阵,纯 reshape 操作。伪代码:def multi_head_attention(x, W_q, W_k, W_v, W_o, n_heads): b, s, d_model = x.shape d_head = d_model // n_heads # 一定要整除,面试官可能追问 ​ Q = x @ W_q # [b, s, d_model] # 拆头:最后一维切成 n_heads 段,head 维提到 batch 后面 Q = Q.reshape(b, s, n_heads, d_head) # [b, s, h, d] Q = Q.transpose(1, 2) # [b, h, s, d] 变成独立 batch,各自算注意力 K, V = 同样流程(x, W_k, W_v) ​ out = scaled_dot_product_attention(Q, K, V) # [b, h, s, d],复用 Q1 ​ out = out.transpose(1, 2) # [b, s, h, d] 拼头第一步:head 维挪回去 out = out.reshape(b, s, d_model) nb

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询