通俗易懂理解注意力机制(Attention Mechanism)

重要说明:本文从网上资料整理而来,仅记录博主学习相关知识点的过程,侵删。

一、参考资料

大话注意力机制(Attention Mechanism)

注意力机制(Attention Mechanism)

深度学习中的注意力机制

注意力机制

二、注意力机制(Attention Mechanism)

1. 通俗理解Attention

深度学习中的注意力机制(Attention Mechanism)和人类视觉的注意力机制类似,就是在更多信息中把注意力集中放在重要的点上,选出关键信息,而忽略其他不重要的信息。

人在观察事物时会有选择性的关注较为重要的信息,称其为注意力。通过持续关注这一关键位置以获得更多的信息,而忽略其他的无用信息,这种视觉注意力机制大大提高了我们处理信息的效率和准确性。

在这里插入图片描述

上图形象化展示了人类在看到一副图像时如何高效分配有限的注意力资源。其中红色区域表明视觉系统更关注目标,很明显对于上图所示的场景,人们会把注意力更多投入到人的脸部,文本的标题以及文章首句等位置。

注意力机制的灵感来源可以归结到人对环境的生理感知,当人类看东西时,一般会将注意力注视着某个地方,而不会关注全部所有信息。比如,视觉系统更倾向于挑选影像中的部分信息进行集中分析,忽略图像中无关的信息。再比如,当我们看到下面这张猫的图片时,主要会将目光停留在猫的脸部,以及注意猫的躯干,而后面的草地则会被当成背景忽略,这说明我们在每一处空间位置上的注意力分布不一样。

在这里插入图片描述

通过这种方式,人类在需要重点关注的目标区域,会投入更多的注意力资源,以获取更多的细节信息,而抑制其他区域信息。这样使人类能够利用有限的注意力资源从大量信息中快速获取高价值的信息,极大地提升了大脑处理信息的效率。

2. Attention机制的本质思想

在这里插入图片描述

Query:给定的Target元素;

Key:Source中元素的Key值;

Value:Source中元素的Value值;

权重系数:Query与key的相似性或相关性,权重系数 S i m i l a r i t y ( Q u e r y , K e y i ) Similarity(Query, Key_i) Similarity(Query,Keyi)

Attention Value:对Value值进行加权求和;

Source中的构成元素由一系列的<Key, Value>数据对构成。给定Target中的某个元素Query,通过计算Query和各个Key的相似性相关性,得到每个Key对应Value的权重系数,然后对Value进行加权求和,即得到最终的Attention数值。所以,本质上Attention机制是Source中元素的Value值进行加权求和,而Query和Key用来计算对应Value的权重系数。可以将其本质思想改写成如下公式:
A t t e n t i o n ( Q u e r y , S o u r c e ) = ∑ i = 1 L x S i m i l a r i t y ( Q u e r y , K e y i ) ∗ V a l u e i Attention(Query, Source) = \sum_{i=1}^{L_x}Similarity(Query, Key_i)*Value_i Attention(Query,Source)=i=1LxSimilarity(Query,Keyi)Valuei
其中, L x = ∣ ∣ S o u r c e ∣ ∣ L_x=||Source|| Lx=∣∣Source∣∣代表Source的长度。Attention从大量信息中有选择地筛选出少量重要信息并聚焦到这些重要信息上,忽略大多不重要的信息。聚焦的过程体现在权重系数的计算上,权重越大,越聚焦在对应的Value值上,即权重代表了信息的重要性,而Value是其对应的信息。

3. Attention机制的计算过程

在这里插入图片描述

3.1 第一阶段

根据Query和Key,计算两者的相似性或者相关性,作为权重。

计算两者相似性或者相关性常用方法:

  • 点积 S i m i l a r i t y ( Q u e r y , K e y i ) = Q u e r y ∗ K e y i Similarity(Query, Key_i) = Query*Key_i Similarity(Query,Keyi)=QueryKeyi
  • Cosin相似性 S i m i l a r i t y ( Q u e r y , K e y i ) = Q u e r y ∗ K e y i ∣ ∣ Q u e r y ∣ ∣ ∗ ∣ ∣ K e y i ∣ ∣ Similarity(Query, Key_i) = \frac{Query*Key_i}{||Query||*||Key_i||} Similarity(Query,Keyi)=∣∣Query∣∣∣∣Keyi∣∣QueryKeyi
  • MLP网络 S i m i l a r i t y ( Q u e r y , K e y i ) = M L P ( Q u e r y , K e y i ) Similarity(Query, Key_i) = MLP(Query, Key_i) Similarity(Query,Keyi)=MLP(Query,Keyi)

