注意力机制的核心本质是什么?

注意力机制的核心本质是什么?

flyfish

注意力机制的核心本质是表达相似性。注意力机制不仅仅停留在“相似性”的层面,它还通过学习动态的 Query、Key 和 Value 表达,在上下文中灵活地建模关系。相比于简单的相似性计算(如余弦相似),注意力机制具备更强的表示能力。

注意力机制

注意力机制是一种让模型在处理数据(如文本、图像)时,根据上下文信息动态地“关注”最相关部分的技术。其核心在于通过计算输入之间的相似性来分配权重,再通过这些权重对输入信息进行加权聚合,从而生成上下文相关的表示

注意力机制的关键操作可以简化为矩阵运算

注意力机制的关键操作可以简化为矩阵运算,但它包含的不只是普通的矩阵乘法,还包括其他步骤。以最常见的**缩放点积注意力(Scaled Dot-Product Attention)**为例,它的核心公式是:

Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{Q K^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dk QKT)V

其中:
- Q Q Q 是查询向量(Query)。
- K K K 是键向量(Key)。
- V V V 是值向量(Value)。
- d k d_k dk 是向量的维度,用于缩放内积结果。

可以看到,注意力机制的第一步是计算 Q K T Q K^T QKT,这是一个矩阵乘法,它实际上是多个向量内积的结果。

矩阵乘法本质上是多个向量内积的集合

  • 矩阵乘法本质上是多个向量内积的集合
    • 例如,对于矩阵 A ∈ R m × n A \in \mathbb{R}^{m \times n} ARm×n 和矩阵 B ∈ R n × p B \in \mathbb{R}^{n \times p} BRn×p,它们的乘积 C = A B ∈ R m × p C = AB \in \mathbb{R}^{m \times p} C=ABRm×p,其中 C i j = a i ⋅ b j C_{ij} = \mathbf{a}_i \cdot \mathbf{b}_j Cij=aibj 是矩阵 A A A 的第 i i i 行向量与矩阵 B B B 的第 j j j 列向量的内积。
    • 所以,矩阵乘法是多个内积操作的汇总。

向量内积可以被用作一种相似性度量

向量内积可以被用作一种相似性度量,但需要满足特定条件:

  • 标准化后的内积:如果两个向量被归一化(即每个向量的模为1),内积直接等于两者夹角的余弦值( cos ⁡ θ \cos\theta cosθ)。这在高维空间中被称为余弦相似性
  • 未归一化的内积:它不仅反映方向的相似性,还反映了向量模的大小。

在注意力机制中,通常会对内积进行缩放和归一化(例如通过 softmax 函数),使其更加适合表达相对相似性

注意力机制的核心操作就是计算**查询(Query)和键(Key)之间的相似性

  1. 点积相似性:通过计算 Q K T Q K^T QKT,点积的结果可以看作 Query 与 Key 的余弦相似性的一个近似(如果 Q 和 K 的向量长度类似)。
  2. 归一化相似性:通过 softmax 函数将相似性结果归一化为概率分布,强调哪些 Key 对当前 Query 更重要。
  3. 加权求和:用这些相似性分数对值向量(Value)进行加权求和,得到最终的注意力输出。

注意力机制的核心表达的是Query 和 Key 的相似性,并利用这种相似性对 Value 进行加权。

注意力机制的数学推导和公式

Scaled Dot-Product Attention为例,这是现代注意力机制的基础,也是 Transformer 的核心注意力机制。

1. 输入表示

注意力机制的输入主要包括:

  • Query ( Q Q Q):查询向量,用来指定要关注的内容。
  • Key ( K K K):键向量,用来表示输入信息的特征。
  • Value ( V V V):值向量,存储实际的信息。

假设:

  • Q ∈ R n q × d k Q \in \mathbb{R}^{n_q \times d_k} QRnq×dk n q n_q nq 是查询向量的数量, d k d_k dk 是向量维度),
  • K ∈ R n k × d k K \in \mathbb{R}^{n_k \times d_k} KRnk×dk n k n_k nk 是键向量的数量),
  • V ∈ R n k × d v V \in \mathbb{R}^{n_k \times d_v} VRnk×dv d v d_v dv 是值向量的维度)。
