Transformer Decoder 中序列掩码(Sequence Mask / Look-ahead Mask) - 详解

news/2025/11/7 20:44:01/文章来源:https://www.cnblogs.com/slgkaifa/p/19200840

Transformer Decoder 中序列掩码(Sequence Mask / Look-ahead Mask) - 详解

✅ 问题:

“Transformer 的 Decoder 中,多头注意力得到注意力分数后,为什么需要序列掩码?为什么是上三角矩阵?序列是自己排序了吗?”


核心答案总结

1. 为什么要用序列掩码?

  • 目的:防止模型在生成当前词时“偷看”未来的词,保证自回归生成的因果性(causality)。
  • 场景:Decoder 在训练时为了并行化,会一次性输入整个目标序列(如 <sos> The cat sat),但生成时必须从左到右一个词一个词地生成。
  • 作用:通过掩码强制模型在预测第 i 个词时,只能依赖第 1 到第 i 个词的信息,不能访问第 i+1 及之后的词。

类比:就像考试时,你只能根据已经写下的内容来写下一个词,不能提前看到整篇作文的答案。


2. 为什么掩码是“上三角矩阵”?

  • 关键误解澄清:这里的“上三角”不是指词向量的维度方向,而是指 n×n 的注意力分数矩阵中,位置与位置之间的关系
  • 矩阵结构
    • 行 i:表示“当前正在生成的第 i 个词”(Query)
    • 列 j:表示“可以被关注的第 j 个词”(Key)
    • 元素 S[i,j]:表示词 i 对词 j 的关注程度
  • 掩码规则
    • 如果 j > i(即 j 在 i 的未来),则 S[i,j] 被设为 -∞
    • 这些被屏蔽的位置正好位于主对角线以上,形成一个上三角为 -∞,下三角及对角线为 0 的矩阵

Python

编辑

