解剖层 · 第 6 / 25 课
多头注意力:四双眼睛各看各的
学完这课你能
- 理解多头 = 把 128 维切成 4 份独立的小注意力,各自学不同的「看」模式,最后 concat 合并。
- 认识常见头模式:上一词头 / 标点头 / attention sink 头 / 重复头,并能在真热图里指认。
- 知道中文侧用双向 encoder(albert)看热图的差异:无 causal mask、可做完形填空。
想象一桩案子:五六个侦探围在同一个现场,人手一只放大镜,各盯各的角度——有人看指纹,有人看脚印,有人盯着门锁。多头注意力,就是这场分工。
01为什么要多头
一个位置同时背着好几件事:它语法上跟谁搭配、它在指代谁、隔壁上个词是什么。可上节课的单头注意力,一组 softmax 只能表达一种「看」——盯着指代,就没余力盯相邻。怎么办?注意解法的思路:不是造一个更聪明的头,而是多开几双眼睛——像万花筒,筒还是那只筒,每转一格,同一朵花就换一套图案。
02128 = 4 × 32
pythia 的做法很直接:把 128 维平均切成 4 份,每份 32 维,各自独立做一套 Q、K、V 投影和小注意力——互不通气,各看各的。四份结果拼回 128 维,再过一道输出矩阵 WO 混合,交给后续计算。这条流水线长下面这样。
这笔账划算吗?每个头只有 32 维、每头一套独立权重,多头的代价远小于把单头做宽四倍——而换来的「多视角」,对模型至关重要。
03头的模式类型学
研究者反复在训练好的模型里撞见同几类头:上一词头——每个位置死盯前一个词,语法工程师;标点头——围绕句号逗号聚集;重复头——专找和当前词相同的词,复读检测器。注意到了吗?没有人设计过这些分工,它们是训练自己分化出来的。
本课正文不贴示意图——下面实验台里的 24 张 pythia 真热图,就够你把这几种模式各找出一个。去找找看。
04attention sink
很多头会把大量权重压在第一个 token 上,不管它是什么词。为什么?回想上一课:softmax 要求每行权重总和恰好为 1,「必须分出去」。当一个位置这层确实没东西可看时,它就把没用完的概率砸给开头——一个永远合法、永远在场的「垃圾桶」。这就是 attention sink。
实验台会在你 hover 时按真实数值生成注释,比如「此头 87% 权重落在首个 token——attention sink」。
05中文怎么看
想在中文模型上做同样的解剖?你会撞上一个现实问题:≤40MB 级的中文 decoder(GPT 式生成模型)基本不存在。所以课程选了另一个流派——albert_chinese_tiny,一个双向 encoder(BERT 式理解模型),4 层 12 头 312 维,fp16 权重只有 13MB。
双向意味着没有因果掩码:每个位置左右都看,热图没有三角缺口。它还多一个 decoder 没有的玩法——完形填空:遮住句中一个字,让它预测被遮的是谁。本课「中文对照」抽屉里可以亲手玩。
交互实验:多头对比墙 + 中文对照
引擎加载中…
主视图 2×2 四格热图(当前层全部 4 头并排),layer 滑杆 0–5 横扫看四头协同演化,点格放大看该头真实统计注释。下方「中文对照」默认收起——点击按钮才确认下载 albert 权重 13MB(独立进度条),不开则 0 字节下载。
等待开始下载…
组件挂载点 · 多头对比墙将在下一波接入(中文对照抽屉懒加载 albert 13MB)
组件加载失败。
处理方式:多为网络抖动或权重文件缺失——刷新页面,或在实验台里点「重试」。中文对照在 albert 加载失败时只影响该区块,英文主体不受影响。