Attention Decoder部分核心机制与实现原理
Transformer解码器究竟是如何一步步逐个生成单词的?许多学习者在接触这一部分时,总感觉隔着一层窗户纸——虽然知道它的核心是“自回归生成”,但具体到每一步输入是什么、矩阵如何计算、最终结果如何选取,往往容易困惑。其实并没有那么复杂。今天我们就以一个最简化的实际案例,将解码器的完整推理过程从头到尾详细演示一遍。
先设定一个具体场景:英译德任务。“The cat sat”翻译为“Die Katze saß”。原文只有三个词,恰到好处,每一步的维度变化都能清楚计算。

编码器已经执行完毕,Z已经计算完成。Z的形状是(3, 512)——3个源语言单词,每个词由一个512维的向量表示。这个Z在整个推理过程中保持固定不变,编码器只需运行一次。
目标语言(德语)是“Die Katze saß”,模型并不已知这个答案,它需要自主猜测出来。
解码器推理:逐步详解
第0步:开始准备
解码器当前仅有一个输入:句子起始符,即
输入序列:[
第1步:生成第一个词“Die”
解码器带着[
Masked Self-attention:由于只有一个词,它只能关注自身。
Cross-attention:查询向量Q来自
FFN:对注意力结果进行非线性变换加工。
最后进入Linear + Softmax,得到词汇表上每个词的概率分布。例如:
- Die: 0.41(概率最高)
- Der: 0.28
- Das: 0.18
- ...
选择概率最高的词:Die。
第2步:生成第二个词“Katze”
将刚生成的“Die”加入输入,序列变为[
再次依次通过三个子层:
Masked Self-attention:
Cross-attention:查询向量Q来自代表“Die”的位置,K/V仍然来自Z。此时解码器思考的是:“我已经生成了‘Die’,下一个词应该是什么?”
Linear + Softmax:
- Katze: 0.52(最高)
- Hund: 0.21
- Maus: 0.09
- ...
选取最高的:Katze。
第3步:生成第三个词“saß”
输入序列:[
在Cross-attention中,Q来自“Katze”对应的位置,K/V依然是Z。解码器继续询问:“已经有了‘Die Katze’,下一个词应该是什么?”
Linear + Softmax:
- saß: 0.61(最高)
- sitzt: 0.18
- lag: 0.08
- ...
选择最高的:saß。
第4步:生成结束符
输入序列:[
Linear + Softmax:
: 0.74(最高) - auf: 0.12
- ...
检测到
最终输出结果
整个推理过程生成的结果是:Die Katze saß。
规律清晰可见
步骤 1: 输入 [
步骤 2: 输入 [
步骤 3: 输入 [
步骤 4: 输入 [
每一步的输入都比上一步多一个已经生成的词,这就是自回归机制的核心:利用自身已生成的输出作为下一步的输入。
三个关键要点
1. 编码器只运行一次。Z在推理开始前就已计算完毕,并在整个过程中保持不变。解码器每一步都在查询同一个Z。
2. 解码器每一步都会重新完整地执行三个子层。它并非只处理新添加的那个词,而是将整个输入序列重新计算一遍。但由于Masked Self-attention机制的约束,每个位置只能看到它之前的词,因此计算结果与上一步保持一致,不会出现重复计算错误。
3. 选取最高概率并非唯一的策略。上面演示的是贪心搜索——每一步都选取概率最高的词。在实际应用中,还可以使用束搜索,每一步保留概率最高的k个候选序列,最终选择整体概率最高的序列。这种方法通常效果更好,但计算速度更慢。
维度拆解:完整梳理每一步的矩阵运算
仅仅讲解概念还不够,下面我们把第1步的维度变化完整演算一遍,确保每个环节都清晰明确。
起点
解码器输入:[
子层1:Masked Self-attention
当前只有一个词,因此掩码实际上不起作用——它只能关注自身。
- Q = X_dec · W_Q: (1, 512) · (512, 64) = (1, 64)
- K = X_dec · W_K: (1, 512) · (512, 64) = (1, 64)
- V = X_dec · W_V: (1, 512) · (512, 64) = (1, 64)
- 点积打分:Q · Kᵀ = (1, 64) · (64, 1) = (1, 1) ← 单个数值,即自身对自身的分数
- ÷ √64,softmax:权重形状为(1, 1),值为1.0(注意力完全集中于自身)
- 加权求和:权重 · V = (1, 1) · (1, 64) = (1, 64) ← 单头输出
- 8个头拼接:(1, 64) × 8 → (1, 512)
- · W_O: (1, 512) · (512, 512) = (1, 512)
- 残差连接 + LayerNorm: 输出形状(1, 512)
子层2:Cross-attention
这一步最为关键。Q来自解码器,K和V则来自编码器的Z。
- Q = d · W_Q: (1, 512) · (512, 64) = (1, 64) ← 解码器生成的查询
- K = Z · W_K: (3, 512) · (512, 64) = (3, 64) ← 源句的3个键
- V = Z · W_V: (3, 512) · (512, 64) = (3, 64) ← 源句的3个值
- 点积打分:Q · Kᵀ = (1, 64) · (64, 3) = (1, 3) ← 解码器当前位置对源句3个词各打一个分数
- ÷ √64,softmax:权重形状(1, 3),三个数值之和为1,例如[0.15, 0.65, 0.20]——这意味着在生成当前词时,模型认为源句第二个词“cat”最为重要。
- 加权求和:权重 · V = (1, 3) · (3, 64) = (1, 64)
- 8个头拼接 → (1, 512),· W_O → (1, 512),残差连接+LayerNorm保持维度不变
子层3:FFN
- 输入形状(1, 512)
- · W₁: (1, 512) · (512, 2048) = (1, 2048) ← 升维
- ReLU激活,负值设为0
- · W₂: (1, 2048) · (2048, 512) = (1, 512) ← 降维恢复
- 残差连接 + LayerNorm: 输出形状(1, 512)
第1层解码器结束,输出传入第2层,依次重复共6层。
第6层结束后进入输出层:(1, 512) · Linear(512, 37000) = (1, 37000),Softmax得到词汇表上每个词的概率,取最大值→“Die”。
整体维度变化一览
↓ Masked Self-attn: Q、K、V各为(1, 64)×8头,打分矩阵(1,1),单头输出(1,64),拼接+W_O → (1,512),残差+LN → (1,512)
↓ Cross-attention: Q(1,64)来自解码器,K、V(3,64)来自编码器Z,打分矩阵(1,3)←这是核心:1行代表解码器当前位置,3列代表源句3个词,softmax后的三个数值即为“生成这个词时应参考源句哪些位置”的权重。单头输出(1,64),拼接+W_O → (1,512),残差+LN → (1,512)
↓ FFN: 升维至(1,2048),降维回(1,512),残差+LN → (1,512)
↓ × 6层
↓ Linear: (1,37000)
↓ Softmax: (1,37000)
↓ 取最大值 → “Die”
这个形状为(1, 3)的打分矩阵,正是Cross-attention的核心精髓所在。它决定了解码器在生成每个目标词时,究竟将注意力分配给了源句的哪个词。理解了这一层,Transformer解码器的推理机制就能真正彻底打通。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
CapCut AI Linux服务器部署教程:从环境配置到后台运行全程
CapCutAI在Linux服务器上更适合做“自动化辅助剪辑”部署,需先确认官方能力边界,再配置系统、浏览器运行环境、素材目录、任务脚本与systemd后台服务,重点关注账号安全、资源占用、版权合规和故障排查。
CapCut AI Mac安装教程:Apple Silicon和Intel配置步骤
CapCutAI在macOS上适合短视频剪辑、字幕生成、智能抠像和素材包装。安装前需确认芯片类型、系统版本、存储空间与权限设置,AppleSilicon和Intel机型在下载、授权、性能优化上略有差异。
Veo插件安装全流程:浏览器编辑器扩展市场配置
Veo相关插件安装应先确认官方来源与适配环境,再按浏览器、编辑器或扩展市场流程完成安装、授权和测试,重点关注权限、素材合规、版本兼容与账号安全。
Veo API Key 获取与配置教程:账号注册及国内网络设置
围绕VeoAPIKey配置流程,梳理账号注册、项目创建、密钥获取、环境变量设置、国内网络连通性检查、常见报错处理与安全管理建议,适合首次接入AI视频能力的开发者和团队参考。
Veo macOS安装教程:苹果芯片与英特尔配置步骤整理
Veo在macOS上通常通过网页端或API环境使用,并非传统本地安装软件。AppleSilicon与Intel机型需先确认系统、浏览器、运行环境与权限配置,再按需接入开发工具。
- 日榜
- 周榜
- 月榜
相关攻略
2026-07-08 06:43
2026-07-08 06:43
2026-07-08 06:43
2026-07-08 06:43
2026-07-08 06:43
2026-07-08 06:42
2026-07-08 06:42
2026-07-08 06:42
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程
热门话题