2. 计算相似性分数

通过点积计算 Query 和 Key 的相似性:
score ( Q , K ) = Q K T \text{score}(Q, K) = Q K^T score(Q,K)=QKT

  • Q K T Q K^T QKT 生成一个大小为 n q × n k n_q \times n_k nq×nk 的矩阵,其中第 i , j i, j i,j 项表示第 i i i 个 Query 和第 j j j 个 Key 的点积相似性。

为了避免点积值过大导致梯度不稳定,对其进行缩放
scaled_score ( Q , K ) = Q K T d k \text{scaled\_score}(Q, K) = \frac{Q K^T}{\sqrt{d_k}} scaled_score(Q,K)=dk QKT
其中, d k \sqrt{d_k} dk 是缩放因子,用于平衡高维向量的数值幅度。

3. 转化为权重分布

相似性分数经过 Softmax 函数 转化为权重分布:
α i j = Softmax ( Q K T d k ) i j = exp ⁡ ( ( Q K T ) i j d k ) ∑ j = 1 n k exp ⁡ ( ( Q K T ) i j d k ) \alpha_{ij} = \text{Softmax}\left(\frac{Q K^T}{\sqrt{d_k}}\right)_{ij} = \frac{\exp\left(\frac{(Q K^T)_{ij}}{\sqrt{d_k}}\right)}{\sum_{j=1}^{n_k} \exp\left(\frac{(Q K^T)_{ij}}{\sqrt{d_k}}\right)} αij=Softmax(dk QKT)ij=j=1nkexp(dk (QKT)ij)exp(dk (QKT)ij)

  • α i j \alpha_{ij} αij 是第 i i i 个 Query 对第 j j j 个 Key 的注意力权重,表示第 j j j 个 Key 对 i i i 个 Query 的重要性。
4. 加权聚合

利用注意力权重 α \alpha α 对 Value ( V V V) 进行加权求和,生成最终的输出:
Attention ( Q , K , V ) = Softmax ( Q K T d k ) V \text{Attention}(Q, K, V) = \text{Softmax}\left(\frac{Q K^T}{\sqrt{d_k}}\right) V Attention(Q,K,V)=Softmax(dk QKT)V

  • 输出大小为 n q × d v n_q \times d_v nq×dv,其中每一行是针对一个 Query 的上下文感知表示。

步骤

  1. 计算相似性:用点积计算 Query 和 Key 的相似性分数。
  2. 缩放相似性:用 d k \sqrt{d_k} dk 缩放分数,避免梯度过大。
  3. 归一化权重:通过 Softmax 转化为权重分布,确保所有权重和为 1。
  4. 加权聚合:用权重对 Value 加权求和,生成上下文相关的表示。

多头注意力(Multi-Head Attention)

在 Transformer 中,注意力机制被扩展为多头注意力,以增强表示能力。

公式

假设有 h h h 个注意力头,每个头有独立的 Query、Key 和 Value 变换矩阵 W Q i , W K i , W V i W_Q^i, W_K^i, W_V^i WQi,WKi,WVi
head i = Attention ( Q W Q i , K W K i , V W V i ) \text{head}_i = \text{Attention}(Q W_Q^i, K W_K^i, V W_V^i) headi=Attention(QWQi,KWKi,VWVi)

h h h 个注意力头的结果拼接并通过一个线性变换:
MultiHead ( Q , K , V ) = Concat ( head 1 , head 2 , … , head h ) W O \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \text{head}_2, \ldots, \text{head}_h) W_O MultiHead(Q,K,V)=Concat(head1,head2,,headh)WO

  • W O W_O WO 是输出变换矩阵。

不同头可以关注不同的关系或模式

相似性的说明

