Transformer中的多头注意力机制-为什么需要多头?

Transformer为什么使用多头注意力机制呢?

多头可以学习到不同维度的特征和信息。为什么可以学习到不同维度的信息呢?

答案是:多头注意力机制的组成是有单个的self attention,由于self attention通过产生QKV矩阵来学习数据特征,那每一个self attention最终会产生一个维度上的输出特征,所以当使用多头注意力机制的时候,模型就可以学习到多维度的特征信息,这使得模型可以从多个维度更好的理解数据。同时多头注意力机制还是并行计算的,这也符合现在硬件架构,提升计算效率。详细说明请看下文。

首先,要明确的是multi head attention的组成是单个的self attention。我们先理解self attention的计算过程。

self attention的计算如左下图所示:其中QKV的来源是将输入X进行线性变换,产生三个不同的权重矩阵,如右下图所示,然后这三个矩阵依次和输入x做矩阵点乘运算得到了QKV,

最后通过下面这个式子的可以得到self attention的输出,我们可以将其理解为一个维度上的特征信息。

而多头注意力机制的如下图,允许模型从不同的子空间关注多个不同的位置(上图中的QKV的来源文件中矩阵是生成了,可学习的,)从而捕捉不同级别的特征和信息,使得每个头可以学习到不同的关系,这使得模型可以从不同的角度理解数据。

几个问题:

1、Q和K为什么使用不同的权重矩阵生成?为什么不能使用同一个值进行自身的点乘运算?

回答:1)使用不同的权重举证可以增加模型的表达能力,不同的权重矩阵允许模型在不同的空间中学习和匹配不同的特征。2)不同的权重矩阵可以使模型更好的参数化,学习到更多的信息而不是仅仅依赖一个权重矩阵。

2、self attention中为什么是点乘而不是add?二者复杂度上有什么区别?

回答:点乘注意力通常在实践中表现更好,可能是因为计算简单和高效。点乘复杂度为O(d*n^2)其中d是特征维度,n是序列长度。

3、transformer的encoder结构

回答:encoder由多个相同的block组成,如下图所示,每个block中包含由两个模块,multi head attention和feed forward模块。每个模块中都含有一个残差连接和归一化层。

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

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

相关文章

leetCode 1026. 节点与其祖先之间的最大差值 + 递归