# 4x4 序列掩码示例(-inf 表示屏蔽)
[[  0, -inf, -inf, -inf],   # 位置1只能看位置1[  0,   0, -inf, -inf],   # 位置2可看1,2[  0,   0,   0, -inf],   # 位置3可看1,2,3[  0,   0,   0,   0]]    # 位置4可看全部

✅ 所以,“上三角”是位置索引 i < j 的数学体现,而不是数据本身的排序或维度操作。


3. 序列是“自己排序”了吗?

  • 不是。序列的顺序是预设的、固定的时序顺序,由以下机制保证:
    1. 输入顺序:序列按时间步 [x₁, x₂, ..., xₙ] 输入。
    2. 位置编码(Positional Encoding):每个词都加上了表示其位置的向量,告诉模型“谁在前,谁在后”。
  • 掩码正是基于这个已知的、固定的位置顺序来构建的,而不是模型动态“排序”了序列。

换句话说:顺序是人为给定的,掩码是基于这个顺序设计的规则


⚠️ 最容易混淆的几个地方(重点!)

混淆点正确认识
❌ “列代表词向量的维度”✅ 错! 在注意力分数矩阵中,行列都代表序列中的位置,不是维度。维度 d_model 出现在 Q, K, V 矩阵中,但不在 S[i,j] 的行列定义里。
❌ “上三角是某种排序结果”✅ 错! “上三角”是位置索引关系 i < j 的几何表现,不是对内容排序。它是一个预设的因果结构。
❌ “掩码是为了去掉无意义的词”✅ 不准确! 那是 Padding Mask 的作用。序列掩码是防止“看未来”,两者常一起使用但目的不同。
❌ “Encoder 也需要序列掩码”✅ 错! Encoder 处理的是完整输入,可以双向关注,不需要序列掩码。只有 Decoder 的自注意力需要。
❌ “掩码改变了词的顺序”✅ 错! 掩码只是屏蔽某些位置间的注意力,不改变输入顺序或词的位置。

记忆口诀

“行是现在,列是过去;未来不准看,上三角封住。”

  • :当前正在生成的词(现在)
  • :可以被关注的词(必须是过去或现在)
  • 上三角i < j 的未来位置,全部屏蔽(-∞)
  • Softmax 后:被屏蔽位置的注意力权重变为 0

✅ 总结一句话

序列掩码是一个基于预设位置顺序的 n×n 上三角矩阵,用于在 Decoder 自注意力中屏蔽未来信息,确保生成过程符合从左到右的因果逻辑,而“上三角”是“不能看未来”这一规则在矩阵形式下的自然体现。

理解这一点,你就掌握了 Transformer 解码机制的核心设计思想之一!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/959188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P9785 [ROIR 2020] 对常规的斗争 (Day1) 题解

题目传送门 思路 我们不难发现,当区间中没有重复的点很好求,但如果中间部分产生重复的点,他们所产生的贡献会减少。 正着推不好推,那就反着来。 我们可以考虑计算当区间长度确定时,每个区间内每个元素是否出现过。…

实用指南:超越CNN和Transformer!Mamba结合多模态统领图像任务!

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Docker镜像建立【MSSQL2022】

sudo docker stop cont_mssql2022 sudo docker rm cont_mssql2022sudo mkdir -p ~/zapas/dbdata/mssql sudo chmod 777 ~/zapas/dbdata/mssqlcd ~/zapas/dbdata/mssql mkdir testdb sudo chmod 777 ~/zapas/dbdata/mss…

灰度发布

目录背景和价值参考资料 背景和价值 在 Spring Cloud 架构中,灰度发布(又称金丝雀发布)的核心目标是将新版本服务仅对部分用户 / 流量开放,验证稳定性后再全量上线,以降低发布风险。实现需结合服务注册发现、负载…

【刷题笔记】AT 经典 90 题

T2 爆搜 注意,string 只能与 string 运算,无法和 char 运算;访问 string 某一位时则是 char T5 数位 DP。 转化题意:若 \(x\) 是 \(B\) 的倍数,则 \(x\mod B = 0\)。 先设计 DP 状态,设 \(f_{i,j}\) 表示看到第 …

CF1758E Tick, Tock

首先考虑初始状态合法的充要条件,每两行对应位置差相等。 发现每个连通块有一些代表元,用带权并查集做即可。

深入解析:SciPy傅里叶变换与信号处理教程:数学原理与Python实现

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

CentOS Stream 9编译安装Nginx 1.28 - Leone

安装Nginx基本依赖:yum -y install gcc pcre2-devel zlib-devel openssl-devel cd /mnt/wgetwget https://nginx.org/download/nginx-1.28.0.tar.gztar -xvf nginx-1.28.0.tar.gz && cd nginx-1.28.0./config…

SQL核心语言详解:DQL、DML、DDL、DCL从入门到实践! - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Ubuntu安装JDK与Maven和IntelliJ IDEA - 详解

Ubuntu安装JDK与Maven和IntelliJ IDEA - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &qu…

JavaWeb03-Vue

JavaWeb03-VueVue 什么是VueVue是一款用于构建用户界面的渐进式的JavaScript框架。(http://cn.vuejs.org/)构建用户界面渐进式框架:就是一套完整的项目解决方案,用于快速构建项目优点:大大提升前端项目的开发效率…

【完结】Weblogic中间件应用服务器

【完结】Weblogic中间件应用服务器 学习地址:……/s/1FP9WOZ9FXcNRJTkaEApaVA 提取码:o2rh 在当今瞬息万变的数字商业世界中,企业应用的稳定性、安全性与高可用性已成为支撑业务运转的生命线。在这条无形的战线上,…

调整包含特定文本的单元格所在的行高

Sub 调整包含特定文本的单元格所在的行高()For i = 1 To Range("a" & 1048576).End(xlUp).RowIf Range("a" & i).Value Like "健康管理意见建议*" ThenRange("a" &am…

javabean和pojo的区别

JavaBean 是一种JAVA语言写成的可重用组件。 它的方法命名,构造及行为必须符合特定的约定:这个类必须有一个公共的缺省构造函数。 这个类的属性使用getter和setter来访问,其他方法遵从标准命名规范。 这个类应是可序…

一次十分折腾的系统迁移:BCD损坏(0xc000000f), 0xc0000255, 0xc000000e以及解决办法

起因:原装盘内存不够(matebook13原装256G,我用了五六年了,80G传奇c盘使我的所有朋友难绷),想着自己换一块512G的 两块都是WD的盘,兼容没问题 盲目信任自己的技术力和Qwen3的能力,于是开始快乐的装盘过程~ 期间…

2025微信小店代运营/电商优质服务商推荐榜:健安道领衔,三大实力机构助力商家全域增长

2025 年微信电商生态持续扩容,微信小店凭借公私域联动优势实现 GMV 同比激增 192%,成为商家线上布局的核心阵地。本次推荐聚焦真实靠谱的微信小店服务商,精选 3 家实力企业,为品牌提供清晰的合作参考。 健安道企业…

知识树

1 (重点)dp 1.1 常规 dp 1.1.1 选择 dp 主体,缩减状态 1.1.2 前缀和/差分(包括高阶)优化 1.1.3 改变转移顺序 1.1.4 贡献特殊处理 1.2 特殊结构上 dp 1.2.1 树形 dp树上背包 连通块问题 长剖优化 dp 虚树 dp1.2.2…

2025昆山/太仓/苏州/常熟/上海/农村自建房推荐榜 巨德翔建筑领衔 三家实力公司赋能乡村宜居生活

随着长三角地区乡村居住需求升级,自建房因个性化、实用性成为众多家庭的选择。为方便昆山、太仓、苏州、常熟、上海等地用户挑选靠谱服务商,整理 2025 自建房推荐榜,聚焦口碑企业,为居住升级提供参考。 一、昆山巨…

深入解析:ST-Raptor:无需微调,准确率超越 GPT-4o 的半结构化表格问答新范式

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …