当前位置: 首页 > article >正文

动手学深度学习——注意力分数

1. 前言上一篇我们已经把注意力机制代码的整体流程看清楚了先算 query 和 key 的相关性分数再通过 softmax 变成注意力权重最后对 value 做加权和到这里一个很自然的问题就来了这个“分数”到底该怎么计算因为注意力机制里真正决定“该关注谁”的核心不是 softmax也不是加权和而是query 和 key 的匹配分数attention score分数函数设计得不同注意力机制的行为也会不同。所以这一节的重点就是把“注意力分数”这件事单独拎出来讲清楚。2. 什么是注意力分数注意力分数可以简单理解为当前 query 和某个 key 到底有多相关。如果相关性高那么这个 key 对应的位置就应该分到更高的注意力权重。如果相关性低那么它分到的权重就应该更小。所以注意力机制的核心逻辑其实是第一步先对每个 key 打分score(query, key_i)第二步把这些分数归一化softmax(scores)第三步用这些权重去汇总 values。因此分数函数本质上是在回答“现在这个 query最该看哪些 key”3. 为什么注意力分数这么关键因为 softmax 只是把分数变成概率分布真正决定“谁大谁小”的是前面的 score 函数。也就是说score 函数设计得合理注意力就更准确score 函数设计得粗糙注意力就容易偏所以你可以把注意力分数理解为注意力机制的判官它先判断 query 和每个 key 的匹配程度后面的权重分配只是顺着这个判断结果走。4. 一个最直观的理解假设现在解码器在翻译一句英文当前要生成的目标词和源句中的某些位置更相关。这时候当前解码状态就是 query编码器每个时间步输出就是 keyattention score 就是在问当前这一步query 和第 1 个源位置像不像和第 2 个源位置像不像和第 3 个源位置像不像最后谁更像谁就更值得关注。所以注意力分数本质上就是相似度 / 相关性评估函数5. 常见的注意力分数有哪些在李沐这条线里最常见的两类注意力分数通常是加性注意力Additive Attention缩放点积注意力Scaled Dot-Product Attention这两类方法都在解决同一个问题如何度量 query 和 key 的匹配程度但它们的计算方式不同。6. 加性注意力是什么加性注意力也常和 Bahdanau attention 联系在一起。它的分数函数通常写成score(q, k) w^T tanh(W_q q W_k k)你可以把它分成三步理解第一步把 query 投影一下W_q q第二步把 key 也投影一下W_k k第三步把它们加起来过tanh再压成一个标量w^T tanh(...)所以加性注意力的特点就是先映射再相加再过非线性再打分7. 为什么叫“加性”注意力因为它最显眼的一步就是W_q q W_k k也就是 query 和 key 在映射到同一空间后被“加”在了一起。所以叫加性注意力这个名字不是说整个机制只做加法而是强调它的匹配方式是通过“加性融合”完成的。8. 加性注意力的优点是什么加性注意力的一个重要优点是即使 query 和 key 原始维度不同也可以先映射到统一隐藏空间再比较。这很灵活。另外它中间有非线性层tanh所以表达能力也比较强。在早期 Seq2Seq 任务里加性注意力非常经典也非常好理解。9. 点积注意力是什么另一种更直接的方式是点积注意力Dot-Product Attention它的分数函数更简单score(q, k) q^T k也就是 query 和 key 直接做内积。直观上看如果两个向量方向很一致内积会大如果方向差异大内积会小所以它本质上就是一种非常直接的相似度计算。10. 为什么点积注意力更简单因为它不需要像加性注意力那样先做线性映射相加非线性再压缩它直接一步到位q · k所以计算上更高效尤其在大规模并行矩阵运算里非常适合 GPU。这也是为什么后来的 Transformer 非常偏爱点积注意力。11. 缩放点积注意力又是什么在实际使用中尤其是 Transformer 里通常不会直接裸用点积而是用缩放点积注意力Scaled Dot-Product Attention公式通常写成score(q, k) (q^T k) / sqrt(d)这里的d是 query / key 的维度。也就是说在普通点积基础上又除以一个sqrt(d)这一步叫“缩放”。12. 为什么点积要缩放因为当向量维度d比较大时点积的数值幅度可能会变得很大。而后面注意力还要接 softmax。如果分数太大softmax 就容易进入非常尖锐的区域导致梯度变小训练不稳定所以除以sqrt(d)就是为了把分数规模控制在更合适的范围内。这一步非常重要也是 Transformer 成功实践中的关键细节之一。13. 加性注意力和点积注意力怎么对比理解可以简单这么看加性注意力更像是先做一次小型神经网络匹配再输出分数特点表达灵活对维度要求不那么死早期 Seq2Seq 中很经典点积注意力更像是直接看两个向量有多对齐特点简洁计算快特别适合并行矩阵计算所以两者本质上都是“匹配函数”只是风格不同一个更神经网络式一个更线性代数式14. 注意力分数最后一定会变成权重吗是的通常都会。因为分数本身只是“相对大小”。最终要变成真正可用的注意力分布通常还要经过softmax也就是说分数阶段表示“谁更相关”softmax 之后表示“每个位置到底分到多少注意力”所以注意力分数不是终点而是注意力权重的前一步。15. 一个简单例子理解分数和权重的关系假设某一步对三个 key 的分数分别是[2.0, 1.0, 0.1]这表示第 1 个位置最相关第 2 个位置次之第 3 个位置最弱但这些还不是最终权重。经过 softmax 后可能变成[0.63, 0.23, 0.14]这时才是真正用来做加权和的注意力权重。所以你要分清分数原始匹配值权重归一化后的关注比例16. 为什么说注意力分数本质上是在做“匹配”因为 query 和 key 的关系本质上就是当前需求和候选信息之间的匹配程度如果你站在信息检索角度看query 是“搜索请求”key 是“索引”value 是“内容”那么 score 函数就是在做query 和每个 key 的匹配评分谁分高就说明谁更值得被取出来用。所以“注意力分数”其实就是一种可学习的匹配机制。17. 李沐这一节最想让你理解什么这一节最核心的不是让你死背两个公式而是让你抓住这条主线第一注意力的核心在于“如何打分”因为分数决定了后续权重分配。第二分数函数本质上是在度量 query 和 key 的相关性注意力不是凭空来的。第三加性注意力和点积注意力是两种经典打分方法它们解决的是同一个问题只是方式不同。第四缩放点积注意力是后面 Transformer 的关键基础这会直接连接后面的更大模型体系。所以这一节实际上是在回答注意力机制里最核心的那一步到底怎么做。18. 这一节和前后内容怎么衔接你会发现这几节安排非常顺前一节注意力机制总览先理解为什么需要动态关注输入。这一节注意力分数再搞清楚“相关性”到底怎么计算。下一节带注意力的 Seq2Seq把分数函数和上下文加权真正装进解码器。所以这一节是一个非常典型的中间桥梁从概念直觉过渡到正式结构。19. 本节总结这一节我们学习了注意力分数核心内容可以总结为以下几点。19.1 注意力分数用于衡量 query 和 key 的相关性这是注意力机制的核心一步。19.2 加性注意力通过线性映射、相加、非线性和压缩来打分它是早期 Seq2Seq 中很经典的方式。19.3 点积注意力直接通过内积计算相似性计算更简单高效。19.4 缩放点积注意力通过除以sqrt(d)控制分数幅度这有助于训练稳定。19.5 分数经过 softmax 后才会变成真正的注意力权重然后再用于对 values 做加权和。20. 学习感悟这一节非常关键因为它让我们真正看到注意力机制并不是玄学它本质上是在做“匹配评分”。以前我们说模型在关注某些位置模型在动态分配注意力这些说法听起来很高级。但一旦把分数函数写出来你会发现本质其实很朴素先判断 query 和每个 key 有多像再把这个“像不像”变成权重最后用这些权重去读信息。也就是说注意力机制真正高明的地方不在于它神秘而在于它把“该看哪里”这件事显式建模了。

相关文章:

动手学深度学习——注意力分数

1. 前言 上一篇我们已经把注意力机制代码的整体流程看清楚了: 先算 query 和 key 的相关性分数 再通过 softmax 变成注意力权重 最后对 value 做加权和 到这里,一个很自然的问题就来了: 这个“分数”到底该怎么计算? 因为注意…...

动手学深度学习——注意力机制代码

1. 前言上一篇我们已经从思想上理解了注意力机制:基础 Seq2Seq 的问题在于固定长度上下文向量解码器在不同时间步,其实应该关注输入序列的不同位置注意力机制的本质,就是对输入表示做加权和权重由当前位置和各输入位置的相关性决定这一篇就继…...

Python 安全开发全栈指南:零基础

Python 安全开发当前时间背景:2026年4月 (Python 3.14) 核心工具:Python 3.x | Requests | Lxml | Re️ 全栈知识体系思维导图mindmaproot((Python安全开发))基础核心变量与数据类型数值 (int, float)字符串 (str)布尔 (bool)运算符算术 ( - * /)赋值 ()…...

深入osgEarth内核:3DTiles加载背后的多线程机制与性能优化

深入osgEarth内核:3DTiles加载背后的多线程机制与性能优化 在三维地理信息系统开发中,osgEarth作为开源的高性能三维地球引擎,其加载海量3DTiles数据的能力直接影响用户体验。本文将深入剖析osgEarth加载3DTiles时的多线程架构设计&#xff0…...

乐高Studio与Solidworks联动指南:如何快速导入自定义3D模型并生成积木设计

乐高Studio与Solidworks联动指南:如何快速导入自定义3D模型并生成积木设计 在数字设计与实体搭建的交汇点上,乐高Studio和Solidworks的联动为创意工作者开辟了全新可能。想象一下,当你精心设计的机械结构或建筑模型能够直接转化为可拼装的乐…...

MusicFree插件开发初探:手把手教你写一个简单的音源接口(.js文件)

MusicFree插件开发实战:从零构建自定义音源接口 第一次看到MusicFree的插件列表时,我就被它的开放性震撼了——这个播放器本身只是个"空壳",所有音源功能都靠插件实现。作为开发者,这意味着我们不仅能自由选择音源&…...

AutoSAR MCAL DIO驱动深度解析:英飞凌TC3XX的GPIO控制底层是如何工作的?

AutoSAR MCAL DIO驱动深度解析:英飞凌TC3XX的GPIO控制底层是如何工作的? 在嵌入式系统开发中,GPIO控制是最基础却又最关键的环节之一。当项目复杂度上升到需要符合AutoSAR标准时,传统的裸机寄存器操作方式就显得力不从心了。英飞凌…...

避开这些坑!NCCL多GPU环境配置常见问题排查手册(附性能测试脚本)

避开这些坑!NCCL多GPU环境配置常见问题排查手册(附性能测试脚本) 当你在Ubuntu系统上配置多GPU深度学习训练环境时,NCCL(NVIDIA Collective Communications Library)的性能表现往往决定了整个训练过程的效…...

HakcMyVM-Quick4