1026. 节点与其祖先之间的最大差值 - 力扣(LeetCode) 给定二叉树的根节点 root,找出存在于 不同 节点 A 和 B 之间的最大值 V,其中 V |A.val - B.val|,且 A 是 B 的祖先。(如果 A 的任何子节点之一为 B&am…

网络和Linux网络_5(应用层)HTTP协议(方法+报头+状态码)

目录 1. HTTP协议介绍 1.1 URL介绍 1.2 urlencode和urldecode 1.3 HTTP协议格式 1.4 HTTP的方法和报头和状态码 2. 代码验证HTTP协议格式 HttpServer.hpp 2.2 html正式测试 Util.hpp index.html 2.3 再看HTTP方法和报头和状态码 2.3.1 方法_GET和POST等 2.3.2 报头…

SpringBoot——国际化

优质博文:IT-BLOG-CN 一、Spring 编写国际化时的步骤 【1】编写国际化配置文件; 【2】使用ResourceBundleMessageSource管理国际化资源文件; 【3】在页面使用ftp:message取出国际化内容; 二、SpringBoot编写国际化步骤 【1】创…

cJSON的使用——下载、打包与解析

目录 一、cJSON的下载 二、cJSON的常用函数 三、cJSON的打包例程 四、cJSON的解析例程1 五、cJSON的解析例程2 一、cJSON的下载 cjson下载 二、cJSON的常用函数 cJSON *cJSON_Parse(const char *value); 作用:将一个JSON数据包,按照cJSON结构体…

Day48:583. 两个字符串的删除操作、72. 编辑距离

文章目录 583. 两个字符串的删除操作思路代码实现 72. 编辑距离思路代码实现 583. 两个字符串的删除操作 题目链接 思路 确定dp数组(dp table)以及下标的含义 dp[i][j]:以i-1为结尾的字符串word1,和以j-1位结尾的字符串word2&am…

假设检验(一)假设检验的基本概念

文章目录 假设与检验规则两类错误假设检验的一般步骤参考文献 假设检验(Test of Hypothesis)是指,先对总体或总体的性质提出某项假设,再利用样本所提供的信息对提出的假设进行检验,以判断该假设是否成立。假设检验可分…

编译器设计02-前端概述

前端处理概述 前端处理:词法分析、语法分析、语义分析 前端处理犹如阅读英文文章,往往我们需要先理清文章中各个词的意思,这类似词法分析,得到“单词序列”;再梳理整篇文章的脉络,这类似语法分析&#xf…

软件工程期末复习(选择+填空+判断)

文章目录 软件工程期末复习一、 选择题 软件工程期末复习 一、 选择题 1.“软件危机”的表现不包括:(c) A、软件产品不能按期交付 B、用户对“已完成的”软件产品时常不满意 C、程序员越来越供不应求 D、软件项目难以管理,维护困…

东胜物流软件 SQL注入漏洞复现

0x01 产品简介 东胜物流软件是一款致力于为客户提供IT支撑的 SOP, 帮助客户大幅提高工作效率,降低各个环节潜在风险的物流软件。 0x02 漏洞概述 东胜物流软件 TCodeVoynoAdapter.aspx、/TruckMng/MsWlDriver/GetDataList、/MvcShipping/MsBaseInfo/Sav…

CSS3制作3D爱心动画

1、什么是CSS css,即层叠样式表的简称,是一种标记语言,有浏览器解释执行用来使页面变得更美观。 2、选择器 css3中新增了一些选择器,如下: 3、新样式 边框 css3新增了三个边框属性,分别是: bo…

linux之下安装 nacos

1 下载地址 也可使用在线下载wget https://github.com/alibaba/nacos/releases/download/1.4.6/nacos-server-1.4.6.tar.gzTags alibaba/nacos GitHuban easy-to-use dynamic service discovery, configuration and service management platform for building cloud nativ…

android trace文件的抓取与查看方法

本地手机抓取trace 解压android trace文件的抓取与查看方法 找到config.pbtx文件,连接手机push进去 # push config.pbtx ,/data/local/tmp/为自定义push到的目录 adb push config.pbtx /data/local/tmp/ adb shell # 抓取trace, /data/loc…

pandas教程:Interfacing Between pandas and Model Code pandas与建模代码间的交互

文章目录 Chapter13 Introduction to Modeling Libraries in Python(Python中建模库的介绍)13.1 Interfacing Between pandas and Model Code(pandas与建模代码间的交互) Chapter13 Introduction to Modeling Libraries in Python…

【MyBatisPlus】通俗易懂 快速入门 详细教程

目录 学习目标 一、MyBatisPlus简介 1. 入门案例 问题导入 1.1 SpringBoot整合MyBatisPlus入门程序 ①:创建新模块,选择Spring初始化,并配置模块相关基础信息 ②:选择当前模块需要使用的技术集(仅保留JDBC&…

bodymovin:AE动画导出为JSONforMac/win中文版下载

对于动画制作爱好者和专业设计师来说,Adobe After Effects(AE)是一个强大的工具,可以创造出惊人的动画效果。然而,将这些动画导出为可交互的格式一直是一个挑战。现在,有了bodymovin,你可以轻松…

[原创][1]探究C#多线程开发细节-“Thread类的简单使用“

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XXQQ: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi…

搜索百度可以直接生成代码拉

先看效果图: 使用示例: 比如我要搜索“JS取一个数在两个数更近”的方法,直接搜“JS取一个数在两个数更近”,点击百度一下,就会出现想要的代码,如上图。

基于OpenCV+YOLOv5实现车辆跟踪与计数(附源码)

导 读 本文主要介绍基于OpenCVYOLOv5实现车辆跟踪与计数的应用,并给出源码。 资源下载 基础代码和视频下载地址: https://github.com/freedomwebtech/win11vehiclecount main.py代码:​​​​​​​ import cv2import torchimport numpy as npfrom tr…

Kotlin学习之集合

原文链接 Kotlin Collections 现代的软件一般比较复杂,程序语言中的基本数据类型往往不能满足需要,除了基本的数据类型以外,还有对象的容器也非常的重要,比如线性容器(数组,列表和Set)和二维容…

【SA8295P 源码分析 (四)】134 - Android 侧 NFS Client 挂载 QNX NFS Server 目录不成功 问题排查方法

【SA8295P 源码分析】134 - Android 侧 NFS Client 挂载 QNX NFS Server 目录不成功 问题排查方法 一、QNX侧1. 检查镜像是否挂载成功:/mnt/nfs_shared_dir 目录2. 检查 /mnt/etc/exports 文件配置是否正确3. 检查 nfsd、rpcbind 两个服务程序是否在后台工作正常 二…