240630_昇思学习打卡-Day12-Transformer中的Multiple-Head Attention

240630_昇思学习打卡-Day12-Transformer中的Multiple-Head Attention

以下为观看大佬课程及查阅资料总结所得,附大佬视频链接:Transformer中Self-Attention以及Multi-Head Attention详解_哔哩哔哩_bilibili,强烈建议先去看大佬视频,然后自己做笔记。

附上期Self-Attention链接:240629_昇思学习打卡-Day11-Vision Transformer中的self-Attention-CSDN博客,本文中用到了上期的思想,建议先看上期。

image-20240630204617719

Multi-Head Attention和Self-Attention在前半部分是差不多的,只是在得到了对应的 q i q^i qi k i k^i ki v i v^i vi之后,再把这三个进行均分,有多少个Head就均分多少份,这里的均分就是直接拆分,比如 q 1 q^1 q1 ( 1 , 1 , 0 , 1 ) (1,1,0,1) (1,1,0,1),均分两份后就是 ( 1 , 1 ) (1,1) (1,1) ( 0 , 1 ) (0,1) (0,1),当然,这样说可能有点过于简单了,观察原公式,原公式中他是乘以一个矩阵 W i Q W_i^Q WiQ,我们可以其设置成对应值实现均分,比如
q 1 = ( 1 , 1 , 0 , 1 ) q^1=(1,1,0,1) q1=(1,1,0,1)

W 1 Q = ( 1 0 0 1 0 0 0 0 ) W_1^Q=\begin{pmatrix} 1 & 0\\ 0 & 1\\ 0 & 0\\ 0 & 0\end{pmatrix} W1Q= 10000100

此时
q 1 , 1 = q 1 ∗ W i Q = ( 1 , 1 ) q^{1,1}=q^1*W_i^Q=(1,1) q1,1=q1WiQ=(1,1)
同理如果我们要求 q 1 , 2 q^{1,2} q1,2,就给 W 2 Q W_2^Q W2Q赋值为:
W 2 Q = ( 0 0 0 0 0 0 0 1 ) W_2^Q=\begin{pmatrix} 0 & 0\\ 0 & 0\\ 0 & 0\\ 0 & 1\end{pmatrix} W2Q= 00000001
这样我们就可以通过乘法计算出 q 1 , 2 q^{1,2} q1,2,但是要问这个矩阵是怎么确定的,我暂时还不知道,大佬文章中也暂时没提到,我只是通过直接拆分的方法知道他的目标值,然后逆推导出的这个矩阵。后面等搞明白了回来修复,如有大佬指正不胜感激。

multi-head

通过以上方法(直接拆分)可以得到每个Head对应的 q i q^i qi k i k^i ki v i v^i vi参数,接下来针对每个head使用和Self-Attention中相同的方法即可得到对应的结果。(以下为Self-Attention公式)

image-20240630211957477

接下来就要将每个head的结果进行拼接,此时还是以两个head举例:

multi-head

这个图里面的b大家可能忘了,这个b就是Self-Attention中求得的最后结果,在多头注意力这边,这个结果还要再进行计算。

将每个head得到的结果进行concat拼接,比如下图中的 b 1 , 1 b_{1,1} b1,1 h e a d 1 head_1 head1得到的 b 1 b_1 b1)和 b 1 , 2 b_{1,2} b1,2 h e a d 2 head_2 head2得到的 b 1 b_1 b1)拼接在一起。

multi-head

根据原公式,我们这里拼接完了之后还要给一个参数 W 0 W^0 W0和他相乘进行融合,这里这个 W 0 W^0 W0是可学习的参数,其维度参考拆分前的 q 1 q^1 q1 q 1 q^1 q1是4,这里 W 0 W^0 W0是4X4。融合后得到最后的结果。

注意这里是拼接两次,分别把 b 1 , 1 b_{1,1} b1,1 b 1 , 2 b_{1,2} b1,2 b 2 , 1 b_{2,1} b2,1 b 2 , 2 b_{2,2} b2,2在列上进行拼接后,还要把他两的结果进行在行上拼接(我也不知道我的措辞用反了没有,大家看图,上面是第一次拼接,下面图右下角是第二次拼接),然后在和 W 0 W^0 W0进行运算

