news 2026/5/14 5:55:38

保姆级解析!Attention Weights 和 Attention是啥?到底怎么算?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
保姆级解析!Attention Weights 和 Attention是啥?到底怎么算?

开篇碎碎念(大家直接跳过吧……博主只是写这篇文章的时候有点破防了):

哈喽啊大家好,博主这个小菜鸡终于又开始写文章了。博主是AI专业大三的学生,主要是今晚科研开会学长们畅聊Attention相关的很多东西,然后主播听的是一头雾水啊……基础太薄弱了,这学期的神经网络与深度学习也跟白学了一样,脑子里现在一干二净啊……完🥚了……啊……。没事!振奋起来!不会了就慢慢补!主播可以的!你们也可以!

前言

首先了解一下Attention Weights 和 Attention 的概念吧:

  • Attention Weights就是一组 “占比” ,它的作用是告诉模型:为了真正读懂当前这个词,我应该分别从句子里的其他每一个词身上采纳多少信息。
  • Attention就是根据上面算出来的比例去执行 “拿取并融合” 的动作,它的作用是把那些重要的、相关的信息按比例吸取过来,让当前这个词不再孤立,而是变成一个理解了上下文的完整结果。

主播这个真的是保姆级教学,直接从embedding开始讲。可能一些用词不太专业,也欢迎大家在评论区给我指正、提建议!那我们就开始快乐的学习吧!

本文讲解Attention Weights的思路是:

人类可读的文字——>embedding后得到其向量表示——>q、k、v的获取——>Attention Weights和Attention的计算

一、人类可读的文字——>文字的向量表示

首先既然是数学计算,那肯定不能用人类的自然语言去计算对吧,这也没法算。我们需要把“人类可读的文字”转换为计算机可以计算的“向量”,并且这个向量是有意义的(比如可以表示词语之间的相似度),可以表示文字的含义。这个转换过程就叫做“Embedding”

具体的转换过程(以“苹果”🍎这个词为例):

第 1 步:查字典(Tokenization -> ID)

模型里有一个巨大的词表。

  • 比如词表里有 50,000 个词。

  • “苹果”在词表里的 Index 是1024

  • “香蕉”的 Index 是2048

此时,“苹果”被变成了数字1024。但这还只是个整数 ID,不能用来做矩阵乘法。

第 2 步:查表(Lookup Table -> Vector)

这就是Embedding 层干的活。
想象有一个巨大的 Excel 表格(矩阵),名字叫Embedding Matrix

  • 这个表格有 50,000 行(对应 50,000 个词)。

  • 每一行有 512 列(假设向量维度是 512)。

当输入 ID 是1024时,计算机会直接跑到这个表格的第 1024 行,把这一行那 512 个数字复制出来。

Row 1024 = [ 0.1, −0.5, 0.9, ..., 0.2 ]

这一串数字,就是苹果🍎的向量表示

补充,你可能会问:“Embedding 表里的数字是哪来的?”

答:它们不是瞎写的,而是通过大量数据的训练得到的。举个通俗易懂的例子:

  • 一开始,Embedding 表格里全是乱填的数字。

  • 随着模型不断阅读海量文章,它慢慢学会了:为了让预测更准,我应该把“苹果”和“香蕉”的向量调整得比较像(因为它们经常出现在类似的上下文里),而把“苹果”和“卡车”的向量调整得差别很大。

二、文字的向量表示——>q、k、v的获取

有了“苹果🍎”的向量表示(下面写为“X苹果”)之后,我们就可以计算q、k、v了。

在计算之前,让我们先学习一下什么是q、k、v?

  • Q (Query):一个向量,代表“我在寻找什么”

  • K (Key):一组向量,代表“数据库里的标签”。(也就是“键”)

  • V (Value):一组向量,代表“数据库里标签对应的的实际内容”。(也就是键对应的“值”)