3.2 第二阶段

对第一阶段得到的原始权重进行归一化处理。

根据产生方法的不同,第一阶段产生的分值的取值范围也不一样,第二阶段引入类似SoftMax的计算方式对第一阶段的得分就行数值转换。一方面,可以进行归一化,将原始计算分值整理成所有元素权重之和为1的概率分布;另一方面,通过SoftMax的内在机制更加突出重要元素的权重。即一般采用如下公式:
a i = S o f t m a x ( S i m i ) = e S i m i ∑ j = 1 L x e S i m j a_i = Softmax(Sim_i) = \frac{e^{Sim_i}}{\sum_{j=1}^{L_x}e^{Sim_j}} ai=Softmax(Simi)=j=1LxeSimjeSimi

3.3 第三阶段

根据权重系数对Value进行加权求和,即可得到最后的Attention数值:
A t t e n t i o n ( Q u e r y , S o u r c e ) = ∑ i = 1 L x a i ∗ V a l u e i Attention(Query, Source) = \sum_{i=1}^{L_x}a_i*Value_i Attention(Query,Source)=i=1LxaiValuei

4. Attention模型的分类

4.1 按Attention的可微性分类

视觉注意力机制 | Non-local模块与Self-attention的之间的关系与区别?

4.1.1 硬注意力机制(Hard-Attention)
  • 硬注意力更加关注点,也就是图像中的每个点都可能延伸出注意力。同时,硬注意力是一个随机的预测过程,更强调动态变化。硬注意力是一个不可微的注意力,训练过程往往是通过增强学习(reinforcement learning) 来完成。

  • 硬注意力是0/1问题,某个区域要么被关注,要么不关注,这是一个不可微的注意力。

4.1.2 软注意力机制(Soft-Attention)
  • 软注意力更加关注区域或者通道,软注意力是确定性的注意力,学习完成后可以直接通过网络生成,最关键的地方是软注意力是可微的。可微的注意力可以通过神经网络计算梯度,通过前向传播和后向反馈来学习得到注意力的权重。

  • 软注意力是[0,1]间连续分布问题,用0到1的不同分值表示每个区域被关注的程度高低。

  • 在CV领域中,很多相关工作(例如,分类、检测、分割、生成模型、视频处理等)都在使用软注意力,这些工作也衍生了很多不同的软注意力使用方法。这些方法共同的部分,都是利用相关特征学习权重分布,再用学出来的权重施加在特征之上,进一步提取相关知识

  • 软注意力施加权重的方法:

    • 加权可以作用在原图上;
    • 加权可以作用在空间维度上,给不同区域加权;
    • 加权可以作用在channel维度上,给不同通道特征加权;
    • 加权可以作用在不同时刻历史特征上,结合循环结构添加权重。例如,机器翻译,或者视频相关的工作。

4.2 按注意力的关注域分类

4.2.1 空间域(spatial domain)

首先将通道本身进行降维,分别获取 MaxPoolAvgPool 的结果,然后拼接(concat),再使用一个卷积层进行学习。

在这里插入图片描述

4.2.2 通道域(channel domain)

分别获取 MaxPoolAvgPool 的结果,然后经过几个MLP层获得变换结果,最后分别应用于两个通道,使用Sigmoid函数得到通道的Attention结果。

在这里插入图片描述

4.2.3 其他域
  • 层域(layer domain)

  • 混合域(mixed domain)

  • 时间域(time domain)

5. 基于Encoder-Decoder的注意力模型

人类视觉注意力机制,在处理信息时注意力的分布是不一样的。而 Encoder-Decoder 框架将输入X都编码转化为语义表示C,这样会导致所有输入的处理权重都一样,没有体现出注意力集中。因此,也可看成是“分心模型”。

为了能体现注意力机制,将语义表示C进行扩展,用不同的C来表示不同注意力的集中程度,每个C的权重不一样。扩展后的 Encoder-Decoder 框架变为:

在这里插入图片描述

下面通过一个英文翻译成中文的例子说明“注意力模型”:

例如,输入的英文句子是:Tom chase Jerry,目标的翻译结果是:”汤姆追逐杰瑞”。那么在语言翻译中,Tom,chase,Jerry这三个词对翻译结果的影响程度是不同的。其中,Tom是主语,Jerry是宾语,是两个人名,chase是谓语,是动词,这三个词的影响程度大小顺序分别是Jerry>Tom>chase,例如(Tom,0.3),(chase,0.2),(Jerry,0.5)。不同的影响程度代表模型在翻译时分配给不同单词的注意力大小,即分配的概率大小。

生成目标句子单词的过程,计算形式如下:
y 1 = f 1 ( C 1 ) y 2 = f 1 ( C 2 , y 1 ) y 3 = f 1 ( C 3 , y 1 , y 2 ) y_1 = f_1(C_1) \\ y_2 = f_1(C_2, y_1) \\ y_3 = f_1(C_3,y_1, y_2) y1=f1(C1)y2=f1(C2,y1)y3=f1(C3,y1,y2)
其中,f1是 Decoder 的非线性变换函数。每个 C i C_i Ci 对应不同单词的注意力分配概率分布,计算形式如:

C 汤姆 = g ( 0.6 ∗ f 2 ( " T o m " ) , 0.2 ∗ f 2 ( " c h a s e " ) , 0.2 ∗ f 2 ( " J e r r y " ) ) C 追逐 = g ( 0.2 ∗ f 2 ( " T o m " ) , 0.7 ∗ f 2 ( " c h a s e " ) , 0.1 ∗ f 2 ( " J e r r y " ) ) C 杰瑞 = g ( 0.3 ∗ f 2 ( " T o m " ) , 0.2 ∗ f 2 ( " c h a s e " ) , 0.5 ∗ f 2 ( " J e r r y " ) ) C_{汤姆} = g(0.6*f_2("Tom"), 0.2*f_2("chase"), 0.2*f_2("Jerry")) \\ C_{追逐} = g(0.2*f_2("Tom"), 0.7*f_2("chase"), 0.1*f_2("Jerry")) \\ C_{杰瑞} = g(0.3*f_2("Tom"), 0.2*f_2("chase"), 0.5*f_2("Jerry")) C汤姆=g(0.6f2("Tom"),0.2f2("chase"),0.2f2("Jerry"))C追逐=g(0.2f2("Tom"),0.7f2("chase"),0.1f2("Jerry"))C杰瑞=g(0.3f2("Tom"),0.2f2("chase"),0.5f2("Jerry"))
其中f2函数表示 Encoder 节点中对输入英文单词的转换函数,g函数表示 Encoder 合成整个句子中间语义表示的变换函数,一般采用加权求和的方式,如下式:
c i = ∑ j = 1 T x a i j h j c_i = \sum_{j=1}^{T_x}{a_{ij}h_j} ci=j=1Txaijhj
其中, a i j a_{ij} aij 表示权重, h j h_j hj 表示 Encoder 的转换函数,即 h1 = f2("Tom"), h2 = f2("chase"), h3 = f2("Jerry") T x T_x Tx表示输入句子的长度。

当i是“汤姆”时,则注意力模型权重 a i j a_{ij} aij 分别是0.6,0.2,0.2。那么这个权重是如何得到的呢? a i j a_{ij} aij 可以看做是一个概率,反映了 h j h_j hj c i c_i ci 的重要性,可使用softmax来表示:
a i j = e x p ( e i j ) ∑ k = 1 L e x p ( e i k ) a_{ij} = \frac{exp(e_{ij})}{\sum_{k=1}^{L}{exp(e_{ik})}} aij=k=1Lexp(eik)exp(eij)
其中, e i j = f ( h i − 1 , h j ) e_{ij} = f(h_{i-1}, h_j) eij=f(hi1,hj),这里的f表示一个匹配度的打分函数,可以是一个简单的相似度计算,也可以是一个复杂的神经网络计算结果。在这里,由于在计算 c i c_i ci 时还没有 h i h_i hi,因此使用最接近的 h i − 1 h_{i-1} hi1 代替。当匹配度越高,则 a i j a_{ij} aij 的概率越大。因此,得出 a i j a_{ij} aij 的过程如下图:

在这里插入图片描述

其中, h i h_i hi 表示 Encoder 的转换函数,F(hj,Hi) 表示预测与目标的匹配打分函数。将以上过程串起来,则注意力模型的结构如下图所示:

在这里插入图片描述

其中, h i h_i hi 表示 Encoder 阶段的转换函数, c i c_i ci 表示语义编码, h i ′ h^{\prime}_i hi 表示 Decoder 阶段的转换函数。

6. 注意力机制的应用

6.1 在图像描述(Image Caption)领域

图片描述,即输入一张图片,AI系统根据图片中的内容输出一句描述文字。如下图所示,左图是输入原图,右边是AI系统生成划横线单次的时候对应图片中聚焦的位置区域,下边的句子是AI系统自动生成的描述文字。

在这里插入图片描述

可以看到,在输出frishbee(飞碟)、dog(狗)等单次时,AI系统会将注意力更多地分配给图片中飞碟、狗的对应位置,以获得更加准确的输出。

7. Self-Attention

用MLP代替掉Self-Attention

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于最小系统板PCB设计后的一些反思

简介 趁着刚刚画完板子寄回来&#xff0c;在这里做一些记录。 板子状况 这里打烊了5块PCB&#xff0c;但是没有进行SMT贴片&#xff0c;后续如果有芯片可以焊接上去进行后续验证。 封装问题 这里可以看到&#xff0c;我这里两侧的排针都是焊盘&#xff0c;不是通孔&#…

【动态规划】【字符串】【前缀和】1639通过给定词典构造目标字符串的方案数

作者推荐 【动态规划】【字符串】【行程码】1531. 压缩字符串 本文涉及知识点 动态规划汇总 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 1639. 通过给定词典构造目标字符串的方案数 给你一个字符串列表 words 和一个目标字符串 tar…

编译Opencv3.3.1遇到的编译器无法识别的警告的问题解除:

问题描述&#xff1a; 本文&#xff0c;就是在一个硬件的SDK中用到了opencv3.3.1的版本&#xff0c;在笔者目前的VS2019,CUDA11版本下编译的问题和解决。在做Cmake的configure的时候&#xff0c;Cmake报了一个找不到编译器版本的错误, Selecting windows SDK version 10.0.1904…

TOP100 矩阵

1.73. 矩阵置零 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 提示&#xff1a; m matrix.lengthn matrix[0].length1 < m, n < 200-2^31 < matrix[i][j] < 2^31 - 1 思路&#xf…

EMQX 单机及集群搭建

目录 1. 通过 Yum 源安装&#xff08;CentOS7 单机安装&#xff09; 1.1. 通过以下命令配置 EMQX Yum 源&#xff1a; 1.2. 运行以下命令安装 EMQX&#xff1a; 1.3. 运行以下命令启动 EMQX&#xff1a; 1.4. 访问 http://192.168.88.130:18083&#xff0c;默认用户名: adm…

Java项目要不要部署在Docker里?

部署Java项目有很多种方式&#xff0c;传统的方式是直接在物理机或虚拟机上部署应用&#xff0c;但为什么现在容器化部署变得越来越流行&#xff0c; 个人觉得原因有以下几个&#xff1a; 1、 环境一致性&#xff1a;使用Docker可以确保开发、测试和生产环境的一致性&#xff…

如何使用保留可探测字段参数的方法解决视频监控管理平台EasyCVR无法启动的问题

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

飞桨paddlespeech语音唤醒推理C INT8 定点实现

前面的文章&#xff08;飞桨paddlespeech语音唤醒推理C定点实现&#xff09;讲了INT16的定点实现。因为目前商用的语音唤醒方案推理几乎都是INT8的定点实现&#xff0c;于是我又做了INT8的定点实现。 实现前做了一番调研。量化主要包括权重值量化和激活值量化。权重值由于较小且…

Log4j2-24-log4j2 相同的日志打印 2 次

现象 相同的日志打印了两次&#xff0c;且因为日志的配置不同&#xff0c;导致脱敏的情况不一致。 代码与配置 代码 package com.ryo.log4j2.cfg.additivity;import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger;public class SimpleDemo…

