注意力机制和自注意力机制

有很多自己的理解,仅供参考

Attention注意力机制

对于一张图片,我们第一眼看上去,眼睛会首先注意到一些重点的区域,因为这些区域可能包含更多或更重要的信息,这就是注意力机制,我们会把我们的焦点聚焦在比较重要的事物上。大数据中对于重要的数据,我们要使用;对于不重要的数据,我们不太想使用,但是,对于一个模型而言(CNN、LSTM),很难决定什么重要,什么不重要。由此,注意力机制诞生了。

注意力机制是一个很宽泛的概念,可以极端地理解为QKV(三个向量分别称为Query、Key、Value)相乘就是注意力。通过一个查询变量 Q,去找到 V 里面比较重要的东西。假设 K==V,然后 QK 相乘求相似度A,然后 AV 相乘得到注意力值Z,这个 Z 就是 V 的另外一种形式的表示。Q 可以是任何一个东西,V 也是任何一个东西, 但K往往是等同于 V 的(同源),当然K和V不同源不相等也可以。

Attention没有规定 QKV 怎么来,只规定 QKV 怎么做,即上述描述的操作。
在这里插入图片描述


具体计算过程

至于Attention机制的具体计算过程,对目前大多数方法进行抽象的话,可以归纳为两个过程:第一个过程是根据Query和Key计算权重系数第二个过程根据权重系数对Value进行加权求和。而第一个过程又可以细分为两个阶段:第一个阶段根据Query和Key计算两者的相似性或者相关性;第二个阶段对第一阶段的原始分值进行归一化处理;这样,可以将Attention的计算过程抽象为如图展示的三个阶段。
在这里插入图片描述

Q, K = k 1 , k 2 , ⋯   , k n K=k_1, k_2, \cdots, k_n K=k1,k2,,kn ,然后我们一般使用点乘(求内积)的方法计算Q 和 K 里的每一个事物的相似度,就拿到了 Q 和 k 1 k_1 k1的相似值 s 1 s_1 s1,Q 和 k 2 k_2 k2的相似值 s 2 s_2 s2,Q 和 k n k_n kn的相似值 s n s_n sn,接着做一层 s o f t m a x ( s 1 , s 2 , ⋯   , s n ) softmax(s_1,s_2,\cdots,s_n) softmax(s1,s2,,sn)得到概率 ( a 1 , a 2 , ⋯   , a n ) (a_1,a_2,\cdots,a_n) (a1,a2,,an),进而就可以找出哪个对Q 而言更重要了;最后进行一个汇总,当使用 Q 查询结束了后,Q 已经失去了它的使用价值,我们最终是要拿到这张图片(以图片举的例子),原图 V = ( v 1 , v 2 , ⋯   , v n ) V=(v_1,v_2,\cdots,v_n) V=(v1,v2,,vn),现在这张图片变为了 V ′ = ( a 1 ∗ v 1 + a 2 ∗ v 2 + ⋯ + a n ∗ v 1 ) V'=(a_1*v_1+a_2*v_2+\cdots+a_n*v_1) V=(a1v1+a2v2++anv1),得到了一个新的 V’,这个新的 V’ 就多了哪些更重要、哪些不重要的信息在里面(对Q来说),然后用 V’ 代替 V它。

一般在Transformer中 K=V,当然也可以不相等,但是 K 和 V 之间一定具有某种联系,这样的 QK 点乘才能指导 V 哪些重要,哪些不重要。


Attention不依赖于RNN

前面已经说了Attention是一个很宽泛宏大的概念,所以显然Attention机制本身并不依赖于RNN(循环神经网络)。它是一种独立于具体模型结构的机制,可以与多种模型结构结合使用。

在自然语言处理任务中,Attention机制最初是与RNN结合使用的。具体来说,常见的组合是将Attention机制应用于RNN编码器-解码器模型,如机器翻译任务中的序列到序列模型。在这种情况下,RNN编码器用于将输入序列编码为固定长度的上下文向量,然后解码器使用Attention机制来动态地关注编码器输出的不同部分。

然而,Attention机制不仅限于与RNN结合使用。它可以与其他类型的模型结构一起使用,例如卷积神经网络(CNN)和自注意力机制(如Transformer模型)。在Transformer模型中,Attention机制被广泛应用,并且成为其核心组件之一,用于实现序列中不同位置之间的自注意力计算。

因此,尽管Attention机制最初与RNN结合使用,但它并不是RNN的特定部分,而是一种通用的机制,可以与各种模型结构结合使用,以提高模型在序列处理任务中的性能和效果。


Self-Attention自注意力机制

和Attention类似,他们都是一种注意力机制。不同的是Attention是source对target,输入的source和输出的target内容不同。例如英译中,输入英文,输出中文。而Self-Attention是source对source,是source内部元素之间或者target内部元素之间发生的Attention机制,也可以理解为Target=Source这种特殊情况下的注意力机制。