信息搜集 主机发现 ┌──(kali㉿kali)-[~] └─$ nmap -sn 192.168.2.0/24 Starting Nmap 7.95 ( https://nmap.org ) at 2026-04-15 03:19 EDTNmap scan report for quick4 (192.168.2.9) Host is up (0.00028s latency). MAC Address: 08:00:27:AA:84:13 (PCS Systemtechni…...

从‘飞线’到‘倒装’:一文看懂WBCSP和FCCSP封装该怎么选(附内存与处理器封装实战解析)

从‘飞线’到‘倒装’:WBCSP与FCCSP封装技术全维度对比与选型策略 在移动设备处理器和内存芯片的设计中,封装技术直接影响着性能、功耗和体积三大核心指标。当硬件工程师面对WBCSP(引线键合芯片级封装)和FCCSP(倒装芯片…...

2026届最火的AI辅助写作方案实际效果

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在当下的学术环境里头,论文重复率过高乃是对毕业以及发表产生影响的关键所在问题…...

TinyML实战:从模型压缩到MCU部署的全链路解析

1. TinyML入门:为什么我们需要在MCU上跑AI? 第一次尝试在STM32F407上部署人脸检测模型时,我被现实狠狠教育了——原以为轻量级的MobileNetV2模型(在PC端只要20MB内存)可以直接运行,结果编译时报错显示内存不…...

不用显示器也能搞定!虚拟机环境下Jetson Nano镜像烧录全流程

无显示器环境下的Jetson Nano镜像烧录实战指南 在边缘计算和嵌入式AI开发领域,Jetson Nano凭借其强大的GPU算力和紧凑的尺寸,成为众多开发者的首选平台。然而,初次接触这块开发板时,镜像烧录过程往往成为第一道门槛——特别是当手…...

瑞芯微开发板避坑指南:yolov5s模型在RK3566上的帧率优化实战

瑞芯微RK3566开发板实战:YOLOv5模型选型与帧率优化全解析 边缘计算设备上的AI模型部署,往往需要在性能和精度之间寻找微妙的平衡。当我们手握一块瑞芯微RK3566开发板,面对YOLOv5系列模型时,如何根据实际场景选择最合适的模型&…...

用Python和sklearn搞定百度慧眼数据:从抓包到坐标转换的完整实战

Python实战:百度慧眼数据爬取与坐标转换全流程解析 当我们需要分析城市人流分布时,百度慧眼提供的热力图数据是个不错的选择。但直接从API获取的数据往往需要经过一系列处理才能用于分析。本文将带你完整走通从数据获取到坐标转换的整个流程,…...

朱雀AIGC检测不通过?手把手教你3步搞定降AI

朱雀AIGC检测不通过?手把手教你3步搞定降AI “论文查了朱雀,AIGC检测没通过,怎么办?” 这个问题最近在各种毕业群里出现的频率越来越高。尤其是2026年毕业季,越来越多的高校把朱雀AIGC检测作为论文提交的硬性要求&…...

朱雀AI检测率高怎么降?保姆级攻略:用嘎嘎降AI从56%降到0%

朱雀AI检测率高怎么降?保姆级攻略:用嘎嘎降AI从56%降到0% 最近好几个同学私信问我:论文交上去之前自己查了一下朱雀,AI检测率直接显示56%,心态都崩了。 别慌。56%看着吓人,但只要方法对,降到学校…...

蓝牙5.0广播包PDU字段逐行解读:从ADV_IND到AUX_CHAIN_IND,手把手教你抓包分析

蓝牙5.0广播包深度解析:从基础字段到实战抓包技巧 在物联网设备爆发式增长的今天,低功耗蓝牙(BLE)技术已经成为连接智能设备的首选方案。作为BLE通信的"敲门砖",广播包承载着设备发现、连接建立和数据交换的…...

别再为显存发愁了:用vLLM 0.6.3在单张3090上部署Qwen2-VL-7B的保姆级调参指南

单卡3090极限调优:Qwen2-VL-7B视觉语言模型高效部署实战手册 当24GB显存遇上70亿参数的视觉语言模型,这场"内存捉襟见肘"的战役该如何打赢?本文将揭示如何通过vLLM 0.6.3的精细调参,让Qwen2-VL-7B在单张RTX 3090上流畅运…...

别再只买NXP了!盘点国产NFC标签芯片(复旦微/飞聚/聚辰)选型指南

国产NFC标签芯片深度选型指南:复旦微、飞聚、聚辰实战对比 在智能硬件和物联网设备爆发式增长的今天,NFC技术因其便捷的"碰一碰"交互方式,正在从传统的支付、门禁领域向更广阔的应用场景扩展。然而,当大多数开发者习惯性…...

新手也能懂:用Python+NumPy模拟雷达快慢时间采样数据矩阵(附代码)

用PythonNumPy模拟雷达快慢时间采样数据矩阵实战指南 雷达信号处理听起来像是硬件工程师的专属领域?其实只要掌握基础Python和NumPy操作,软件开发者也能轻松理解雷达数据的核心逻辑。本文将带你用代码构建快慢时间采样矩阵,无需任何硬件设备&…...

告别复杂多任务学习:深度解读Depth Anything V3如何用‘一个Transformer+一个目标’统一3D重建

深度估计新范式:Depth Anything V3如何用极简架构重塑3D视觉 当计算机视觉领域还在为多视图几何的复杂性绞尽脑汁时,Depth Anything V3(DA3)的出现像一股清流,用"一个Transformer一个目标"的极简设计&#…...

PX4飞控参数调优实战:从“飘”到“稳”,手把手教你调好四旋翼PID

PX4飞控参数调优实战:从“飘”到“稳”,手把手教你调好四旋翼PID 当你第一次放飞自己组装的四旋翼无人机时,那种兴奋感难以言表。但很快,现实给了你当头一棒——无人机在空中像醉汉一样左右摇摆,或者像被风吹动的树叶一…...

告警风暴 vs 告警静默:多模态大模型监控体系的双峰困境破解术(基于200+线上实例的告警压缩率提升87%实践)

第一章:告警风暴 vs 告警静默:多模态大模型监控体系的双峰困境破解术(基于200线上实例的告警压缩率提升87%实践) 2026奇点智能技术大会(https://ml-summit.org) 在超大规模大模型服务集群中,传统阈值驱动的告警机制正…...

SeaTunnel Transform插件实战:从零构建自定义JSON解析器

1. 为什么需要自定义JSON解析器 在实际的数据处理场景中,我们经常会遇到各种复杂的JSON格式数据。就拿最常见的日志处理来说,从Kafka等消息队列获取的原始数据往往包含多层嵌套的JSON结构。比如下面这个典型例子: {"path": "x…...

酷安UWP:在Windows电脑上体验完整酷安社区的终极指南

酷安UWP:在Windows电脑上体验完整酷安社区的终极指南 【免费下载链接】Coolapk-UWP 一个基于 UWP 平台的第三方酷安客户端 项目地址: https://gitcode.com/gh_mirrors/co/Coolapk-UWP 还在为手机小屏幕刷酷安而感到眼睛酸痛吗?想在大屏幕上舒适地…...

如何高效使用KMS_VL_ALL_AIO智能激活工具:完整Windows与Office激活指南

如何高效使用KMS_VL_ALL_AIO智能激活工具:完整Windows与Office激活指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统激活而烦恼吗?每次重装系统后都…...

深入浅出:双三相电机弱磁控制里的‘电压极限圆’与‘电流极限圆’到底怎么用?

深入浅出:双三相电机弱磁控制里的‘电压极限圆’与‘电流极限圆’到底怎么用? 想象一下驾驶电动汽车爬坡时突然失去动力,或是高速巡航时电机发出异常噪音——这些都可能与弱磁控制策略不当有关。对于从事电机控制的工程师而言,理解…...

昆仑通态触摸屏与PLC标签通讯避坑指南:为什么变量名不能用中文?

昆仑通态触摸屏与PLC标签通讯优化实践:变量命名规范与性能提升 在工业自动化项目中,昆仑通态触摸屏与PLC的稳定通讯是确保系统高效运行的关键环节。许多工程师在实际调试中都遇到过通讯卡顿、操作响应延迟的问题,却往往忽略了最基础的变量命名…...

从PPO到Q-learning:手把手教你根据项目需求选对强化学习模式(在线vs离线)

从PPO到Q-learning:实战选型指南与强化学习模式决策框架 引言:当强化学习遇上工程现实 去年夏天,我参与了一个工业机器人抓取系统的优化项目。团队最初选择了PPO算法进行在线训练,结果机械臂在真实环境中频繁发生碰撞,…...