Transformer2--Multi-head self-attention

news2024/11/15 20:10:27

目录

  • 一、背景
  • 二、多头自注意力机制的原理
    • 2.1 自注意力机制
    • 2.2 多头自注意力机制
    • 2.3 Positional Encoding(位置编码)
    • 2.4 self-attention for image
  • 三、Self-attention v.s CNN
  • 四、Self-attention v.s RNN
  • 参考资料

一、背景

为什么是multi-head self attention?
并行的处理多种注意力模式: 每个注意力头使用不同的线性变换,这意味着它们可以从输入序列的不同子空间中学习不同的特征关联。这样一来,模型可以通过多个注意力头同时关注输入序列的不同方面,如一句话的语法结构、语义角色、主题转移等。
增加模型的学习能力和表达能力: 通过多个注意力头,由于每个头关注的特征不同,模型可以学习到更丰富的上下文信息,这样综合起来可以更加全面的理解和处理序列。

二、多头自注意力机制的原理

2.1 自注意力机制

在介绍多头自注意力机制之前,先来简单的回顾一下自注意力机制:

自注意力机制(Self-Attention Mechanism)是Transformer架构中的核心组件,它允许模型在处理序列数据时, 考虑序列中不同位置元素之间的相互关系。在自注意力机制中,查询(Query, Q)、键(Key, K)和值(Value, V)是三个重要的概念,它们都是从输入序列经过线性变换得到的向量。
在这里插入图片描述
对于Q,K,V分别代表的含义,我想用一个例子来说明一下:
我们有一段文本:“小明喜欢在晴朗的日子里去公园散步。” 如果我们想要了解 “小明” 这个词在句子中的上下文含义,我们可以看看句子中其他词与 “小明” 之间的关系。

查询(Query, Q):可以把它想象成我们要寻找信息的问题或者焦点。在上面的例子中, 小明”就是我们的查询 “,我们想要知道“小明”这个词在句子中的具体含义。

键(Key, K):可以把它看作是其他单词(或者说是输入序列中的其他部分)提供的线索,帮助我们判断它们与查询的相关程度。在我们的例子中,句子中的每一个词都可以产生一个键,用来表示它是否与“小明”相关以及相关的程度。

值(Value, V):可以理解为当一个键与查询匹配时,它能提供的额外信息。在句子中,如果一个词与“小明”相关联,那么它的值向量就会被用来增强我们对“小明”的理解。比如,“喜欢”、“晴朗的日子”和“公园散步”都与“小明”有关系,它们的值向量将被用来丰富“小明”的语境。

自注意力机制通过计算查询向量(Q)和所有键向量(K)之间的相似度(通常是点积),得到一个注意力权重矩阵,然后使用这些权重对所有值向量(V)进行加权求和,从而得到一个综合了上下文信息的新表示。总结来说,Q是询问者,K是回答者提供的线索,V是等待线索的答案,自注意力机制就是通过这些线索和答案来构建输入序列的上下文关系,进而优化模型的性能。

2.2 多头自注意力机制

多头自注意力机制顾名思义,最自注意力机制最大的不同,就是使用多个QKV来构建序列的上下文关系。

在实现过程中 q i , 1 , q i , 2 q^{i,1}, q^{i,2} qi,1,qi,2 k i , 1 , k i , 2 k^{i,1}, k^{i,2} ki,1,ki,2, v i , 1 , v i , 2 v^{i,1}, v^{i,2} vi,1,vi,2与自注意力机制的获取方式一样,以q的计算为例:
q i , 1 , q j , 1 = W q , 1 q i q j q^{i,1}, q^{j,1}=W^{q,1}q^iq^j qi,1,qj,1=Wq,1qiqj
q i , 2 , q j , 2 = W q , 2 q i q j q^{i,2}, q^{j,2}=W^{q,2}q^iq^j qi,2,qj,2=Wq,2qiqj
可以看到其计算方式和自注意力机制计算q时一样。
在这里插入图片描述
multi-head 在计算self-attention时,和单个头的self-attention类似,只不过每一个输入 a i a^i ai会得到和头个数相同的输出 b i , 1 , b i , 2 b^{i,1},b^{i,2} bi,1,bi,2。需要注意的是,头与头对应,即 q i , 1 q^{i,1} qi,1只需要与 k i , 1 , v i , 1 k^{i,1}, v^{i,1} ki,1,vi,1做运算。
在这里插入图片描述

2.3 Positional Encoding(位置编码)

当前,对于一个序列而言,每一个单词出现的位置以及单词之间的距离并未被考虑进去,即第一个单词与最后一个单词的位置是等价的。但是,无论是对于一段文字序列还是一段声音信号,词语的位置不同,所表达的意思可能会发生较大的改变,不如“你不能不吃饭”和“不你不能吃饭”。