注意力机制的核心本质是表达相似性。注意力机制不仅仅停留在“相似性”的层面,它还通过学习动态的 Query、Key 和 Value 表达,在上下文中灵活地建模关系。相比于简单的相似性计算(如余弦相似),注意力机制具备更强的表示能力。

1. 动态学习 Query、Key 和 Value 的表示

在简单的相似性计算(如余弦相似)中,我们通常直接比较两个静态向量的相似度,例如:
similarity ( u , v ) = u ⋅ v ∥ u ∥ ∥ v ∥ \text{similarity}(\mathbf{u}, \mathbf{v}) = \frac{\mathbf{u} \cdot \mathbf{v}}{\|\mathbf{u}\| \|\mathbf{v}\|} similarity(u,v)=u∥∥vuv
这里的 u \mathbf{u} u v \mathbf{v} v 是固定的向量,表示能力有限。

而在注意力机制中,QueryKeyValue 都是通过神经网络动态生成的:
Q = X W Q , K = X W K , V = X W V Q = XW_Q, \quad K = XW_K, \quad V = XW_V Q=XWQ,K=XWK,V=XWV

  • X X X 是输入序列(如词嵌入矩阵)。
  • W Q , W K , W V W_Q, W_K, W_V WQ,WK,WV 是可以学习的参数矩阵。

这种动态学习机制意味着:

  • 同样的输入 X X X 在不同的上下文中,可以生成不同的 Q Q Q K K K V V V,即注意力机制会根据具体任务和输入调整相似性计算的方式。
  • 这种灵活性使得注意力机制能够捕获复杂的、动态的上下文关系,而不仅仅局限于静态的相似性。

2. 引入上下文信息的灵活建模

简单相似性的局限性

简单的相似性计算通常只描述了两个向量之间的关系,缺乏上下文。例如:

  • 在句子 “The cat sat on the mat” 中,词 “cat” 和 “mat” 的简单相似性很低,但在上下文中它们关系密切(“cat” 在 “mat” 上)。
  • 传统的余弦相似或点积无法灵活适应不同上下文。
注意力机制的改进

注意力机制通过加权聚合(Weighted Aggregation)解决了这个问题:

  1. 首先,通过 Q K T QK^T QKT 计算 Query 和 Key 之间的相似性矩阵,得到每个 Query 对所有 Key 的注意力分布。
  2. 然后,利用相似性分数对 Value 进行加权求和,动态聚合上下文信息:
    Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dk QKT)V
  3. 这样,注意力机制不仅考虑了 Query 和 Key 的相似性,还通过 Value 的加权聚合整合了整个上下文的信息。

3. 多头注意力(Multi-Head Attention)的表达能力

多头注意力进一步增强了注意力机制的表达能力。简单来说,它允许模型从不同的“角度”看待数据:

  • 每个“头”(head)使用不同的 W Q , W K , W V W_Q, W_K, W_V WQ,WK,WV 参数生成 Query、Key 和 Value,从而专注于不同的关系特征。
  • 最终将所有头的输出拼接起来,从多个视角综合建模上下文关系。

公式为:
MultiHead ( Q , K , V ) = Concat ( head 1 , … , head h ) W O \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \ldots, \text{head}_h)W_O MultiHead(Q,K,V)=Concat(head1,,headh)WO
其中每个 head i \text{head}_i headi 独立计算:
head i = Attention ( Q W Q i , K W K i , V W V i ) \text{head}_i = \text{Attention}(QW_{Q_i}, KW_{K_i}, VW_{V_i}) headi=Attention(QWQi,KWKi,VWVi)
多头注意力的优点在于:

  • 不同的头可以专注于不同的特征(例如句子中短期依赖和长期依赖)。
  • 提高了注意力机制对复杂模式的捕获能力。

4. 注意力机制超越简单相似性的表现

以下是一些例子,展示了注意力机制如何超越简单的相似性计算:

(1) 异质关系建模

在许多任务中,输入 X X X 中的元素可能具有不同的类型和语义。例如,在机器翻译中,注意力机制需要根据上下文判断哪些单词之间的关系更重要,而这超出了简单的相似性计算。

(2) 多尺度信息整合

在自然语言处理或图像任务中,不同尺度的信息(如短句依赖和长句依赖)需要综合考虑:

  • 例如在长句中,注意力机制能够捕获远距离的语义关联,而简单的内积相似无法有效处理这种情况。
(3) 异构输入的交互

注意力机制特别适合处理不同输入之间的交互关系(例如跨模态任务,如文本与图像的联合建模)。动态学习的 Q Q Q K K K、(V$ 使得注意力机制能够适应异构数据。


5. 注意力机制的优化与扩展

(1) 增强的相似性计算

在基础点积相似性上,有一些改进模型增强了注意力机制的表达能力,例如:

  • 加性注意力(Additive Attention):将点积替换为更复杂的非线性变换。
  • 交互式注意力:引入外部知识或特定模式,进一步提升相似性计算的精确性。
(2) 提高效率的变种

标准注意力机制对长序列的计算代价较高,但出现了许多变种(如稀疏注意力、低秩注意力等),在减少计算复杂度的同时保留了捕获相似性的能力。

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

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

相关文章

mysql数据库varchar截断问题

用了这么多年mysql数据库,才发现varchar是可以截断的,而且是在我们线上数据库。个人觉得dba的这个设置是非常有问题的,用户往数据库里存东西,就是为了以后用的,截断了存放,数据不完整,就用不了了…

SeggisV1.0 遥感影像分割软件【源代码】讲解

在此基础上进行二次开发,开发自己的软件,例如:【1】无人机及个人私有影像识别【2】离线使用【3】变化监测模型集成【4】个人私有分割模型集成等等,不管是您用来个人学习还是公司研发需求,都相当合适,包您满…

MySQL底层概述—9.ACID与事务

大纲 1.ACID之原子性 2.ACID之持久性 3.ACID之隔离性 4.ACID之一致性 5.ACID的关系 6.事务控制演进之排队 7.事务控制演进之排它锁 8.事务控制演进之读写锁 9.事务控制演进之MVCC 10.事务隔离级别之隔离级别的类型 11.事务隔离级别之和锁的关系 12.事务隔离级别之隔…

基于 SpringBoot 的新冠密接者跟踪系统:如何实现高效信息推送功能

第2章 程序开发技术 2.1 Mysql数据库 为了更容易理解Mysql数据库,接下来就对其具备的主要特征进行描述。 (1)首选Mysql数据库也是为了节省开发资金,因为网络上对Mysql的源码都已进行了公开展示,开发者根据程序开发需要…

手撸了一个文件传输工具

在日常的开发与运维中,文件传输工具是不可或缺的利器。无论是跨服务器传递配置文件,还是快速从一台机器下载日志文件,一个高效、可靠且简单的文件传输工具能够显著提高工作效率。今天,我想分享我自己手撸一个文件传输工具的全过程…

基于Java Springboot电子书阅读器APP且微信小程序

一、作品包含 源码数据库全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 微信开发者工具 数…

【AI系统】AI 编译器基本架构

AI 编译器基本架构 在上一篇文章中将 AI 编译器的发展大致分为了 3 个阶段,分别为 1)朴素编译器、2)专用编译器以及 3)通用编译器。 本文作为上一篇文章 AI 编译器架构的一个延续,着重讨论 AI 编译器的通用架构。首先…

华为关键词覆盖应用市场ASO优化覆盖技巧

在我国的消费者群体当中,华为的品牌形象较高,且产品质量过硬,因此用户基数也大。与此同时,随着影响力的增大,华为不断向外扩张,也逐渐成为了海外市场的香饽饽。作为开发者和运营者,我们要认识到…

SuperMap GIS基础产品FAQ集锦(20241202)

一、SuperMap iDesktopX 问题1:请问一下,iDesktopX11.2.1如何修改启动界面 11.2.0 【解决办法】参考帮助文档的“自定义启动界面”内容:https://help.supermap.com/iDesktopX/zh/SpecialFeatures/Development/DevelopmentTutorial/UserCust…