那么q、k、v要怎么算呢?(q、k、v的计算过程:

首先,q、k、v都是来源于同一个词,这个词(这里用于计算的是上一步得到的该词Embedding后的向量)要分别乘以三个权重矩阵(“乘法”是“矩阵乘法”):

然后就得到了q、k、v:

补充:你可能又要问了,这三个权重矩阵WQ、WK、WV是怎么来的?

同样的道理,这也是模型通过大量的数据学来的结果。(具体怎么学的,如果感兴趣的话,大家可以查查相关的资料,欢迎把你查到的结果分享在评论区!我们一起学习呀!)

三、q、k、v的获取——>Attention Weights和Attention的计算

好了!终于终于到最后一步了,胜利就在眼前!我们马上就能揭开Attention Weights和Attention的神秘面纱了!激不激动!期不期待!

Self-Attention(自注意力机制)中,它的核心是:大家互相看

也就是:

  • 我的Q,去和你的K、他的K、还有我自己的K进行计算。

  • 算出来的权重,再去乘我对应的V、你对应的V、他对应的V……

以两个词我”、“爱”为例讲解这个计算过程:

根据前两步我们的讲解,现在已经得到这两个词的q、k、v了:

此处借助一下亲爱的神经网络老师课件里的图哈(嘤嘤嘤老师如果侵权的话我会删除的):

这张图里有四个词,我们这里只有两个词,分别是 1 和 2 。

先解释图中4个词的情况(这个懂了,2个词的你也就懂了):可以看到图中是 1 发起查询(因为是1 的 q 与所有人的 k 相乘),分别得到4个 score(这个图中未直接写出),然后经过Softmax归一化之后就得到了图中的a这 4 个 a 其实就是我们想要的 Attention Weights),然后a再分别与各自的v 相乘,求和得到b(这个叫Attention或者Attention Output)。

(一)计算流程示例:

假设我们只用两个词,还是“我”、“爱”。以“我”为例,计算 b1的过程:

1.首先计算scores(分数):

score1,1 = q1 * k1

score1,2 = q1 * k2

2.经过softmax归一化后,得到Attention Weights(注意力权重):

a1,1,a1,2 = Softmax(score1,1,score1,2)

3.最后计算 Attention(注意力):

b1 = a1,1 * v1 + a1,2 * v2 ,计算结束。

(二)有了前面的这个示例,最后看——计算公式:

  • Attention Weights(上面的“a”)计算公式:

  • Attention Output(又称为“Attention”,上面的“b”)计算公式:

,即Weights * V

别被吓到了,我们把它拆解开,每一部分都对应刚才计算的步骤:

恭喜🎉👏看到这里!你已经完成全部内容的学习!!!

欢迎在评论区补充、指正!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/13 15:23:35

紧急预警:未正确配置MCP SC-400将导致数据泄露?立即检查这4项

第一章:MCP SC-400 安全策略概述MCP SC-400 是微软认证保护(Microsoft Certified Protection)框架下的高级安全合规标准,专为处理敏感信息和高风险环境中的组织设计。该策略聚焦于数据分类、访问控制、威胁防护与合规审计四大核心…

作者头像 李华
网站建设 2026/5/14 3:31:17

驾校管理|基于java+ vue驾校管理系统(源码+数据库+文档)

驾校管理 目录 基于springboot vue驾校管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue驾校管理系统 一、前言 博主介绍:✌️大…

作者头像 李华
网站建设 2026/5/1 23:41:09

计算机毕设Java基于Android的我的书房的设计与实现 基于Android平台的个人书房管理系统的设计与开发 Java技术驱动的Android端书房信息管理应用实现

计算机毕设Java基于Android的我的书房的设计与实现17q5a9 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着数字化时代的到来,传统的书房管理方式已经无法满足人们…

作者头像 李华
网站建设 2026/5/9 22:12:09

Claude Code深度解析:重新定义终端智能编码体验

Claude Code深度解析:重新定义终端智能编码体验 【免费下载链接】claude-code Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code,…

作者头像 李华