在这里插入图片描述

至此结束,大家记得去看大佬的视频,我的记录肯定不太详尽。
另外,我真的很好奇,csdn这个md编辑器到底是什么情况,为什么有时候行内公式就能显示,有时候行间公式都显示不了。

打卡图片:
在这里插入图片描述

参考博客:

11.1 Vision Transformer(vit)网络详解_哔哩哔哩_bilibili

详解Transformer中Self-Attention以及Multi-Head Attention_transformer multi head-CSDN博客

Vision Transformer详解-CSDN博客

一文搞定自注意力机制(Self-Attention)-CSDN博客

以上图片均引用自以上大佬博客,如有侵权,请联系删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/863825.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python解锁图片相似度的神奇力量

在这个信息爆炸的时代,图片成为了我们传递信息、表达情感和记录生活的重要方式。然而,面对海量的图片资源,如何快速准确地找到相似的图片,成为了一个亟待解决的问题。现在,让我们为您揭开图片相似度的神秘面纱,带您领略这一创新技术的魅力! 图片相似度技术,就像是一位…

docker harbor仓库搭建,主从库复制

背景:需要主机安装docker-ce和docer-compose #1.安装相关依赖. yum install -y yum-utils device-mapper-persistent-data lvm2 #2.下载官方的docker yum源文件 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo …

10款好用不火的PC软件,真的超好用!

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/市场上有很多软件,除了那些常见的大众化软件,还有很多不为人知的小众软件,它们的作用非常强大,简洁…

cJSON源码解析之add_item_to_object函数

文章目录 前言add_item_to_object函数是干什么的add_item_to_object代码解析函数实现函数原理解析开头的代码constant_key参数的作用最后的if判断 add_item_to_array函数 总结 前言 在我们的日常编程中,JSON已经成为了一种非常常见的数据交换格式。在C语言中&#…

UI Toolkit系统学习

UI Toolkit 此文章用于学习UnityUI系统,手头的项目做完会来完善 官方文档 Unity上方菜单栏点击Window->UI Toolkit->Samples可以看UI Toolkit中的很多样例 使用 UI Toolkit 和 UI Builder 制作物品编辑器 在文件夹中右键->Create->UI Toolkit->Edi…

leetCode-hot100-动态规划专题

