【AI加油站】第一百四十三部:从RNN到Transformer:一文读懂注意力机制如何颠覆深度学习(附下载)

李飞飞斯坦福课程精华:Attention Is All You Need
在深度学习的发展历程中,注意力机制和Transformer架构的诞生,堪称一场静悄悄的革命。从机器翻译到图像描述,从自然语言处理到计算机视觉,它们正在以惊人的速度取代RNN、LSTM,甚至可能彻底改变卷积神经网络的地位。
今天,我们跟随斯坦福大学李飞飞团队的经典课程,系统梳理注意力机制与Transformer的核心思想、演进脉络和技术细节。
一、从RNN的局限说起
在注意力机制出现之前,处理序列数据(如文本、语音)的主流工具是循环神经网络(RNN)。RNN通过共享权重和循环连接,能够处理变长序列。但它有一个致命的缺点:顺序计算——当前时间步的隐藏状态必须等前一步计算完毕才能进行,导致训练速度慢,且难以捕捉长距离依赖。
LSTM虽然在一定程度上缓解了梯度消失问题,但顺序计算的本质没有改变。
二、注意力机制的诞生:让模型学会“看哪里”
1. 图像描述中的注意力
图像描述任务:输入一张图片,输出一段描述文本。传统做法是用CNN提取全局特征,再输入RNN解码器生成句子。但这种方法在每个时间步都使用同一个上下文向量,无法关注到图像的不同区域。
注意力机制的改进:解码器的每一步都动态计算一个新的上下文向量,该向量只关注与当前要生成的词语最相关的图像区域。
具体做法:
• 从预训练CNN中提取空间特征:形状为 ( H \times W \times D ) 的特征图,每个位置对应图像的一个局部区域。 • 在解码的每个时间步 ( t ),用上一时刻的隐藏状态 ( h_{t-1} ) 与每个空间特征 ( z_{i,j} ) 计算对齐分数 ( e_{t,i,j} = f_{att}(h_{t-1}, z_{i,j}) )。 • 对分数做softmax得到注意力权重 ( a_{t,i,j} )。 • 加权求和得到上下文向量 ( c_t = \sum_{i,j} a_{t,i,j} z_{i,j} )。 • 用 ( c_t ) 和 ( h_{t-1} ) 共同预测当前词。
这种机制模仿了人类视觉的扫视——我们不会一次看清整个画面,而是依次聚焦到不同区域。实验中,模型在没有显式监督的情况下,自己学会了在生成“狗”时关注狗的区域,在生成“草地”时关注草地。
2. 机器翻译中的注意力
在NLP的序列到序列任务中,注意力同样大放异彩。以英文到法文翻译为例:
• 编码器将源语言句子逐词编码为隐藏状态序列 ( z_1, z_2, ..., z_T )。 • 解码器生成目标语言单词时,计算当前隐藏状态与每个源语言隐藏状态的对齐分数,得到注意力分布。 • 上下文向量 ( c_t = \sum_i a_{t,i} z_i ) 提供给解码器。
有趣的是,注意力权重可视化后显示:模型学会了不同语言的词序对齐。比如英法翻译中,“European Economic Area”对应“zone économique européenne”——词序虽然不同,但注意力权重正确地连接了相应位置的词。
三、通用注意力层:抽象出统一范式
从上述例子中,我们可以抽象出一个通用注意力层,它包含三个核心组件:
• 输入:一组向量 ( X )(形状 ( N \times D ))和一个查询向量 ( q )(形状 ( D ))。 • 对齐:计算查询与每个输入向量的相关性分数 ( e_i = f_{att}(q, x_i) )。 • 注意力权重:( a = \text{softmax}(e) )。 • 输出:上下文向量 ( c = \sum_i a_i x_i )。
1. 点积注意力的缩放
最简单的对齐函数是点积:( e_i = q \cdot x_i )。但当向量维度 ( D ) 较大时,点积的方差会变大,导致softmax输出接近one-hot,梯度稀疏。解决方法:除以 ( \sqrt{D} ) 进行缩放,即 ( e_i = (q \cdot x_i) / \sqrt{D} )。
2. 加入可学习的投影
为了让模型更灵活,可以引入**键(Key)和值(Value)**的线性变换:
• 键向量:( k_i = x_i W_k )(用于对齐) • 值向量:( v_i = x_i W_v )(用于输出)
于是对齐分数变为 ( e_{i,j} = q_j \cdot k_i / \sqrt{D_k} ),输出为 ( y_j = \sum_i a_{i,j} v_i )。查询也可以有多条(形状 ( M \times D_q )),输出对应 ( M ) 个上下文向量。
这就是缩放点积注意力的标准形式,也是Transformer的基本构件。
四、自注意力:让序列内部互动
如果查询也来自输入序列本身,就得到了自注意力:每个向量与其他所有向量计算注意力,从而捕捉序列内部的依赖关系。
对于输入序列 ( X )(( N \times D )):
• 查询矩阵 ( Q = X W_q ) • 键矩阵 ( K = X W_k ) • 值矩阵 ( V = X W_v )
输出为 ( \text{Attention}(Q,K,V) = \text{softmax}\left(\frac{QK^T}{\sqrt{D_k}}\right) V )
自注意力是置换不变的——它不关心输入的顺序。这既是优点(可以处理无序集合),也是缺点(丢失了位置信息)。
五、位置编码:重新注入顺序信息
为了处理有序序列(如句子或空间排列的图像特征),我们需要位置编码。理想的位置编码函数应满足:
1. 每个位置有唯一编码 2. 不同长度序列中,相同距离的位置编码差异一致 3. 能泛化到比训练时更长的序列 4. 值有界且确定性
实践中常用的两种方案:
• 可学习的位置编码:为每个位置学习一个嵌入向量,需要预设最大长度。 • 正弦/余弦位置编码(Transformer原始论文):使用不同频率的正弦和余弦函数,无需学习,且能外推到任意长度。
[
PE_{(pos, 2i)} = \sin(pos / 10000^{2i/d}) \
PE_{(pos, 2i+1)} = \cos(pos / 10000^{2i/d})
]
将位置编码与输入向量相加(或拼接),即可让自注意力感知位置。
六、多头注意力:从不同角度观察
单次注意力可能只捕获一种依赖关系。多头注意力将查询、键、值分别投影到多个不同的低维空间,每个“头”独立计算注意力,然后将所有头的输出拼接起来,再经过一次线性变换。
这相当于让模型从多个子空间学习不同类型的相关性(比如语法关系、语义相似性、指代关系等),大大增强了表达能力。
七、Transformer:完全基于注意力的架构
Transformer由Google团队在2017年提出,论文标题《Attention Is All You Need》。它完全摒弃了RNN和CNN,仅由注意力层和前馈网络堆叠而成。
1. 编码器(Encoder)
每个编码器块包含两个子层:
1. 多头自注意力:带残差连接和层归一化。 2. 前馈网络(MLP):每个位置独立的全连接网络,同样带残差和层归一化。
输入经过位置编码后,依次通过多个编码器块(原论文中 ( N=6 ))。自注意力是唯一让不同位置交互的环节,MLP只独立处理每个向量,因此可以完全并行计算。
2. 解码器(Decoder)
解码器结构与编码器类似,但增加了第三个子层:
• 掩码多头自注意力:防止解码时看到未来位置的信息(通过将未来位置的注意力分数设为 (-\infty))。 • 编码器-解码器注意力:查询来自解码器,键和值来自编码器的输出,让解码器聚焦于输入序列的相关部分。
3. 优势与挑战
优势:
• 并行计算:所有位置的注意力分数可一次性算出,训练速度远超RNN。 • 长距离依赖:每个位置直接关注所有位置,路径长度为1。 • 灵活处理有序和无序输入。
挑战:
• 内存消耗大:需要存储 ( N \times M ) 的注意力矩阵,对于长序列可能成为瓶颈(但GPU内存正在快速增长)。
八、Transformer在视觉领域的应用
Transformer最初为NLP设计,但很快被引入计算机视觉。
1. 图像描述
使用CNN提取空间特征后,将特征序列送入Transformer编码器,解码器生成描述文本。相比RNN,Transformer能更好地建模图像区域之间的全局关系。
2. 纯Transformer的图像识别(ViT)
既然Transformer可以直接处理序列,那能否将图像直接切成小块(patch),每个小块线性投影成一个向量,加上位置编码,然后送入Transformer编码器?这就是**Vision Transformer(ViT)**的思路。
ViT在ImageNet上取得了媲美甚至超越CNN的效果,而且随着数据和模型规模增大,性能持续提升。这表明Transformer有潜力替代卷积网络,成为视觉建模的新范式。
九、总结:从RNN到Transformer的演进
回顾整条技术脉络:
1. RNN 引入了循环和共享权重,但顺序计算成为瓶颈。 2. 注意力 作为RNN的补充,允许解码器动态聚焦输入的不同部分。 3. 通用注意力层 抽象出查询-键-值的核心范式。 4. 自注意力 让序列内部直接交互,摆脱了循环结构。 5. 位置编码 弥补了自注意力的顺序盲点。 6. 多头注意力 增强了表达能力。 7. Transformer 将这一切整合为一个无循环、无卷积的纯注意力架构,实现了训练速度和模型性能的双重飞跃。
如今,Transformer已经主导了自然语言处理领域(BERT、GPT系列),并迅速在计算机视觉、多模态、语音处理等领域攻城略地。它不仅是学术研究的热点,更是工业界大规模预训练模型的标准基础设施。
正如李飞飞课程中所说:“它们正在快速取代RNN、LSTM,甚至可能彻底取代卷积。” 理解注意力与Transformer,就是理解现代深度学习最核心的范式转变。
参考:Fei-Fei Li, Ranjay Krishna, Danfei Xu. "Lecture 11: Attention and Transformers". Stanford University, May 06, 2021.




本书免费下载地址
关注微信公众号“人工智能产业链union”回复关键字“AI加油站143”获取下载地址。
【AI加油站】第八部:《模式识别(第四版)-模式识别与机器学习》(附下载)
