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

注意力机制,本质上是在做什么?

本文以自注意机制为例,输入一个4*4的矩阵
如下:

input_data=torch.tensor([[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16] ],dtype=torch.float)

得到Q和K的转置如下。

此时,计算Q@K^T ,得到如下结果
第一行第一个位置就是第一条样本和第一条样本对应特征相乘再求和的结果
第一行第二列,就是第一条样本和第二条样本对应特征位置相乘再求和的结果
以此类推...
也就是每条样本分别于其它样本做点乘操作,这个过程的结果被叫做外积。
请注意,这个过程并不是叉乘,叉乘一般用于向量。

最后我们使用该结果做softmax操作,我们将得到如下矩阵。观察下面的矩阵,我们发现,在最后一列几乎都是1,在其它列无限接近0。
但是这并不是说每个样本的最后一个特征得分最高,而是表示,在单个特征位置,其每个样本的概率分布。
所以,如下矩阵表示,在每个特征维度上,最后一条样本的概率分布最高。

所以,我们使用注意力得分和V做点积操作,att @ V  ,我们将得到如下输出。

我们会发现,每一行都变成了[13,14,15,16]
这不就是最后一条样本的数值吗?

所以这个过程发生了什么呢?在这个过程中,完成注意力计算后,由于在每个特征维度上,都是最后一条样本的概率分布最高,所以每条样本的每个特征都变成的最后一条样本的值。
但是,实际上并不都这么夸张,因为在实际深度学习中,我们会将样本归一化,使得每条样本的特征值都在0-1区间,这样就不会太受到大值样本的影响。
比如,我们进行如下归一化,将输入数据*0.01。

B=B*0.01
得到如下输出,我们会发现,最后注意力结果就不会都是最后一条样本的值了,只不过呢,最后一条样本的值占据更多数。

相关文章:

  • 软件设计原则之里氏替换原则
  • 基于 EMA12 指标结合 iTick 外汇报价 API 、股票报价API、指数报价API的量化策略编写与回测
  • HCIE-SLAAC
  • 字节跳动实习生主导开发强化学习算法,助力大语言模型性能突破
  • linux下配置allure的环境变量使之变为可执行文件
  • 【LLM大模型】LangChain学习
  • 多条件排序(C# and Lua)
  • 生成树(STP)协议
  • 基于 Java 和深度学习的图像分类应用实践
  • 大屏设计新纪元:定制视觉盛宴
  • 【WRF模拟】WPS预处理设置生成文件地址
  • XSS-labs(反射型XSS) 靶场 1-13关 通关
  • 图解AUTOSAR_CP_E2E_Library
  • Linux系统——keepalived安装与部署
  • 用 pytorch 从零开始创建大语言模型(一):理解大型语言模型
  • 关于 Redis 缓存一致
  • 定积分与不定积分在概率统计中的应用
  • idea问题(三)pom文件显示删除线
  • C++ - 从零实现Json-Rpc框架-2(服务端模块 客户端模块 框架设计)
  • 从报错到成功:Mermaid 流程图语法避坑指南✨
  • 被算法重塑的世界,人与技术如何和谐共处
  • 西班牙葡萄牙突发全国大停电,欧洲近年来最严重停电事故何以酿成
  • 十四届全国人大常委会第十五次会议继续审议民营经济促进法草案
  • 诗词文赋俱当歌,听一听古诗词中的音乐性
  • 合肥一季度GDP为3003.88亿元,同比增长6.6%
  • 铁路上海站五一假期预计发送446万人次,同比增长8.4%