Datawhale 大模型基础与量化微调 task1:注意力机制与Transformer
本文介绍了注意力机制的类型和Transformer模型结构。注意力机制分为Soft/Hard Attention和Global/Local Attention两类,分别对应连续权重分配和离散选择的不同方式。Transformer的核心结构包括编码器、解码器、位置前馈网络等组件,重点讨论了位置编码的两种实现方式:可学习的绝对位置编码和基于三角函数的固定编码,并比较了绝对与相对位置编码的优劣。文章还涉
Datawhale 大模型基础与量化微调 task1:注意力机制与Transformer
此博客为Datawhale 组队学习打卡笔记
注意力机制的类型
Soft Attention vs. Hard Attention
- Soft Attention:为输入序列的所有位置都计算一个注意力权重,这些权重是 0 到 1 之间的浮点数(经 Softmax 归一化),然后进行加权求和。这种方式的优点是模型是端到端可微的,可以使用标准的梯度下降法进行训练。其缺点是在处理非常长的序列时,计算开销会很大。
- Hard Attention:在每一步只选择一个最相关的输入位置。可以看作是一种“非 0 即 1”的注意力分配,即选中的位置权重为 1,其他所有位置的权重均为 0。好处是计算量大大减少。但选择过程是离散的、不可微的,因此无法使用常规的反向传播算法进行训练,通常需要借助强化学习等更复杂的技巧。
Global Attention vs. Local Attention
- Global Attention (全局注意力):其思想与 Soft Attention 基本一致,即在计算注意力时,会考虑编码器的所有隐藏状态。
- Local Attention (局部注意力):在每个解码时间步,只关注输入序列的一个局部窗口。
Transformer 整体结构
编码器(Encoder)
解码器(Decoder)
位置前馈网络 (FFN)
残差连接与层归一化 (Add & Norm)
位置编码
- 自注意力机制的主要缺陷在于其 位置无关性。
- Transformer 在将词嵌入向量输入模型之前,为它们加入了一个 位置编码 (Positional Encoding) 向量。其工作方式非常直接
i n p u t embedding = t o k e n embedding + p o s i t i o n a l encoding input_\text{embedding} = token_\text{embedding} + positional_\text{encoding} inputembedding=tokenembedding+positionalencoding这是一种 绝对位置编码,即每个位置(如第 0、1、2 个位置)都有一个固定的编码向量
在实践中,主要有两种实现方式:
可学习的位置编码 (Learned Positional Encoding)
- 在 Encoder-only 模型(如 BERT)中常见;
- 其实现非常简单:创建一个 nn.Embedding 层,大小为 [max_sequence_length, hidden_size]。max_sequence_length 是模型能处理的最大序列长度,这是一个重要的超参数(在很多模型配置文件中被称为 max_position_embeddings)。在训练时,模型会像学习词嵌入一样,自动学习出每个位置(0, 1, 2, …)最合适的向量表示。
基于三角函数的固定编码 (Sinusoidal Positional Encoding)
- 这是原版 Transformer 论文中使用的方法,它不需要学习。
- 使用不同频率的正弦和余弦函数来为每个位置生成一个独特的、固定的编码向量:
P E ( pos , 2 i ) = sin ( pos 10000 2 i d embedding ) P E ( pos , 2 i + 1 ) = cos ( pos 10000 2 i d embedding ) PE_{(\text{pos}, 2i)} = \sin\left(\frac{\text{pos}}{10000^{\frac{2i}{d_{\text{embedding}}}}}\right) \\ PE_{(\text{pos}, 2i+1)} = \cos\left(\frac{\text{pos}}{10000^{\frac{2i}{d_{\text{embedding}}}}}\right) PE(pos,2i)=sin(10000dembedding2ipos)PE(pos,2i+1)=cos(10000dembedding2ipos)
- 由于每个位置 p o s pos pos 和每个维度 i i i 的组合都是独一无二的,所以这种方法能为序列中的每个位置生成一个完全独特的编码向量。这种方法的优势是不同位置的编码向量之间存在固定的线性关系,这可能有助于模型推断出词元间的相对位置。其主要优点是不需要训练,并且理论上可以外推到比训练时遇到的更长的序列。
绝对 vs. 相对位置编码
- 上述两种方法都属于绝对位置编码,因为它们为每个绝对位置(第 1 个、第 10 个等)分配一个特定的编码。
- 然而,这种方式在处理超长文本时可能存在泛化性问题。
- 因此,许多现代的大语言模型(如 Transformer-XL, Llama)转而采用相对位置编码。
- 这种方法不再关注词元的绝对位置,而是直接在注意力计算中建模词元之间的相对距离(例如,“当前词”与“前 2 个词”之间的关系),这被证明在处理长序列时更有效、更灵活。
注意力掩码
- 因果掩码
- 填充掩码
解码器推理与 KV 缓存
参考
更多推荐



所有评论(0)