JNPF低代码平台与其他低代码工具功能有什么不同?

JNPF低代码平台是一种新兴的技术解决方案&#xff0c;它可以帮助开发者快速构建应用程序而无需编写大量的代码。本文将深入了解JNPF低代码平台的常见类型与功能特点&#xff0c;帮助读者更好地理解和应用这项技术。 JNPF低代码平台的功能特点。首先&#xff0c;JNPF低代码平台具…

day28 回溯算法part4

93. 复原 IP 地址 中等 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 ‘.’ 分隔。 例如&#xff1a;“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址&#xff0c;但是 “0.011…

报错 Cannot read properties of undefined(reading‘addEventListener‘)如何解决

我在制作项目中遇到了一个问题&#xff0c;给大家分享一下&#xff0c;如下图&#xff1a; 问题&#xff1a;这是我给一个input输入框绑定的监听事件出现的报错 翻译&#xff1a;无法读取未定义的属性(读取 addEventListener ) 错误原因&#xff1a;js中操作的dom元素的函数方…

知识库是什么?为什么这么多企业都在用?

在信息化的时代&#xff0c;万物互联&#xff0c;企业获取、积累和应用知识的方式也因此发生了巨大的变化。有一项重要工具正是知识库&#xff0c;许多企业和组织都在广泛地使用它。那么&#xff0c;到底什么是知识库&#xff1f;为什么它能受到广泛的接纳和应用呢&#xff1f;…

MongoDB:从容器使用到 Mongosh、Python/Node.js 数据操作(结构清晰万字长文)

文章目录 1. 容器与应用之间的关系介绍2. 使用 Docker 容器安装 MongoDB3. Mongosh 操作3.1 Mongosh 连接到 MongoDB3.2 基础操作与 CRUD 4. Python 操作 MongoDB5. Nodejs 操作 MongoDB5.1 Mongodb 和 Mongoose5.2 推荐在项目中使用 Mongoose 参考文献 1. 容器与应用之间的关系…

数据质量和数据治理的关系 | 京东云技术团队

很多不太了解的人会认为&#xff1a;数据治理就是干数据清洗的。 近两年&#xff0c;在我们公司&#xff0c;数据治理团队在数据降本方面做的比较多&#xff0c;效果还不错&#xff0c;我们很多人可能以为&#xff1a;数据治理就是做数据清理的。 在京东科技集团数据治理工作…

如何使用Docker部署JSON Crack

文章目录 1. 在Linux上使用Docker安装JSONCrack2. 安装Cpolar内网穿透工具3. 配置JSON Crack界面公网地址4. 远程访问 JSONCrack 界面5. 固定 JSONCrack公网地址 JSON Crack 是一款免费的开源数据可视化应用程序&#xff0c;能够将 JSON、YAML、XML、CSV 等数据格式可视化为交互…

链接脚本常用命令(KEEP、MEMORY、PROVIDE、ENTRY、AT、ALIGN等)

1、命令介绍 命令作用KEEP保证该段一定在输出文件里&#xff0c;不会被丢弃MEMORY描述目标设备的内存情况&#xff0c;内存分几个区域&#xff0c;每个内存区域的属性PROVIDE从链接脚本导出符号给C语言或者汇编语言使用ENTRY程序入口AT指定段的加载地址ALIGN指定地址的对齐LOA…

入门产品经理详细教程!PM常用工具|岗位职责|学习书单|能力模型|与项目经理的区别

移动互联网和AI时代&#xff0c;产品经理无疑是备受瞩目的工作&#xff0c;产品经理负责提出各种创意&#xff0c;同时协调各种资源&#xff0c;推动创意落地实现产品从0到1&#xff0c;而且互联网上对产品经理这个职业也有诸多赞誉—— 产品经理是最接近CEO的岗位产品经理是站…

解密Sentinel中流控规则的阀值奥秘

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 解密Sentinel中流控规则的阀值奥秘 前言阀值类型基础&#xff1a;Sentinel中的数字量规1. QPS&#xff08;每秒查询率&#xff09;阀值&#xff1a;2. 线程数阀值&#xff1a;3. 关联规则阀值&#xf…

Java基于SpringBoot的学科竞赛系统,附源码,文档

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…