动态规划 动态规划定义动态规划的核心思想动态规划的基本特征动态规划的基本思路例题322.零钱兑换53.最大子数组和72.编辑距离139.单词拆分62.不同路径63.不同路径Ⅱ64.最小路径和70.爬楼梯121.买卖股票的最佳时机152.乘积最大子数组 动态规划定义 动态规划(Dynami…

【训练篇】MLU370-M8 完成 qwen1.5-7b-chat-lora训练及推理

文章目录 前言一、平台环境配置二、环境 or 模型准备1.模型下载2.环境准备2.1 modelscope2.2 transformers2.3 accelerate2.4 deepspeed2.5 peft2.6 环境代码修改 3训练代码准备4 代码修改 三,训练后推理验证四.推理效果展示1.微调前2.微调后 前言 本期我们采用魔塔…

distance delayed sound

distance delayed sound 在本章中,我们将讨论在游戏音频中使用距离延迟的重要性。我们将首先通过一个常见的例子——闪电和雷鸣,来展示这种重要性并解释距离延迟音频的基础知识。我们将讨论计算速度、距离和时间的数学和方程式,以确定距离延迟…

数据倾斜优化:Hive性能提升的核心

文章目录 1. 定义2. 数据倾斜2.1 Map2.2 Join2.3 Reduce 3. 写在最后 1. 定义 数据倾斜,也称为Data Skew,是在分布式计算环境中,由于数据分布不均匀导致某些任务处理的数据量远大于其他任务,从而形成性能瓶颈的现象。这种情况在H…

PotPlayer安装及高分辨率设置

第1步: 下载安装PotPlayer软件 PotPlayer链接:https://pan.baidu.com/s/1hW168dJrLBonUnpLI6F3qQ 提取码:z8xd 第2步: 下载插件,选择系统对应的位数进行运行,该文件不能删除,删除后将失效。 …

【强化学习的数学原理】课程笔记--2(贝尔曼最优公式,值迭代与策略迭代)

目录 贝尔曼最优公式最优 Policy求解贝尔曼最优公式求解最大 State Value v ∗ v^* v∗根据 v ∗ v^* v∗ 求解贪婪形式的最佳 Policy π ∗ \pi^* π∗一些证明过程 一些影响 π ∗ \pi^* π∗ 的因素如何让 π ∗ \pi^* π∗ 不 “绕弯路” γ \gamma γ 的影响reward 的…

2024/6/30周报

文章目录 摘要ABSTRACT文献阅读题目问题本文贡献方法LSTMTCN模型总体架构 实验实验结果 深度学习TCN-LSTM代码运行结果 总结 摘要 本周阅读了一篇关于TCN和LSTM进行光伏功率预测的文章,本文提出了一种利用LSTM-TCN预测光伏功率的新模型。它由长短期记忆和时间卷积网…

ThreadPoolExecutor基于ctl变量的声明周期管理

个人博客 ThreadPoolExecutor基于ctl变量的声明周期管理 | iwts’s blog 总集 想要完整了解下ThreadPoolExecutor?可以参考: 基于源码详解ThreadPoolExecutor实现原理 | iwts’s blog ctl字段的应用 线程池内部使用一个变量ctl维护两个值&#xff…

树莓派开发之文件传输

文章目录 一、简介使用U盘传输文件使用SD卡传输文件使用Xftp 7传输文件 二、 总结 一、简介 在树莓派开发中经常会用到文件传输,下面介绍几种树莓派文件传输的几种方法。 使用U盘传输文件 (1)复制所需传输文件到U盘 (2&#…

C++:typeid4种cast转换

typeid typeid typeid是C标准库中提供的一种运算符,它用于获取类型的信息。它主要用于类型检查和动态类型识别。当你对一个变量或对象使用typeid运算符时,它会返回一个指向std::type_info类型的指针,这个信息包含了关于该类型名称、大小、基…

Pikachu靶场--Sql Inject

参考借鉴 pikachu靶场练习(详细,完整,适合新手阅读)-CSDN博客 数字型注入(post) 这种类型的SQL注入利用在用户输入处插入数值,而不是字符串。攻击者试图通过输入数字来修改SQL查询的逻辑,以执行恶意操作。…

Unity Shader 极坐标

Unity Shader 极坐标 前言项目简单极坐标极坐标变体之方形极坐标变体之圆形拉花 鸣谢 前言 极坐标记录 项目 简单极坐标 极坐标变体之方形 极坐标变体之圆形 拉花 鸣谢 【菲兹杂货铺】【Unity Shader教程】极坐标实现以及极坐标的两种变体

【87 backtrader期权策略】基于50ETF期权的covered-call-strategy

前段时间有读者希望能够实现一个期权策略的模板,这段时间通过akshare下载了期权的数据,并进行了清洗,写了一个最简单的期权策略,供大家参考。 策略逻辑: 这是151 trading strategies中的一个期权策略。 买入50ETF基金,手续费按照万分之二计算,一直持有卖出一个最远期的…

【实施】系统实施方案(软件方案Word)

软件实施方案 二、 项目介绍 三、 项目实施 四、 项目实施计划 五、 人员培训 六、 项目验收 七、 售后服务 八、 项目保障措施 软件开发全套资料获取:私信或者进主页获取。 软件产品,特别是行业解决方案软件产品不同于一般的商品,用户购买软…

13_旷视轻量化网络--ShuffleNet V2

回顾一下ShuffleNetV1:08_旷视轻量化网络--ShuffleNet V1-CSDN博客 1.1 简介 ShuffleNet V2是在2018年由旷视科技的研究团队提出的一种深度学习模型,主要用于图像分类和目标检测等计算机视觉任务。它是ShuffleNet V1的后续版本,重点在于提供更高效的模…