Java基础访问修饰符全解析

一、Java 访问修饰符概述 Java 中的访问修饰符用于控制类、方法、变量和构造函数的可见性和访问权限,主要有四种:public、protected、default(无修饰符)和 private。 Java 的访问修饰符在编程中起着至关重要的作用,它…

浪潮X86服务器NF5280、8480、5468、5270使用inter VROC Raid key给NVME磁盘做阵列

Inter VROC技术简介 Intel Virtual RAID on CPU (Intel VROC) 简单来说就是用CPU的PCIE通道给NVME硬盘做Raid 更多信息可以访问官方支持页面 Raid Key 授权,即VROC SKU 授权主要有用的有2个标准和高级,仅Raid1的授权我暂时没见过。 标准 VROCSTANMOD …

【Pytorch】torch.view与torch.reshape的区别

文章目录 一. 简介:二. Pytorch中Tensor的存储方式2.1 Pytorch中张量存储的底层原理2.2 Pytorch张量步长(stride)属性 三. 对视图(view)的理解四. view()与reshape()的比较4.1 对view()的理解4.1.1 (1)如何理解满足条件 stride[i] stride[i1…

光伏电站设计排布前的准备

1、确定安装地点 地理位置:了解安装地点的经纬度,这对于确定太阳辐射角度和强度非常重要,海拔越高,阳光辐照就越高,比较适合安装光伏电站,根据地理位置还可以确定光伏板的安装倾角是多少,可以进…

5、防火墙一

防火墙的含义 firewalld:隔离功能 病毒防护: 1、入侵检测系统:在互联网访问的过程中,不阻断任何网络访问,也不会定位网络的威胁,提供告警和事后的监督,类似于监控。 2、入侵防御系统&#x…

代码随想录算法训练营第六十天|Day60 图论

Bellman_ford 队列优化算法(又名SPFA) https://www.programmercarl.com/kamacoder/0094.%E5%9F%8E%E5%B8%82%E9%97%B4%E8%B4%A7%E7%89%A9%E8%BF%90%E8%BE%93I-SPFA.html 本题我们来系统讲解 Bellman_ford 队列优化算法 ,也叫SPFA算法&#xf…

详解LZ4文件解压缩问题

详解LZ4文件解压缩问题 一、LZ4文件解压缩方法1. 使用LZ4命令行工具2. 使用Python库3. 使用第三方工具4. 在线解压工具 二、常见问题及解决方法1. 解压显示文件损坏2. 解压后文件大小异常 三、总结 LZ4是一种快速的压缩算法,广泛应用于需要实时压缩和解压缩大文件的…

【Linux网络编程】第四弹---构建UDP服务器与字典翻译系统:源码结构与关键组件解析

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【Linux网络编程】 目录 1、UdpServer.hpp 1.1、函数对象声明 1.2、Server类基本结构 1.3、构造函数 1.4、Start() 2、Dict.hpp…

DBA面试题-1

面临失业,整理一下面试题,找下家继续搬砖 主要参考:https://www.csdn.net/?spm1001.2101.3001.4476 略有修改 一、mysql有哪些数据类型 1, 整形 tinyint,smallint,medumint,int,bigint;分别占用1字节、2字节、3字节…

vxe-table 树形表格序号的使用

vxe-table 树形结构支持多种方式的序号&#xff0c;可以及时带层级的序号&#xff0c;也可以是自增的序号。 官网&#xff1a;https://vxetable.cn 带层级序号 <template><div><vxe-grid v-bind"gridOptions"></vxe-grid></div> <…

精通.NET鉴权与授权

授权在.NET 中是指确定经过身份验证的用户是否有权访问特定资源或执行特定操作的过程。这就好比一个公司&#xff0c;身份验证(鉴权)是检查你是不是公司的员工&#xff0c;而授权则是看你这个员工有没有权限进入某个特定的办公室或者使用某台设备。 两个非常容易混淆的单词 鉴…