简单说,Self-Attention不仅固定了QKV的操作(Attention机制),还规定了QKV同源(Q≈K≈V来源于同一个输入X),也就是通过X找到X里面的关键点,QKV通过X与三个参数(矩阵) W Q , W K , W V W^Q,W^K,W^V WQ,WK,WV相乘得到。注意力机制包括自注意力机制和其他种类的注意力机制,比如交叉注意力机制。


具体计算操作和Attention一样

  1. 将输入单词X转化成嵌入向量(embedding) a a a

  2. 根据嵌入向量 a a a得到q,k,v三个向量; q i = W q a i q^i=W^qa^i qi=Wqai k i = W k a i k^i=W^ka^i ki=Wkai v i = W v a i v^i=W^va^i vi=Wvai
    QKV的获取

  3. 为每个向量计算一个score, a i j a_{ij} aij=score = q i ∗ k j q^i*k^j qikj;若需要计算 a 1 a^{1} a1(embedding后的向量)和 a 1 , a 2 , a 3 , ⋯   , a n a^{1},a^{2},a^{3},\cdots,a^{n} a1,a2,a3,,an之间的关系(或关联),则需要用 q 1 q^{1} q1 k 1 , k 2 , k 3 , ⋯   , k n k^{1},k^{2},k^{3},\cdots,k^{n} k1,k2,k3,,kn进行匹配计算

  4. 为了梯度的稳定,Transformer使用了score归一化,即除以 d k \sqrt{dk} dk ,原因是防止q和k的点乘结果较大

  5. 对score施以softmax激活函数

  6. softmax点乘Value值v,得到加权的每个输入向量的评分v

  7. 相加之后得到最终的输出结果z= ∑ v
    在这里插入图片描述

与RNN和LSTM的区别

RNN无法解决长序列依赖问题,LSTM无法做并行计算,而self-attention很好的解决了这两个问题。

  1. 长距离依赖建模:Self-Attention可以对序列中的任意两个位置进行直接的关联和交互,因此能够更好地建模长距离依赖。
  2. 并行计算:在序列中的每个时间步,Self-attention可以同时计算所有位置的注意力权重,从而并行处理整个序列。相比之下,LSTM是逐个时间步进行计算,需要依赖前一时间步的隐藏状态,限制了并行性。
  3. 句法特征和语义特征:Self-Attention得到的新的词向量具有句法特征和语义特征(表征更完善)。

简单了解:

句法特征:句法特征关注的是语言中单词之间的结构和关系。它们描述了句子中的语法规则、词性、句法依存关系等。句法特征可以帮助我们理解句子的结构和语法规则,例如主谓宾结构、修饰关系等。

语义特征:语义特征则关注的是句子和单词的语义含义。它们描述了单词之间的关联和句子的意义。语义特征帮助我们理解句子的意思、推断隐含信息和进行语义推理。

理论上Self-Attention (Transformer 50个左右的单词效果最好)解决了RNN模型的长序列依赖问题,但是由于文本长度增加时,训练时间也将会呈指数增长,因此在处理长文本任务时可能不一定比LSTM(200个左右的单词效果最好)等传统的RNN模型的效果好。LSTM通过这些门控机制,避免了传统RNN中梯度消失和梯度爆炸的问题,在一些情况下仍然是一种有效的模型选择,研究者也提出了一些结合LSTM和Self-attention的模型,以发挥它们各自的优势。




参考:

ChatGPT

https://www.cnblogs.com/nickchen121/p/15105048.html

https://zhuanlan.zhihu.com/p/265108616

https://zhuanlan.zhihu.com/p/619154409

https://zhuanlan.zhihu.com/p/631398525

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

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

相关文章

2023年12月7日:QT实现登陆界面

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//窗口设置this->resize(600,500);//重新设置窗口大小this->setWindowTitle("QQ-盗版");//设置窗口名为QQ-盗版this->setWindowIcon(QIcon("D:\\Qt\\funny\\pi…

【改进YOLOv8】融合感受野注意力卷积RFCBAMConv的杂草分割系统

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义 随着计算机视觉技术的不断发展,图像分割成为了一个重要的研究领域。图像分割可以将图像中的不同对象或区域进行有效的分离,对于许多应用领…

【广州华锐视点】仓储物流3D数字孪生平台打造更高效、智能的物流管理体验

在当今快速发展的物流行业中,传统的管理和监控方法往往难以满足复杂运营的需求。为了解决这个问题,广州华锐互动提供仓储物流3D数字孪生平台定制开发服务,打造更为高效、智能的物流管理体验。 仓储物流3D数字孪生平台是一种基于虚拟现实技术的…

DNS漫游指南:从网址到IP的奇妙之旅

当用户在浏览器中输入特定网站时发生的整个端到端过程可以参考下图 1*4vb-NMUuYTzYBYUFSuSKLw.png 问题: 什么是 DNS? 答案 → DNS 指的是域名系统(Domain Name System)。DNS 是互联网的目录,将人类可读的域名&#…

flutter 代码混淆

Flutter 应用混淆: Flutter 应用的混淆非常简单,只需要在构建 release 版应用时结合使用 --obfuscate 和 --split-debug-info 这两个参数即可。 –obfuscate --split-debug-info 用来指定输出调试文件的位置,该命令会生成一个符号映射表。目前…

