ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

注意力机制与 Transformer(Attention + Transformers) 补充

注意力机制与 Transformer(Attention + Transformers) 补充 第一篇从 RNN 到 Attention为什么要引入注意力1.1 RNN 的局限与瓶颈任务背景序列到序列Seq2Seq任务例如机器翻译英语“we see the sky” - 意大利语“vediamo il cielo”。编码器-解码器架构Encoder-Decoder编码器Encoder逐步处理输入序列输出最终隐藏状态。解码器Decoder根据上一个输出​、上一个状态以及上下文向量 c预测当前输出。 致命瓶颈通常将编码器的最后一个隐藏状态直接作为上下文向量 c。这意味着无论输入序列多长哪怕 T1000所有信息都必须被压缩进这一个固定长度的向量 c 中长序列信息必然严重丢失。1.2 Bahdanau AttentionRNN Attention核心思想打破固定长度 c 的瓶颈。在解码器的每一个时间步动态计算一个专属的上下文向量​让它“回看”整个输入序列。步骤 1计算对齐分数Alignment Scores其中是一个简单的线性层Linear Layer将解码器前一步状态​ 和编码器第 i 步状态​ 拼接后映射为一个标量分数​。步骤 2Softmax 归一化得到注意力权重满足且。这代表在生成当前词时对输入序列每个词关注度的大小。步骤 3计算上下文向量Context Vector这是一个对编码器隐藏状态的加权线性组合。步骤 4解码器更新 直观理解与可视化翻译 vediamowe see时注意力权重​ 和​ 较高对应 we 和 see。翻译 ilthe时注意力权重​ 较高对应 the。注意力矩阵图Attention Weight Matrix横轴是输入词纵轴是输出词。对角线上亮起表示顺序对应如果是倒装句注意力会偏离对角线完美捕捉语法结构如欧洲经济区那个案例。✅ 核心优点所有操作都是可微的不需要人为监督网络“应该看哪里”只要定义好损失函数梯度会自动反向传播让网络学会如何对齐。第二篇通用的 Attention 机制Q, K, V2.1 从单查询到多查询我们将 RNN 的架构剥离只保留 Attention 操作。把解码器状态看作查询Query编码器状态看作数据Data。单查询q 与每个​ 计算点积相似度经过 Softmax 得到权重​输出​。 缩放点积Scaled Dot-Product当向量维度 D 很大时点积结果会很大导致 Softmax 进入饱和区梯度趋近于0。因此需要除以​​。2.2 引入 Key 和 Value 矩阵为了让数据扮演不同的角色我们引入了键矩阵和值矩阵​。输入查询向量数据向量。投影键Key维度。值Value​维度。计算步骤MATLAB格式% 1. 计算相似度矩阵 E E (Q * K) / sqrt(D_Q); % 形状: [N_Q x N_X] % 2. Softmax 归一化得到注意力权重 A (沿着 N_X 维度) A softmax(E, dim2); % 形状: [N_Q x N_X] % 3. 计算输出 Y (值的加权线性组合) Y A * V; % 形状: [N_Q x D_V] 直观比喻搜索引擎Query你在搜索框输入的关键词。Key网页的标题用来和你的搜索词匹配。Value网页的正文内容当你点击标题后实际获取的信息。2.3 交叉注意力Cross-Attention vs 自注意力Self-AttentionCross-AttentionQ 来自一个序列如解码器K,V 来自另一个序列如编码器。用于机器翻译、图文问答等。Self-AttentionQ,K,V 全部来自同一个输入序列 X。通常简写为融合矩阵乘法第三篇Self-Attention 的局限与改进3.1 置换等变性Permutation Equivariance性质如果打乱输入序列的顺序输出向量将完全保持不变只是顺序也对应被打乱。即 F(σ(X))σ(F(X))。 致命问题Self-Attention 本身完全不知道序列的先后顺序对于它来说这句话是 我 打 你 还是 你 打 我 没有任何区别。3.2 位置编码Positional Encoding解决方案将位置信息注入到输入中。RoPERotary Position Embedding, 旋转位置编码目前大模型的主流方案。通过将位置映射为角度旋转 Query 和 Key 向量。由于旋转矩阵的性质点积结果只依赖于相对位置差3.3 掩码自注意力Masked Self-Attention应用场景语言模型如 GPT预测下一个词。做法在计算相似度矩阵 EE 后将右上角代表“未来”的位置全部替换为负无穷−∞。效果经过 Softmax 后这些位置的注意力权重变为0。这确保模型在预测当前词时只能看到它之前的词防止“偷看”答案。3.4 多头自注意力Multi-Head Self-Attention动机一组 Q,K,V 只能学到一种关系。我们希望模型能同时关注不同维度的信息。做法并行运行 H 个独立的 Self-Attention 层每个头拥有自己独立的权重矩阵​。计算流程MATLAB格式% 假设 H8, D512, D_H64 Q X * W_Q; % [H x N x D_H] K X * W_K; % [H x N x D_H] V X * W_V; % [H x N x D_H] E Q * K / sqrt(D_H); % [H x N x N] A softmax(E, dim3); Y A * V; % [H x N x D_H] % 拼接多头输出并融合 Y_concat reshape(Y, [N, H*D_H]); O Y_concat * W_O; % [N x D]第四篇Transformer Block 完整架构4.1 Transformer Block 结构Transformer 就是堆叠相同的 Transformer Block。输入一组向量 X。Step 1: 自注意力层所有向量通过多头自注意力交互。Step 2: 残差连接 层归一化LayerNormXXSelf-Attention(X) 残差连接防止梯度消失XLayerNorm(X)对每个样本独立计算均值和方差进行归一化不依赖 Batch SizeStep 3: MLP前馈网络经典结构是升维再降维D→4D→D。XXMLP(X)MLP 对每个向量独立操作XLayerNorm(X)输出一组与输入维度相同的向量 Y。 核心结论整个 Block 的计算量主要来源于6 次矩阵乘法4 次来自 Self-Attention2 次来自 MLP。4.2 语言建模中的 TransformerLLM输入层Embedding Matrix[V x D]将词转换为向量。核心层堆叠 Transformer Block内部的 Self-Attention 必须是 Masked。输出层Projection Matrix[D x V]将隐藏状态映射回词表大小的得分向量使用 Softmax 交叉熵损失Cross-Entropy Loss预测下一个词。第五篇三大序列处理架构大比拼架构处理方式优点缺点RNN (循环神经网络)串行有序序列理论上对长序列友好O(N) 计算和内存无法并行化必须等前一步算完长距离信息容易丢失CNN (卷积神经网络)并行N维网格高度并行计算效率高感受野受限需堆叠很多层才能看到全局信息Self-Attention (自注意力)并行集合向量全局感受野一步到位捕捉长距离依赖高度并行仅靠矩阵乘法计算和内存复杂度为序列长度N较大时会爆显存 解决 Self-Attention 的 O(N2)O(N2) 内存瓶颈Flash Attention。通过分块计算Tiling和重计算Recomputation将内存复杂度降到 O(N)而计算复杂度仍是但极大提升了实际运行速度。第六篇Vision Transformer (ViT)核心思想将图像视为一系列 Patch图像块直接套用标准的 Transformer Encoder。Step 1: Patchify切块将 224×224×3 的图像切成 16×16×3 的小块。序列长度。Step 2: 线性投影Flatten Linear将每个 16×16×3768 维的块展平通过线性层映射为 D 维向量。 等价操作这等价于使用一个16x16卷积核步长为16输出通道为D的卷积层。Step 3: 位置编码加上可学习的位置嵌入Positional Embedding告诉 Transformer 每个 Patch 在 2D 图像中的位置。Step 4: Transformer Encoder不使用 Masking每个图像块都可以看到所有其他图像块。Step 5: 分类头对所有输出向量进行平均池化Average Pool得到 1 个 D 维向量通过线性层映射到类别数 C。第七篇现代 Transformer 架构优化20247.1 Pre-Norm前置归一化原版Post-NormX LayerNorm(X Attention(X))。模型很难学习恒等映射训练不稳定。现代Pre-NormX X Attention(LayerNorm(X))。LayerNorm 放在残差连接内部在 Attention 和 MLP 之前。训练更稳定无需学习率预热Warmup。7.2 QK-Norm做法在计算注意力相似度之前对 Q 和 K 进行归一化通常使用 RMSNorm。公式RMSNorm其中​​。目的防止训练过程中出现梯度尖峰Gradient Spikes使大模型训练更加稳定。7.3 SwiGLU MLP经典 MLP参数量为 2×D×4D8D²。SwiGLU MLP门控机制引入第三个权重矩阵​。其中 ⊙ 是逐元素乘法。为了保持总参数量不变将隐藏层维度 H 设为 8D/3。这样在参数量相同的情况下增加了非线性表达能力。注幻灯片幽默地提到这种架构有效的原因“归功于神的恩典”体现了深度学习的玄学。7.4 Mixture of Experts (MoE, 混合专家模型)动机用极少的计算量增加极大的参数量。做法在 Transformer Block 中并行学习 E 个不同的 MLP 专家。对于每个输入 Token通过一个路由网络Router选择激活其中 A 个专家AE\。案例Gemma 4 26B-A4B128 个路由专家每个 Token 只选择 8 个专家处理。总参数量 26B但每个 Token 仅激活4B参数。极大地提高了模型容量但保持了较低的推理算力需求。 复习建议与核心考点Attention 的计算过程手推 Q, K, V 公式理解缩放点积的作用。Self-Attention 的置换等变性理解为什么需要位置编码。Masked Self-Attention理解 −∞ 在 Softmax 后变成 0 的机制。Transformer Block 的 6 次矩阵乘法理清输入输出和计算流程。三大序列架构对比RNN (串行)、CNN (局部并行)、Self-Attention (全局并行但 O(N²))。ViTPatchify 等价于 Conv2D(stride16)。现代优化Pre-Norm、QK-Norm、SwiGLU、MoE重点理解 MoE 参数大但计算量小的特性。
返回列表