缩放点积注意力(Scaled Dot-Product Attention)为什么要除以 √dk?
缩放点积注意力为什么要除以 √d_k核心结论除以 √d_k 是为了控制点积结果的方差防止数值过大导致 softmax 梯度消失使训练稳定。数学推导假设条件假设 Query 和 Key 的各维度是独立的、均值为 0、方差为 1 的随机变量Q_i, K_i ~ i.i.d., E[Q_i] E[K_i] 0, Var(Q_i) Var(K_i) 1点积的方差点积: S Q · K Σ_{i1}^{d_k} Q_i · K_i 期望: E[S] Σ E[Q_i · K_i] Σ E[Q_i]·E[K_i] 0 方差: Var(S) Σ Var(Q_i · K_i) Σ E[Q_i²]·E[K_i²] (Q_i, K_i 独立) Σ 1 · 1 d_k关键结论点积的标准差为 √d_k随维度 d_k 线性增长。d_k 64 → std(S) ≈ 8 d_k 512 → std(S) ≈ 22.6 d_k 1024 → std(S) ≈ 32除以 √d_k 后S_scaled (Q · K) / √d_k Var(S_scaled) Var(S) / d_k d_k / d_k 1缩放后点积的方差恒为 1与维度 d_k 无关。不缩放会怎样softmax 饱和问题当点积值很大时softmax 输出趋近 one-hot未缩放 (d_k512, std≈22.6): logits [22.6, 0, 0, 0, ...] softmax ≈ [1.0, 0, 0, 0, ...] ← 几乎只关注一个位置 缩放后 (std1): logits [1.0, 0, 0, 0, ...] softmax ≈ [0.58, 0.10, 0.10, ...] ← 分布适度平滑梯度消失softmax 对 logit 的梯度为∂softmax(z_i)/∂z_j softmax(z_i) · (δ_ij - softmax(z_j)) 当 z 极大 → softmax 趋近 one-hot → 梯度趋近 0未缩放: logits 极大 → softmax 饱和 → 梯度 ≈ 0 → 训练停滞 缩放后: logits 适中 → softmax 平滑 → 梯度健康 → 正常训练直观理解点积 d_k 个独立项的求和 d_k 越大 → 求和项越多 → 结果波动越大 → 值域越宽 类比: 掷 1 个骰子 → 结果范围 [1, 6] 掷 100 个骰子 → 结果范围 [100, 600]波动大得多 除以 √d_k → 将波动标准化回单位尺度 类比: 掷 100 个骰子后除以 10 → 结果范围 [10, 60]与单骰子尺度可比为什么是 √d_k 而不是 d_k方差与 d_k 成正比: Var(S) d_k 标准差与 √d_k 成正比: std(S) √d_k 要使标准差归一化为 1: S / std(S) S / √d_k → std 1 ✓ 如果除以 d_k: S / d_k → std 1/√d_k → 过度缩放值太小softmax 过于均匀 ✗缩放因子缩放后 std效果不缩放√d_k值过大softmax 饱和梯度消失÷ √d_k1适中梯度健康÷ d_k1/√d_k值过小softmax 过于平坦区分度不足与加性注意力的对比加性注意力 (Bahdanau): score(Q, K) v^T · tanh(W_Q·Q W_K·K) → tanh 将值限制在 [-1, 1]天然有界无需缩放 点积注意力 (Luong / Transformer): score(Q, K) Q · K^T → 无界随 d_k 增长 → 需要缩放 缩放点积注意力 点积注意力 √d_k 缩放 → 兼具点积的计算效率 和 数值稳定性一句话总结点积的方差随维度 d_k 线性增长导致高维下 softmax 饱和、梯度消失除以 √d_k 将方差归一化为 1使注意力分布保持适度平滑、梯度健康从而保证训练稳定性。

相关新闻

注意力机制中“Query、Key、Value“三者的含义和作用分别是什么?

注意力机制中“Query、Key、Value“三者的含义和作用分别是什么?

Query、Key、Value 三元组 核心思想来源 QKV 机制源自信息检索的检索-匹配-提取范式,注意力机制将其抽象为可微分的向量运算: 信息检索类比:Query (查询) → "我想找什么" → 搜索关键词Key (键) → "每条记录的标签&q…

2026/10/31 16:28:43 阅读更多 →
React 跨项目集成实战:iframe 实现子项目详情弹窗

React 跨项目集成实战:iframe 实现子项目详情弹窗

当一个后台系统需要嵌入另一个独立项目的完整详情页面,而两个项目技术栈、API 层、权限体系完全不同时,iframe 是成本最低的跨项目复用方案。本文通过一个运维系统嵌入 Event 工单项目的真实案例,完整拆解从 0 到 1 的实现过程。 一、场景描述…

2026/11/2 0:24:00 阅读更多 →
Unity商业级打地鼠游戏:架构设计、性能优化与工程化实战

Unity商业级打地鼠游戏:架构设计、性能优化与工程化实战

1. 项目概述:从“玩具”到“产品”的鸿沟“打地鼠”这个游戏概念,听起来简单到几乎每个刚接触Unity的新手都会拿它练手。一个平面,几个洞,随机冒出来的地鼠模型,配上点击音效,一个下午就能做出个能玩的Demo…

2026/11/3 5:10:10 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/3 1:09:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/2 10:46:11 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/2 10:47:40 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/3 2:27:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/2 10:46:31 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/2 10:46:26 阅读更多 →

日新闻

周新闻

月新闻