注意力机制 —— Transformer 的心脏
上一课你知道了 Qwen3-ASR = 音频编码器 + 大语言模型。今天拆开看它们共同的心脏:注意力机制(Attention)。读懂这一课,你未来读 Qwen3-ASR 的代码时,那 90% 看不懂的部分就一下子少了一大半。
一、先解决一个前置问题:词怎么进电脑
神经网络只会算数字,所以任何东西进模型前都要先变成一串数字,也就是向量。把词元变成向量的过程叫嵌入(Embedding)。嵌入的好处在:意思相近的东西,向量距离也近——"手机"和"电脑"的向量很近,"手机"和"照片"就远一些。
但这里立刻冒出一个难题:
「我用苹果手机拍了一张苹果的照片」
两个"苹果"是同一个词,查词表只能得到同一个向量——可一个是品牌,一个是水果。谁来区分它们?答案是:靠周围的词。这就是注意力机制的使命。
二、注意力:每个词环顾四周,重新认识自己
下面这个演示是手造的示意数据,但逻辑与真实模型一致。点两个紫色的"苹果",看它们各自把注意力放在谁身上:
同一个词,因为关注的地方不同,获得了不同的含义表示。这就是注意力解决"一词多义"的方式——不查字典,查环境。
演示里的权重是手造的示意——但"相关度怎么变权重"这件事,三行 Python 就是真的。点积当打分,softmax 归一成比例,亲手改方向看权重变化:
三、Q、K、V:注意力的三件套
那么"相关度"是怎么算出来的?每个词的向量会同时变换出三个角色:
打个比方:你在图书馆找资料。你的查询(Q)是"品牌相关的词";每本书的书脊标签是键(K);书的内容是值(V)。你拿 Q 扫一圈所有 K,越匹配的书抽出来越多(V 按 weight 混合),最后你手里的资料就是"新表示"。
四、自注意力、多头、位置:三块拼图补齐
自注意力(Self-Attention)
就是"序列自己问自己":句中每个词同时向所有词(包括自己)发出 Q,也在被所有词查询。上面的演示就是自注意力。音频也一样——AuT 编码器里,每一帧声音向前后所有帧查询,"分清同音字靠的就是前后帧"。
多头注意力(Multi-Head)
一组 Q/K/V 只能学一种关注模式。于是并行放好多组,各学各的:一头盯"语法搭配"(动词找宾语),一头盯"语义关联"(苹果找手机),一头盯"邻近位置"……最后把各头结果拼起来。Transformer 里动辄几十个头,Qwen3-ASR 的两个组件也不例外。
位置编码(Positional Encoding)
注意力的打分只看向量内容,天然不知道词的先后——"我打你"和"你打我"会得到一样的关注度!所以在向量进入注意力前,要把"我在第几位"的信息加进去。现代大模型(含 Qwen3 系列)多用 RoPE(旋转位置编码)实现,细节以后碰代码时再展开。
五、这一切长在 Qwen3-ASR 的哪里
| 位置 | 注意力在干什么活 |
|---|---|
| AuT 音频编码器 | 音频按帧切成序列后,帧与帧之间做自注意力:每一帧吸收前后声音的信息,拼出"听懂了"的上下文表示——嘈杂环境、连读吞音,靠这个补全 |
| Qwen3 LLM 解码器 | 生成每个字时,注意力一边看向音频表示("我听到了什么"),一边看向已生成的文字("我说到哪了"),然后决定下一个字元 |
| 热词机制 | 你提供的领域词表作为普通文字进入解码器,生成专有名词时注意力会落在热词上——这就是第 1 课示意图里那条虚线箭头 |
检索练习
本课主读材料
The Illustrated Transformer — Jay Alammar
读法:这篇图多字少,正好对应今天的 Q/K/V 和自注意力。读时把图里的英文 token 换成今天的"苹果"句子脑内重演一遍。读不完没关系,读到"Multi-Headed"小节即可。
可选视频:3Blue1Brown 的注意力可视化(YouTube 搜 "3Blue1Brown attention")——睡前看,给直觉加固。
本课新术语已入 术语表:向量/嵌入、上下文、注意力、Q/K/V、自注意力、多头注意力、位置编码、softmax、Transformer。