为了解决该问题,就需要用到ositional Encoding技术。对于每一个词语只需要给输入信号加上一个位置向量 e i e^i ei.
在这里插入图片描述
位置向量的编码方式有很多种,如下图所示:
在这里插入图片描述

接下来的内容与multi-head知识无关了,我只是顺着课程一块记录下来了。

2.4 self-attention for image

将一张图片看作是一个vector set, 比如下面这张图像,被划分成510的一组向量集,每一个vector是一个13大小的向量。
在这里插入图片描述
应用的实例:
在这里插入图片描述

三、Self-attention v.s CNN

先说结论:CNN是简化版的self-attention。
self-attention处理数据的方式: self-attention是考虑整张图像的信息,即receptive filed的范围是自己决定的,自己觉得q与谁相关。
在这里插入图片描述
CNN处理数据的方式: CNN仅仅考虑定义范围内的receptive filed里面的信息
在这里插入图片描述

四、Self-attention v.s RNN

RNN 简单介绍:RNN的核心机制是其隐层状态,它可以保存先前输入的信息,从而在后续时间步骤中使用,这相当于给网络赋予了一定的“记忆”能力,使其能够处理具有长期依赖关系的数据。
在这里插入图片描述
在这里插入图片描述
RNN与Self-attention 的不同

  1. 如果一段序列较长,如果需要最右边黄色的输入与最开始蓝色输入信息的关联,需要将蓝色输入一直存储在memory中,这需要较大的内存。受内存的限制,在RNN中,后面的输入很难与最开始的输入关联。
    但是在Self-attention中,只要使用黄色输入的Q与蓝色输入的K进行矩阵乘法计算就能完成这个操作。

  2. RNN是noparallel, 除了最开始的输入外,RNN中每一个输入都需要考虑前一个的输出来得到当前状态的输出,无法平行处理所有输入。
    但是在self-attention中,如下图所示,它可以很轻松的平行处理所有输入。
    在这里插入图片描述

参考资料

台大李宏毅自注意力机制和Transformer详解!
【NLP】多头注意力(Multi-Head Attention)的概念解析

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

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

相关文章

3.优化算法之二分查找1

二分查找简介 1.特点 最简单最恶心,细节最多,最容易写出死循环的算法 2.学习中的侧重点 1)算法原理 数组有序的情况 2) 模板 不要死记硬背 ->理解之后再记忆 1.朴素的二分模板 2.查找左边界的二分模板 3.查找右边界的二分模板 …

AI音乐大模型:深度剖析创意与产业的双重变革

随着AI技术的飞速发展,音乐大模型在最近一个月内纷纷上线,这一变革性技术不仅颠覆了传统的音乐创作方式,更是对整个音乐产业及创意产业带来了深远的影响。本文将从多个维度出发,深度剖析AI音乐大模型对创意与产业的双重变革。 一、…

王春城 | 精益生产推进中如何建立有效的反馈机制?

在精益生产的推进过程中,建立有效的反馈机制是确保持续改进和高效运作的关键。一个健全的反馈机制能够及时发现问题,提供解决方案,并促进团队成员之间的有效沟通。下面将分享在精益生产环境中如何构建并运行一个有效的反馈机制。 一、明确反馈…

Java面试题:内存管理、类加载机制、对象生命周期及性能优化

1. 说一下 JVM 的主要组成部分及其作用? JVM包含两个子系统和两个组件:Class loader(类装载)、Execution engine(执行引擎)、Runtime data area(运行时数据区)、Native Interface(本地接口)。 Class loader(类装载):根据给定的全限定名类名(如:java.lang.Object)装载class文…

迅为iTOP-2K1000开发板龙芯中科国产64位Loognix主板

硬件配置 国产龙芯处理器,双核64位系统,板载2G DDR3内存,流畅运行Busybox、Buildroot、Loognix、QT5.12 系统! 接口全板载4路USB HOST、2路千兆以太网、2路UART、2路CAN总线、Mini PCIE、SATA固态盘接口、4G接口、GPS接口WIF1、蓝牙、Mini H…

MD5加密接口

签名算法 app_key和app_secret由对方系统提供 MD5_CALCULATE_HASH_FOR_CHAR(中文加密与JAVA不一致) 代码: *获取传输字段名的ASCII码,根据ASCII码对字段名进行排序SELECT * FROM zthr0051WHERE functionid iv_functionidINTO …

python3使用ast.parse详解

使用ast库分析python3脚本, 并对脚本进行一些处理, 比如注释pirnt语句 一.基础知识 官方网址连接 ast — Abstract Syntax Trees ast库可以方便的分析python代码结构, 并做一些处理, 很适合对大量脚本文件做批量处理, 比如把print语句全部注释等. 直观的打印出代码结构 impo…

