五一五更之二:注意力机制的起源与发展
注意力机制的起源与发展
注意力是我们人类特有的功能之一,这半年读周岭老师的《认知觉醒》、《认知驱动》时候对注意力这个词产生了很深的印象。
人类情绪和能力的优劣差异来自于对自身注意力关注方式的差异。注意力是一种深度沉浸的能力,从大范围看,沉浸能力强的人时常处于支配层,沉浸能力弱的人时常处于被支配层。
在聚精会神的状态下,人类大脑的前额叶皮层就会自动沿着神经通路传递信号,这些信息会奔向与我们思考内容相关的各个脑区,将它们连起来。
海量的数据训练本身就是一个刻意练习的过程,如果在刻意练习的同时,将人类的注意力机制赋予到机器身上,是不是可以也让机器变得更加聪明、专注呢?这就是本文主要想要说明的一个问题,特别是当机器被用在处理语言和视觉的问题上。
深度学习中注意力的本质
注意力机制允许模型在处理信息时模仿人类认知系统,有选择地聚焦于输入数据的相关部分,从而做出更精准的预测或生成更相关的输出 。这一机制的引入,极大地克服了早期模型在处理长序列数据时信息丢失或稀释的局限性 。注意力机制的广泛应用遍及自然语言处理(NLP)(如机器翻译、文本摘要、问答系统)、计算机视觉(CV)(如图像描述、目标检测)以及语音识别等多个领域 。
在注意力机制出现之前,主流的编码器-解码器架构通常试图将整个输入序列的所有信息压缩到一个固定长度的向量中,但是这种做法在处理长序列时尤为捉襟见肘,关键信息的丢失无法难免。注意力机制通过允许解码器在生成输出的每一步“回顾”并动态地关注输入序列的不同部分,直接解决了这一瓶颈问题。这不仅仅是性能上的提升,更是神经网络内部信息流动范式的一次革新。

起源:Seq2Seq中的早期萌芽
神经机器翻译(Neural Machine Translation, NMT)中遇到的信息瓶颈问题是Attention机制出现的Motivation
Attention机制出现之前,传统的编码器-解码器(Encoder-Decoder)架构在处理序列到序列(Sequence-to-Sequence, Seq2Seq)任务,尤其是神经机器翻译(Neural Machine Translation, NMT)时,面临着一个核心挑战:信息瓶颈问题。
编码器负责将整个文本(源语言句子)作为输入序列压缩成一个固定长度的上下文向量(context vector),解码器则基于这个固定长度的上下文向量生成输出序列。当输入序列较长时,固定长度的上下文向量难以承载全部重要信息,导致信息丢失,进而影响模型性能,特别是在翻译长句时尤为明显。
Bahdanau注意力(加性注意力,2014)
- 《Neural Machine Translation by Jointly Learning to Align and Translate》
Dzmitry Bahdanau、Kyunghyun Cho和Yoshua Bengio在2014年发表的论文《Neural Machine Translation by Jointly Learning to Align and Translate》中首次引入了注意力机制,旨在解决上述瓶颈问题 。

核心思想:允许解码器生成目标词的时候,能够“有选择地”关注原序列的不同部分,而不是单纯依赖一个固定长度的上下文向量,这种机制是学习一种源序列到目标序列的“对齐”(alignment)。
编码器
采用双向循环神经网络(Bidirectional RNN, BiRNN),如BiLSTM或BiGRU。BiRNN处理源语言句子序列,并为每个源语言词生成一个注解向量(annotation vector),注解向量通常是前向RNN的隐藏状态和后向RNN的隐藏状态的拼接。BiRNN的使用至关重要,因为它使得每个$ h_j $都包含了其前后词的上下文信息,从而提供了更丰富的表示。
解码器
解码器(通常是另一个RNN)在生成当前目标词
Luong注意力(乘性注意力,2015)
- 《Effective Approaches to Attention-based Neural Machine Translation》
Minh-Thang Luong等人在2015年提出的Luong注意力机制,旨在简化和泛化Bahdanau的注意力模型,并探索了不同的对齐分数计算函数,以期提高效率和效果 。Luong等人的工作明确地受到了Bahdanau模型的启发,并试图在其基础上进行改进和扩展,这标志着注意力机制研究早期的一个趋势:在奠基性的工作之上,探索架构、效率和评分机制的变体。

全局注意力(Global Attention)与局部注意力(Local Attention):
- 全局注意力: 类似于Bahdanau注意力,全局注意力在计算上下文向量时会考虑所有的源端词语。其上下文向量的计算方式相似,但对齐分数的计算函数有所不同。
- 局部注意力: 为了解决全局注意力在处理长句子时计算开销大的问题,Luong等人引入了局部注意力。该机制在每个时间步只关注源端词语的一个子集。它首先预测一个源句中的对齐位置$p_t$然后只考虑$p_t$周围一个窗口内的词语来计算上下文向量。这种方法受到了计算机视觉中硬/软注意力的启发 。局部注意力的提出,是早期解决注意力机制计算可扩展性问题的一次尝试,预示了后续研究中处理极长序列时对注意力机制进行优化的趋势。
破晓:混沌在Transformer之前
Attention因其易用性、高效性,拓展到视觉、语音领域
在神经机器翻译领域取得初步成功之后,注意力机制的核心思想——选择性聚焦——迅速展现出其普适性和强大能力,并被快速应用于计算机视觉、语音识别以及更广阔的结构化数据处理领域。
视觉注意力 - Image Caption
- Show, Attend and Tell: Neural Image Caption Generation with Visual Attention
核心概念:模型在生成图像描述中的每一个词时,能够自动关注图像中的相关区域。例如,在生成词语“飞盘”时,模型会“看向”图像中飞盘所在的区域 。
听觉注意力 - 语音识别
- “Listen, Attend and Spell” - Chan et al., 2016; Chorowski et al., 2015
注意力机制也被成功应用于端到端自动语音识别(ASR)任务,使得模型能够在将语音转录为文本时,关注音频输入中的相关片段 。William Chan等人提出的“Listen, Attend and Spell”(LAS)模型是其中的一个里程碑。
核心概念:LAS模型包含一个“倾听者”(Listener,编码器)和一个“施咒者”(Speller,带注意力的解码器)。倾听者负责处理音频信号,施咒者则根据倾听者的输出和注意力机制生成文本转录。
层级注意力网络
- Hierarchical Attention Networks, HAN - Yang et al., 2016
Zichao Yang等人提出的层级注意力网络(HAN)将注意力机制应用于文档分类等任务,通过模拟文档的层级结构(词构成句子,句子构成文档)来构建文档表示 。
核心概念:在不同层级上应用注意力,使模型能够区分文档中不同部分的重要性。
纪元:Attention is all you need的革命
2017年,由Google研究人员发表的论文《Attention Is All You Need》 引入了Transformer模型,这标志着深度学习领域,尤其是自然语言处理领域的一次范式转换。Transformer模型完全摒弃了以往序列处理中占主导地位的循环神经网络(RNN)和卷积神经网络(CNN)结构,而完全依赖于注意力机制来捕捉输入和输出之间的全局依赖关系 。
传统的RNN(包括LSTM和GRU等变体)在处理序列数据时,其固有的顺序计算特性导致了几个主要瓶颈 :
并行计算受限:RNN按时间步顺序处理数据,使得在序列长度维度上的并行化变得困难,这限制了在现代GPU等并行计算设备上的训练效率。
长距离依赖学习困难:尽管LSTM等结构通过门控机制缓解了梯度消失/爆炸问题,但信息在长序列中逐级传递时,仍可能发生衰减或失真,导致模型难以有效捕捉远距离词语之间的依赖关系。信息从序列一端到另一端的路径长度随序列长度线性增长。
Transformer的核心思想正是为了克服这些限制。

自注意力机制 - Self Attention
自注意力机制是Transformer模型的核心。它允许模型在处理序列中的每个元素(例如,句子中的一个词)时,同时关注序列中的所有其他元素,从而计算该元素的上下文感知表示 。
多头注意力机制 - Multi-Head Attention
为了进一步增强自注意力机制的表达能力,Transformer引入了多头注意力机制 。
然而,尽管Transformer带来了革命性的进步,其核心的完全自注意力机制也引入了新的挑战:计算和内存复杂度均与序列长度成二次方关系 $(O(N^2)$ 。这在处理极长序列时会变得非常昂贵,从而催生了下一阶段对注意力机制效率优化的研究浪潮。
太阳照常升起:DeepSeek-V3 中的多头隐注意力(MLA)
随着大型语言模型(LLM)的参数规模和所需处理的上下文长度持续增长,对推理效率和训练经济性的要求也日益严苛。DeepSeek系列模型,特别是DeepSeek-V2 和DeepSeek-V3 ,引入了多头隐注意力(Multi-head Latent Attention, MLA)机制,作为其在注意力架构上的一项关键创新,旨在实现高效推理和经济的训练。
MLA的设计动机
对于拥有数千亿参数的超大规模模型,推理过程中的主要挑战之一是巨大的KV缓存(KV Cache)。在自回归生成文本时,模型需要缓存先前所有词元的键(Key)和值(Value)向量,以便后续词元的生成能够关注到历史上下文。