第 2 课作业手册

主题

作业 2:Attention 与 Transformer

对应材料

致谢

本作业来自 Yejin Choi 老师课程 CSE 517/447 的 Assignment 2。
作业说明中注明,该作业主要由 Yegor Kuznetsov、Liwei Jiang、Jaehun Jung 设计,并得到多位同学与助教的反馈支持。这里致谢。


一、这份作业在考什么

这份作业不是单纯考你会不会调用 Transformer,而是在考三种不同层次的理解:

  1. 概念层:你是否真正理解 attention 在做什么。
  2. 实现层:你是否能从零写出 scaled dot-product self-attention。
  3. 实现层进阶:你是否能把 attention / Transformer 的关键部件落实到代码实现里。

因此,这份作业比第 1 课的 PyTorch 基础作业更接近“真正的大模型基础能力”。


二、作业结构

作业分成两个核心部分。

第 1 部分:Understanding Attentions

对应 notebook:

你要做的事情包括:

真正想考什么


第 2 部分:Building Your Own Mini Transformer

对应 notebook:

你要做的事情包括:

真正想考什么


三、每部分的完成建议

1. A2S1:先建立行为直觉

建议做法:

  1. 先不要急着填答案
  2. 先看 attention(query, key, value)check_query() 在做什么
  3. 每道题先想“想得到怎样的 attention matrix”
  4. 再反推 query 应该如何设计

重点不是猜中一个数,而是解释:


2. A2S2:按 step 完成,不要跳步

建议顺序:

  1. 先写 step 1 的基本 attention
  2. 跑测试 1
  3. 再写 causal mask
  4. 跑测试 2
  5. 再写 multi-head
  6. 跑测试 3

这是最稳的方式。
如果你一次把所有 TODO 都填完,再一起调试,通常会很痛苦。

最需要盯住的点


四、作业提交形式

根据 PDF,这份作业需要同时提交:

  1. 代码
  2. 写作报告

原作业说明还强调:

如果你在本课程中沿用这份作业形式,也建议保留这条要求。


五、建议学生在 write-up 中重点回答什么

关于 A2S1

关于 A2S2

六、做这份作业时要特别注意什么

  1. 不要只追求“代码能跑”
  2. A2S2 一定要重视 shape
  3. 训练效果和泛化效果不是一回事

七、建议学生记录的关键问题

  1. attention 为什么可以像检索一样“挑出”信息?
  2. attention 为什么也可以像池化一样“聚合”信息?
  3. causal mask 为什么让 decoder-only Transformer 适合语言模型?
  4. multi-head attention 的本质收益是什么?
  5. 从零实现 attention 和直接调用 Hugging Face,有什么学习价值上的差别?

八、这份作业真正想让你带走什么

  1. 你应该能把 attention 从“公式”理解成“信息路由机制”。
  2. 你应该能从零实现 Transformer 中最关键的注意力模块。
  3. 你应该开始形成一种能力:既能看懂原理,也能读懂代码,并能把注意力模块落实为可验证的实现。