A07 · 第 5 章 · 第三编 Transformer 与综合复习
编码器、解码器与 Transformer 架构
由多头注意力、逐位置前馈层、残差和归一化组装编码器与因果解码器,区分 pre/post norm 与 cross-attention,解释教师强制训练、KV 缓存解码、参数量、平方注意力成本和长序列边界。
报告页面错误本章目标
- 写出编码器、decoder-only与encoder–decoder块的子层、形状和mask。
- 比较pre-norm与post-norm的残差公式、最终归一化和梯度路径。
- 解释逐位置FFN如何扩展通道并共享于所有位置。
- 区分教师强制的整段并行训练和自回归逐token生成,并正确维护KV缓存。
- 估算每块参数、注意力与FFN计算和缓存内存,限定长序列能力。
本页目录
Transformer块保持模型宽度不变
输入 token 表示通常为 。多头注意力和逐位置前馈网络都把最后输出映射回 ,使残差相加形状闭合。位置表示在进入块前或注意力内部注入;padding 与因果关系由 mask 控制。每一层可有不同参数,但同一层的参数跨全部位置共享。
一个完整实现还包含 token 嵌入、可能的输出词表投影、dropout、最终归一化和任务头。词嵌入与输出投影可共享,也可独立;共享会改变参数量和尺度约束。只数注意力层会漏掉常占大量参数的前馈层与词表矩阵。
编码器块让每个有效位置读取双向上下文
编码器自注意力的 Q、K、V 都来自当前序列,通常只用 padding mask,不用因果 mask。每个有效位置可读取序列中所有有效键。注意力输出经过残差后,再由逐位置 FFN 处理。FFN 可写为
其中 ,。它对每个位置独立应用同一参数,不在位置间混合;位置混合由注意力完成,通道内非线性变换由 FFN 完成。
设 。输入与层归一化输出均为 ;Q/K/V 重排为 ,注意力分数为 ,拼接和输出投影后回到 ,可与残差相加。
FFN 第一线性层得到 ,激活不改形状,第二层回到 ,再做残差相加。padding mask 从 广播到注意力键轴,FFN 不需要注意力 mask,但填充查询在损失和后续输出处仍要屏蔽。
编码器适合需要整段输入的表示、分类和条件生成源端。若任务要求在线流式处理,双向注意力会读取尚未到达的未来,必须改成块状、因果或有限右上下文,而不能只在部署时截断。
pre-norm与post-norm改变残差中的归一化位置
pre-norm 子层可写为
通常在全部块后再有一次最终 LayerNorm。残差主路直接包含恒等映射,深层梯度有一条不经过子层和归一化的路径。post-norm 则写为
输出每次相加后立即归一,但残差到更早层的梯度要经过归一化 Jacobian。二者不是加载权重时可随意互换的代码顺序,初始化、训练稳定性和最终层归一化都不同。
把一个子层局部导数近似为 。忽略归一化时残差 的导数为 ,含恒等项。pre-norm 的精确导数为 ,仍保留直接的一。
post-norm 导数为 ,整条路径都乘归一化 Jacobian。真实 LayerNorm 是跨特征耦合的矩阵,不能用单个标量完整描述;该例只展示恒等路径差异。实际应记录逐层VJP和激活尺度,而不是据此宣称某形式总更优。
残差 dropout 通常作用于子层输出再相加,位置改变也会改变期望和缓存一致性。归一化的 epsilon、仿射参数和轴要与权重来源匹配。
因果解码器只能读取历史
decoder-only 架构每块包含因果自注意力和 FFN。训练输入为目标序列右移后的 token,位置 预测下一个 token;下三角 mask 阻止读取未来真实 token,因此整段仍可并行算 logits。padding mask 与因果 mask 共同作用。
教师强制训练条件是正确历史 token,而自由生成会把模型自己选出的 token 反馈为下一步输入,产生分布差异。交叉熵下降不保证长生成无误差累积;评估既要看教师强制损失,也要按真实解码规则检查序列级结果。
目标 token 为 。训练输入可取前三个 ,监督目标取后三个 。输入位置一只看 BOS 并预测 A;位置二看 BOS、A 并预测 B;位置三看前三项并预测 EOS。
三个位置 logits 可一次矩阵计算,但因果 mask 确保位置一不会读取 A 或 B 的输入表示。若目标未正确右移,模型可能直接看到要预测 token,训练损失异常低。测试可改变未来 token,确认早期 logits 不变。
encoder–decoder多一个cross-attention子层
编码器先产生源表示 。解码器每块通常依次执行目标因果自注意力、cross-attention 和 FFN。cross-attention 的 Q 来自当前解码表示,K/V 来自编码器输出,因此分数形状为 。
源 padding mask 遮 cross-attention 的无效键,目标因果 mask 只作用于解码自注意力。cross-attention 不应按目标位置再遮掉“未来源 token”,因为完整源序列在条件生成时已经可用。若是同步流式任务,源可见范围需另行定义。
编码器输出只计算一次;生成时各解码层的cross-attention K/V也可由源表示预投影并缓存。不同 beam 可共享只读源缓存,但自身解码 K/V 与 token 历史不同,需要按 beam 重排。
批量二,源长度七,当前目标长度五,模型宽十二,三头、每头四维。cross Q 为 ,K/V 为 ,分数为 ,输出拼接后为 。
源有效长度为七和四时,源 mask 形状可为 ,第二样本最后三列对全部目标查询遮蔽。目标因果 mask 不广播到这张五乘七矩阵;它只用于五乘五的解码自注意力。
参数量主要来自投影与FFN
设标准自注意力总头宽等于 。Q/K/V和输出投影忽略偏置约有 个参数;FFN两矩阵约有 。LayerNorm每次约有 个仿射参数。encoder–decoder的解码块多一个cross-attention,因而多一组约 投影。
取 。自注意力四个主矩阵约有 个权重;FFN有 个权重。忽略偏置和归一化,一个编码块合计约三百一十五万主权重。
头数从八改十六但总宽仍五百一十二时,四个投影矩阵形状不变,主参数量不变;每头维从六十四降到三十二。若词表很大,输入嵌入和输出投影还可能超过单块参数,是否共享必须计入总表。
参数量不随序列长度变,激活与计算却随长度变化。只比较模型文件大小不能预测长上下文显存。
标准注意力成本对长度平方增长
自注意力 QK 与 AV 的核心计算约为 ,分数或概率显式存储约为 。FFN成本约为 ,对长度线性。短序列和大 时FFN可主导,长序列时平方注意力逐渐成为瓶颈。
高效精确内核可以分块计算 softmax,避免把完整 概率矩阵长期写入显存,降低中间内存和访存,但精确全连接注意力的点积数量仍是平方级。局部、稀疏、低秩或核化注意力减少连接或作近似,会改变可见关系与误差,需要任务验证。
cross-attention成本约 ;源目标长度不等时不应简写为同一个平方。padding到整批最大长度会浪费计算,长度分桶可减少浪费但改变批组成。
KV缓存避免重复投影,不消除全部平方工作
自回归生成第 个新token时,过去层表示在因果模型中不会因未来token改变。每层可缓存过去 K/V,只为新token计算一个Q和新的K/V,再让Q读取长度缓存。这样避免每一步重算全部前缀投影与隐藏状态。
若层数 、头数 、每头维 、缓存长度 ,K与V缓存标量数约为 ,还要乘数据类型字节数和beam数。每个新token注意力计算仍随当前长度线性,一段长度N生成的累计注意工作仍近似平方。缓存以空间换重复计算。
缓存必须记录位置、padding或滑窗偏移,并随beam筛选重排。模型训练模式的dropout应关闭;不同批请求合并时,每条序列有效长度不同,不能让新查询读取其他请求或未初始化槽位。
长上下文不等于有效使用长距离
模型“支持”长度可能仅指位置表示、mask和内核不报错。可靠使用还要求训练或适配覆盖相应距离,注意力能找到远处证据,解码质量与校准保持,延迟和缓存符合预算。位置插值、旋转频率缩放、滑动窗口和稀疏连接都会改变模型,应单独评估。
长序列还会稀释固定头数的注意分辨率,重复模式增加检索歧义,重要信息可能被截断或落在训练罕见位置。按依赖距离、输入长度和证据位置分组测试,比只报平均损失更能揭示边界。上下文中存在文本不代表模型必然使用它。
嵌入、输出头与padding仍是架构状态
token嵌入把整数索引映射为 维向量,输出头把隐藏状态映射到词表 logits。若二者共享权重,输出矩阵是嵌入矩阵的转置视图,参数量减少,但输入输出词表和尺度必须兼容。某些实现把嵌入乘 后再加位置表示,另一些不乘;迁移权重时这一常数会改变初始相对尺度。
padding键被mask后,padding查询仍可能经过残差、偏置和FFN得到非零表示。只要它们始终不被有效查询读取且不进入损失,数学任务可保持;但若后续池化或缓存没有继续遮蔽,非零padding会泄漏。每层mask、最终损失和序列汇聚应使用同一有效长度合同。
输出交叉熵常忽略padding目标并按有效token数求平均。若按批内总槽位平均,长短序列比例会改变梯度;若先逐序列平均再平均,每条序列权重相同。两种目标不同,应明确选择并在分布式归约中保持。
训练激活内存不只来自注意力矩阵
反向需要保存各层输入、Q/K/V、softmax所需统计、FFN中间激活和dropout状态。即使高效注意力不保存完整概率, 的FFN激活仍可能很大。梯度检查点可按若干块重算前向,以额外计算换峰值内存;随机状态与mask必须重现。
低精度计算时,softmax归约、LayerNorm统计和大词表损失常需更高精度累积。非有限值应定位到具体子层,不能只靠全局梯度裁剪掩盖。长序列改变归约项数,训练稳定设置也应按长度分组核验。
架构核验顺序
先用不同的 检查每个子层形状和mask;再做未来token不影响过去logit的因果测试;训练与逐步无缓存解码在同一前缀上应给一致下一个token logits;开启缓存后还应与无缓存一致。随后检查pre/post norm、dropout模式和位置索引。
最后分别记录注意力与FFN时间、峰值内存、缓存字节和每token延迟。数值一致只证明实现,任务能力仍需独立数据与真实解码协议评估。
练习
查看提示
查看解答
查看提示
查看解答
查看提示
查看解答
查看提示
查看解答
查看提示
查看解答
查看提示
查看解答
关系与资源
- 多头注意力与位置表示 提供投影、mask和位置机制。
- 归一化方法与尺度控制 解释pre/post norm状态。
- 序列损失、教师强制与解码 提供目标移位和生成规则。
- 注意力机制 提供加权信息汇聚基础。
- 循环网络、门控单元与状态传播 对比顺序状态与全局注意力。
- 长序列、效率与Transformer综合复习 综合架构选择和长上下文边界。
Attention Is All You Need
Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, Illia Polosukhin
阅读注意力机制文章时用于核对原始模型定义和实验边界。
打开官方来源Deep Learning
Ian Goodfellow, Yoshua Bengio, Aaron Courville
适合作为反向传播和优化章节的完整参考。
打开官方来源