多头注意力:今天真正弄懂
先记住:一句话定义 + 一句记忆口诀 一句话定义:多头注意力就是把输入特征切分成多个“子空间”,让模型同时站在多个不同角度去观察和关联信息。 记忆口诀:投影分头各算各,拼回线性输出合。
1. 生活类比 想象你在看一段多人圆桌会议的视频: - 如果只有单头注意力,就像你只带了一只眼睛,你盯住了“谁在说话”,就很难同时分心去观察“旁边人的微表情”和“背景里ppt翻页的动作”。 - 多头注意力就像你请了 8 个专业侦探: - 侦探 1 专看声纹与音调起伏(谁在说话); - 侦探 2 专看嘴唇动作与音频是否同步(唇音对齐); - 侦探 3 专看前后几秒的语义上下文(说了什么)。 最后把 8 个侦探的报告汇总拼在一起,得出对当前时刻的完整判断。
2. 核心公式与符号拆解 单个头的计算是缩放点积注意力: $$ \text{head}_i = \text{Attention}(Q W_i^Q, K W_i^K, V W_i^V) = \text{softmax}\left(\frac{Q_i K_i^T}{\sqrt{d_k}}\right) V_i $$ 多头汇总: $$ \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \dots, \text{head}_h) W^O $$
符号逐个看: - $Q, K, V$:输入序列的查询、键、值矩阵。如果是自注意力,三者都来自同一个输入特征。 - $W_i^Q, W_i^K, W_i^V$:第 $i$ 个头的线性投影矩阵,负责把原始特征映射到第 $i$ 个专属子空间。 - $d_k$:每个头的特征维度(通常是 总维度 $d_{model} / 头数 h$)。除以 $\sqrt{d_k}$ 是防止点积过大导致 softmax 梯度消失。 - $\text{Concat}$:把所有头的输出按特征维度拼在一起。 - $W^O$:最后的输出线性层,把拼起来的多头信息融合回原始维度。
3. 它解决什么问题?没有它会怎样? - 解决的问题:单头注意力会对所有关联做加权平均,这会把不同维度的信息“混在一起糊掉”。多头让模型能够同时捕捉多种不同尺度、不同类型的依赖关系。 - 没有它会怎样:在说话人日志(Diarization)中,模型如果只用单头,在遇到两人抢话(重叠语音)时,注意力权重会被迫在两个人之间取折中,导致声纹表征混乱,无法清晰区分“说话人 A”和“说话人 B”。
4. 音视频与说话人日志中的真实位置 - 说话人日志:在 Conformer 或 Transformer 编码器中,多头自注意力层位于局部卷积层之后,用来捕捉说话人跨越数秒甚至数分钟的全局声纹一致性。 - 音视频多模态融合:视频帧序列作 $Q$,音频频谱特征作 $K$ 和 $V$(交叉注意力),不同头分别对齐音视频节拍、嘴型与发音、画面主体与声音来源。
想要建立整体架构直觉,建议去看经典图解资料《The Illustrated Transformer》;想看官方代码如何把张量切块与重组,建议精读《The Annotated Transformer》。
为什么点积结果要除以根号 dk?
多头注意力的参数量比同维度的单头注意力大很多吗?
说话人日志中自注意力的主要作用是什么?
1. 发展流程 - 之前怎么做:RNN/LSTM 串行传递状态,无法并行,且长距离信息衰减严重;单头自注意力虽能全局看,但单一加权容易丢失多样性。 - 为什么出现:2017 年《Attention Is All You Need》提出多头设计,不仅利于 GPU 矩阵并行,还让特征具有了多子空间表征能力。 - 现在怎么用:已成为音视频大模型(如 Whisper、Video-LLaMA、CAM++)的基础标配模块。
2. 与相近概念的区别 - vs 单头注意力:单头只有一个权重分布矩阵;多头有 $h$ 个独立的权重分布矩阵,表达能力强 $h$ 倍且不增加总参数量(因为每个头维度缩减为 $d/h$)。 - vs 多层感知机 (MLP):MLP 只在“单个时间步的特征维度”做非线性变换,看不到前后时刻;多头注意力专门负责“跨时间步的上下文交互”。 - vs 卷积 (CNN):CNN 只看局部固定窗口(如局部 3 个时间步);多头自注意力可以直接看整段音频的任意两个时刻。
3. 当前局限与未来作用 - 当前事实局限:计算复杂度是序列长度 $T$ 的平方级 $O(T^2)$。处理一小时长的完整音频会议时,显存消耗极大,难以直接做全序列多头自注意力。 - 未来推测方向:在音视频超长序列场景下,线性多头注意力、状态空间模型(如 Mamba)与稀疏多头注意力的混合架构可能会逐步替代标准全连接多头注意力。
- 为什么多头注意力的总维度通常保持不变(即每个头维度设为 d/h),而不是每个头都保留完整维度 d?
- 在说话人日志中,自注意力矩阵如果对所有时间步都分配了相近的权重,这说明了什么问题?
- 跨模态注意力(Cross-Attention)中,Q、K、V 分别来自哪个模态更合理?