Chatopera 云服务实现类海尔服务智能客服的功能点比较 | Chatopera

在上一篇文章中,我分享了《智能客服体验分析,使用小程序海尔服务完成电器报修》。如果使用 Chatopera 云服务实现一个类似的应用,如何做呢?借助 Chatopera 云服务 可以实现一个智能客服,那么和现在的海尔服务小程序会有…

Java工具包——Lombok

目录 1. maven仓库手动导入依赖注解 1.1 maven仓库引入依赖 1.2 在类上使用Data注解 1.3 在属性上使用Getter与Setter注解 2. EditStarters插件注解 2.1 安装EditStarters插件 2.2 在pom.xml中进行操作 2.3 在java对象类中使用注解 3. lombok工具使用结果查看 3.1…

信创好搭档,企业好选择| 亚信安慧AntDB诚邀您参与企业数智化升级云端研讨会

关于亚信安慧AntDB数据库 AntDB数据库始于2008年,在运营商的核心系统上,服务国内24个省市自治区的数亿用户,具备高性能、弹性扩展、高可靠等产品特性,峰值每秒可处理百万笔通信核心交易,保障系统持续稳定运行超十年&a…

宠物空气净化器热卖爆款,希喂、小米、352猫用空气净化器真实PK

相信大漫天多数养猫家庭都会有一个烦恼:猫咪们的猫实在是太多了,无法忍受家里面漫天飞舞的浮毛和难闻的猫猫便臭。作为养猫多年的过来人我尝试过很多种方法清理这些猫浮毛和异味,但都以失败告终。 直到后面看到一个宠物博主推荐的宠物空气净…

Studying-代码随想录训练营day14| 226.翻转二叉树、101.对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度

第十四天,(ง •_•)ง💪💪,编程语言:C 目录 226.翻转二叉树 101.对称二叉树 100.相同的树 572.另一个树的子树 104.二叉树的最大深度 559.n叉树的最大深度 111.二叉树的最小深度 总结 226.翻转二叉树 文档讲…

笔记-python reduce 函数

reduce() 函数在 python 2 是内置函数, 从python 3 开始移到了 functools 模块。 官方文档是这样介绍的 reduce(...) reduce(function, sequence[, initial]) -> valueApply a function of two arguments cumulatively to the items of a sequence, from left …

HarmonyOS Next开发学习手册——进程模型线程模型

进程模型 系统的进程模型如下图所示: 应用中(同一包名)的所有PageAbility、ServiceAbility、DataAbility、FormAbility运行在同一个独立进程中,即图中绿色部分的“Main Process”。 WebView拥有独立的渲染进程,即图中…

Redis-实战篇-缓存雪崩

文章目录 1、缓存雪崩2、解决方案: 1、缓存雪崩 缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。 2、解决方案: 给不同的key的TTL添加随机值利用Redis集群提高服务的可用性…

OpenAI API一键搬家,天工推出开发者迁移计划

6月25日,OpenAI宣布称将于今年7月9日开始封锁来自非支持国家和地区的API流量。此后,来自中国大陆、中国香港等地的开发者将无法使用OpenAI API提供服务。 为了助力开发者高效切换至国内大模型,天工开放平台(https://model-platfo…

工业网关的功能与作用解析-天拓四方

在工业4.0和智能制造的时代背景下,工业网关作为连接现场设备与云端平台的桥梁,正发挥着日益重要的作用。它不仅为工业设备的远程监控和管理提供了可能,还为企业实现数字化转型和智能化升级提供了有力支持。本文将对工业网关的功能与作用进行解…

【SpringBoot Actuator】⭐️Actuator 依赖实现服务健康检查,线程信息收集

目录 🍸前言 🍻一、Actuator 了解 🍺二、使用 2.1 依赖引入 2.2 测试场景搭建 🍹三、测试 3.1 项目启动测试 3.2 服务健康检查 3.3 线程转储 3.4 内存使用,垃圾回收信息获取 💞️四、章末 &#x1…

程序猿大战Python——正则表达式——正则概述

正则表达式的概述 基本介绍 目标:了解什么是正则表达式? 正则表达式,也叫做规则表达式,通常会说成【正则】。 实际上,正则表达式就是指符合一定规则的字符串,同时它能用于检查一段文本数据是否与某种模式…

IND87520芯片介绍(二)

六、内部模拟调光 一个精确的10位DAC作为BUCK电流调节回路的参考发生器。与SPI通信时,DAC参考电压可由主机改变并调节电流在BUCK不断切换的同时,也会发生相应的变化。10位分辨率的DAC正在设计中满足电流变化平稳的要求。一个1.713mA电流步使光亮度连续变…