学习Django从零开始之一

Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的定制网站!采用了MVC的框架模式,即模型M,视图V和控制器C,也可以称为MVT模式,模型M,视图V,模…

python编程需要的电脑配置,python编程用什么电脑

大家好,小编来为大家解答以下问题,python编程对笔记本电脑配置的要求,python编程对电脑配置的要求有哪些,现在让我们一起来看看吧! 学习python编程需要什么配置的电脑 简单的来讲,Python的话普通电脑就可以…

应用ICP-MS实验PFA烧杯耐腐蚀带刻度反应杯的特点分析

聚四氟(PFA)烧杯可用于痕量分析、同位素分析等实验,ICP-MS实验室适用。半导体、多晶硅、光伏电子 锂电池行业均适用。杯体刻度清晰,方便观察,尖嘴方便倾倒溶液。 可溶性聚四氟乙烯烧杯特性: 1、透明&…

企业U盘防泄密的必备秘籍!迅软DSE答疑解析一切你需要知道的!

关于U盘防泄密: U盘是企事业单位办公时经常需要用到的存储介质,而一旦U盘不慎丢失或是落入他人手中,都会面临U盘内数据泄密的情况发生。 因此,企事业单位可通过天锐绿盾安全U盘系统对公司重要数据进行U盘防泄密保护,确…

如何使用Docker将.Net6项目部署到Linux服务器(一)

目录 配置服务器环境 配置yum 配置docker 安装.NetCore SDK6.0 发布Net6 添加Dockerfile。 发布文件。 编辑DockerFile文件 ​编辑 上传文件 安装MySql 配置服务器环境 配置yum 在配置yum之前,我们需要先了解yum是什么,yum,是Yellow…

实时视频美颜SDK的选择指南与性能比较

时下,直播平台如何选取合适的SDK成为了一项重要的决策。本文将带您深入探讨实时视频美颜SDK的选择指南,并进行性能比较,助您做出明智的决策。 一、SDK功能概览 在选择实时视频美颜SDK之前,首先需要明确您的应用需求。不同的SDK可…

VSCode 中使用 AI智能编程工具的几个小妙招

可能你已经在IDE中安装了CodeGeeX,也了解到CodeGeeX能够帮助你编写代码、调试问题、创建文档,生成单元测试等。 但是总有些“Wow!”时刻,还在等你发现。今天就介绍几个CodeGeeX插件在VSCode中的使用技巧和小窍门。 一、侧边栏放…

代驾系统开发:驾驶智能化的代码之路

代驾系统的开发涉及到许多复杂而精密的技术,这些技术的融合不仅提升了出行服务的水平,也为开发者带来了独特的挑战。让我们深入探讨代驾系统的关键技术和相应的代码实现。 1. 实时定位技术: 代驾系统的核心在于实时定位,这涉及…

Unity 置顶OpenFileDialog文件选择框

置顶文件选择框 🌭处理前🥙处理后 🌭处理前 🥙处理后 解决方案

前端 Web Workers 简介

简介 以前我们总说,JS 是单线程没有多线程,当 JS 在页面中运行长耗时同步任务的时候就会导致页面假死影响用户体验,从而需要设置把任务放在任务队列中;执行任务队列中的任务也并非多线程进行的,然而现在 HTML5 提供了…

Yolov5双目测距-双目相机计数及测距教程(附代码)

引言 在计算机视觉领域,Yolov5-Binocular相机距离计数及测距是一个引人注目的研究方向。本教程将为小白用户提供一个简明扼要的学习指南,涵盖了关键步骤,包括标定、公示推倒以及重要的代码片段。 第一步:环境搭建 首先&#x…

论文阅读_反思模型_Reflexion

英文名称: Reflexion: Language Agents with Verbal Reinforcement Learning 中文名称: 反思:具有言语强化学习的语言智能体 文章: http://arxiv.org/abs/2303.11366 代码: https://github.com/noahshinn/reflexion 作者: Noah Shinn (Northeastern University) 日期…

【从零开始学习JAVA集合 | 第一篇】深入解读HashMap源码(含面试题)

目录 目录 前言: HashMap简介: HashMap的常用常量和变量: HashMap的重要考点: HashMap的存储过程: HashMap的扩容过程: HashMap的初始化: 常见面试题: 总结:…

Linux 高级管理,MySQL服务器的构建与维护

实验环境 某公司因业务范围日益扩大,最近订购了一套基于B/S架构的电子商务系统,在正式部署之前,要 求对现有的httpd服务器进行改造,首先需要增加MySQL数据库服务。 需求描述 1. 编译安装MySQL服务器,并添加为mysqld系…

mybatisplus saveBatch版本问题导致CPU打满生产问题定位

一、生产现象 1、16:57 运维告知Push微服务有一台因为CPU被打满,自动重启,询问原因。 2、17:00 查看异常节点CPU轨迹,16:30开始CPU出现异常飙升 3、17:10 结合生产日志错误,以及定时任务运行情况,得出结论: 产品在…