【自然语言处理四-从矩阵操作角度看 自注意self attention】

2024-02-27 11:04

本文主要是介绍【自然语言处理四-从矩阵操作角度看 自注意self attention】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

自然语言处理四-从矩阵操作角度看 自注意self attention

  • 从矩阵角度看self attention
    • 获取Q K V矩阵
    • 注意力分数
    • softmax
    • 注意力的输出
    • 再来分析整体的attention的矩阵操作过程
    • 从矩阵操作角度看,self attention如何解决问题的?
    • W^q^ W^k^ W^v^这三个矩阵怎么获得?

从矩阵角度看self attention

上一篇文章,【自然语言处理三-自注意self attention】介绍了如何实现selft attention,但没有介绍,为何自注意力就能解决参数扩张、无法并行等问题,仅仅用语言描述太过干涩,从矩阵操作的角度则可以清晰的了解,self attention的运作机制以及它如何解决这些问题的。

首先,还是先给出self attention的整体流程图

在这里插入图片描述

中间这个attention层,从输入到attention层的输出,就是我们是实现的目标,下面是一个简单的图示:
在这里插入图片描述

下面我们就从矩阵操作的角度来描述,具体如何实现中间这个self attention层。

获取Q K V矩阵

首先是根据输入乘上矩阵,获取qi,ki,vi
在这里插入图片描述
当我们将(ai,…an)整合成一个矩阵的时候,实际上这个操作是这样的:
在这里插入图片描述
这样我们的Q K V矩阵就是针对整个输入的了。

注意力分数

a1对于ai的注意力分数,是q1和ki的点乘,当然这个点乘操作在上文介绍过,可以有别的方法。

这个过程同样可以合并成一个矩阵操作,如下图:A矩阵中的每一列,就是ai对于其他输入的注意力分数
在这里插入图片描述

softmax

上述获取的A矩阵执行softmax操作
在这里插入图片描述

注意力的输出

在这里插入图片描述

softmax后的注意力分数,与其他输入的vi做乘法操作,获取最终注意力层的一个输出。
这个过程同样可以合并矩阵操作,如下:
在这里插入图片描述
最终的的这个O矩阵就是注意力的输出。

再来分析整体的attention的矩阵操作过程

这个总体的过程,可以用下面更简略的图来表示:
在这里插入图片描述

从矩阵操作角度看,self attention如何解决问题的?

1.解决参数可能急剧扩张的问题
我们从上面整体的矩阵操作过程来看,实际上只有三个矩阵Wq Wk Wv的参数需要学习,其他都是经过矩阵运算。
参数不会出现剧增
2.解决无法并行的问题
矩阵对于每个输入的操作,是并行的,不再像seq2seq架构一样,是按照时间步,一步步操作。
3.解决记忆能力的问题
attention的分数是基于全体输入的,且没有经过时间步的传播,因此记忆是基于全句子的,且信息没有丢失

Wq Wk Wv这三个矩阵怎么获得?

从整体流程来看,要实现attention,最关键的就是找到合适的Wq Wk Wv矩阵,那么这三个矩阵是怎么获得的呢?
它们是靠学习获得的,初始化后,经过模型输出,然后经过反向传播,通过调整误差,一步步的精确化了这三个矩阵

这篇关于【自然语言处理四-从矩阵操作角度看 自注意self attention】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/752181

相关文章

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

购买磨轮平衡机时应该注意什么问题和技巧

在购买磨轮平衡机时,您应该注意以下几个关键点: 平衡精度 平衡精度是衡量平衡机性能的核心指标,直接影响到不平衡量的检测与校准的准确性,从而决定磨轮的振动和噪声水平。高精度的平衡机能显著减少振动和噪声,提高磨削加工的精度。 转速范围 宽广的转速范围意味着平衡机能够处理更多种类的磨轮,适应不同的工作条件和规格要求。 振动监测能力 振动监测能力是评估平衡机性能的重要因素。通过传感器实时监

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

hdu 4565 推倒公式+矩阵快速幂

题意 求下式的值: Sn=⌈ (a+b√)n⌉%m S_n = \lceil\ (a + \sqrt{b}) ^ n \rceil\% m 其中: 0<a,m<215 0< a, m < 2^{15} 0<b,n<231 0 < b, n < 2^{31} (a−1)2<b<a2 (a-1)^2< b < a^2 解析 令: An=(a+b√)n A_n = (a +

什么是 Flash Attention

Flash Attention 是 由 Tri Dao 和 Dan Fu 等人在2022年的论文 FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness 中 提出的, 论文可以从 https://arxiv.org/abs/2205.14135 页面下载,点击 View PDF 就可以下载。 下面我

Thymeleaf:生成静态文件及异常处理java.lang.NoClassDefFoundError: ognl/PropertyAccessor

我们需要引入包: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>sp

SpringMVC入参绑定特别注意

1.直接在controller中定义一个变量,但是此种传输方式有一个限制就是参数名和请求中的参数名必须保持一致,否则失效。 @RequestMapping("test2")@ResponseBodypublic DBHackResponse<UserInfoVo> test2(String id , String name){UserInfoVo userInfoVo = new UserInf

hdu 6198 dfs枚举找规律+矩阵乘法

number number number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description We define a sequence  F : ⋅   F0=0,F1=1 ; ⋅   Fn=Fn

动手学深度学习【数据操作+数据预处理】

import osos.makedirs(os.path.join('.', 'data'), exist_ok=True)data_file = os.path.join('.', 'data', 'house_tiny.csv')with open(data_file, 'w') as f:f.write('NumRooms,Alley,Price\n') # 列名f.write('NA

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