attention简单总结(初版)

news2025/1/16 1:05:37

引言

  • 本文将总结归纳个人搜集关于注意力机制的一些简单通俗理解,在失业期间作为个人充电的起始,本文不包含众多注意力机制以及其组合的变体,只为方便理解后续的一些算法做铺垫。
  • 本文首先介绍注意力机制的通俗理解和背景
  • 然后介绍目前注意力机制的主要使用场景
  • 介绍注意力机制的结构原理和数学原理
  • 介绍attention根据不同的划分条件分类介绍类别
  • 注意力机制和自注意力机制的区别

注意力机制通俗理解

  • 如上图chatgpt回答,通俗来讲注意力机制就是模仿生物将注意力集中到一部分事物而忽略另外的一些事物,比如下图的这张图片当我们第一眼看过去兔子大概率是关注的重点其次才是后面的景色。
  • 在深度学习领域,训练模型往往需要大量的数据但是在某特定的情境下只有少部分数据是极为重要的,此时就需要attention机制发光发热了。
  • 注意力机制产生的原因
    • 计算能力的限制,当要记住很多"历史信息"的时候模型就会变得越来越复杂,但是计算能力不一定能刚好满足
    • 优化算法的限制:LSTM只能在一定程度缓解RNN中的长距离依赖关系,且记忆能力并不高,个人理解是觉得记忆的不够精准有点碰运气的成分没有针对性。

Encoder-Decoder框架(编码器-解码器)

  • 目前大多数注意力模型是存在于Encoder-Decoder框架中的,但是注意力模型其实可以看作是一种通用的思想,其本身是不依赖于特定框架的,个人理解其更像是数学中的一条定理,我们拿着这个定理去解决数学问题。
    • 以下为文本处理领域常用的E-D框架

  • 对于上图公式的抽象理解 https://zhuanlan.zhihu.com/p/37601161

seq2seq(序列到序列)

  • 关于seq2seq模型此处做一个简单的介绍,方便后面举例(具体s2s模型会专门写文章总结),seq2seq其实就是对上述的Encoder-Decoder框架的具体实现和应用
  • 参考2
  • RNN LSTM
  • 注1:其中不管是左边的编码器还是右边的解码器,所用模型可以是CNN/RNN/BiRNN/GRU/LSTM等根据自己场景需要选择(参考上面ED部分的最后一个图的说明)
  • 下图中红色文字为个人认为比较LSTM更好是因为在LSTM里遗忘门与下图的文字解释更搭配,RNN虽然先提出的隐状态的概念但是相对理解不够形象,酌情参考

attention结构

  • 脱离ED框架的attention结构和引入了注意力模型的ED框架

  • 实例说明(参考3)
  • attention机制的具体计算分为两大过程
    • 根据Query和Key计算权重系数)(又细分为两个部分)
      • 根据Query和Key计算两者的相似度或者相关性
      • 对上面阶段的原始分值进行归一化处理
    • 根据权重系数对Value进行加权求和
  • 关于第一阶段可以用不同的函数和计算机制来计算其相关性和相似性

  • 第二阶段

关于attention的变体类型划分(下图仅供参考)

  • 图片出处参考4
  • 关于各个类型的分类参考5

计算区域分类

  • 1 Self-attention自注意力机制对所有key求权重概率,每个key都有一个对应的权重,是一种全局的计算方式(也可以叫Global Attention)。这种方式比较理性,参考了所有key的内容,再进行加权。但是计算量可能会比较大一些。
  • 2 Hard Attention,这种方式是直接精准定位到某个key,其余key就都不管了,相当于这个key的概率是1,其余key的概率全部是0。因此这种对齐方式要求很高,要求一步到位,如果没有正确对齐,会带来很大的影响。另一方面,因为不可导,一般需要用强化学习的方法进行训练。(或者使用gumbel-softmax之类的,解决某些情况下不可导的情况)
  • 3 Local Attention,这种方式其实是以上两种方式的一个折中,对一个窗口区域进行计算。先用Hard方式定位到某个地方,以这个点为中心可以得到一个窗口区域,在这个小区域内用Soft方式来算Attention。

所用信息分类

  • 关于信息,如果我们需要对一段原文计算attention,是包含外部信息和内部信息的,内部信息就是原文本身的信息,外部信息指的是除了原文以外的额外信息
  • 1 General Attention,这种方式利用到了外部信息,常用于需要构建两段文本关系的任务,query一般包含了额外信息,根据外部query对原文进行对齐。
    • 如:构建问题和文章的关联,将问题首先转化成一个向量并将其与文章的所有词向量拼接起来,输入到如LSTM中进行建模, 此时文章所有的词向量共享同一个问题向量(此时内部信息还是原文),如果想要同一层级下文章词向量都有一个不同的问题向量,并计算词层级下词向量和问题的attention值,问题属于原文,文章词向量属于外部信息(个人对下面图片中作者例子的理解,仅供参考)
  • 2 Local Attention,这种方式只使用内部信息,key和value以及query只和输入原文有关,在self attention中,key=value=query。既然没有外部信息,那么在原文中的每个词可以跟该句子中的所有词进行Attention计算,相当于寻找原文内部的关系。
    • 同上面例子,就是对问题的词进行向量化,然后每个词与其他词计算attention,并不引入文章的信息,也可以单独用文章信息(同上的个人理解)

结构层次

  • 单层Attention,这是比较普遍的做法,用一个query对一段原文进行一次attention(上图中最简单的结构)
  • 多层Attention,一般用于文本具有层次关系的模型,假设我们把一个document划分成多个句子,在第一层,我们分别对每个句子使用attention计算出一个句向量(也就是单层attention);在第二层,我们对所有句向量再做attention计算出一个文档向量(也是一个单层attention),最后再用这个文档向量去做任务(个人感觉可能gpt的回答)。
  • 多头attention

模型方面


task分析

  • 该部分为参考文章作者的心得体会,还有部分内容请看原文链接(已经快原文摘抄了…)

自注意力机制与注意力机制区别

  • 参考6
  • 参考7

其他参考文章

  • 参考8
  • 参考9

结尾

  • 由于个人对注意力机制只是去学习没有业务实践所以还是停留在表面,本文更像是个人学习途中对参考文章的拆分总结,所以仅供参考,有错误的地方欢迎指正
  • 代码部分由于组合比较多,个人决定今后有业务需要会上传相关实现代码,参考资料中部分是包含代码的,有需要的可以自行检验。
  • 祝自己找工作顺利!

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

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

相关文章

06 为什么需要多线程;多线程的优缺点;程序 进程 线程之间的关系;进程和线程之间的区别

为什么需要多线程 CPU、内存、IO之间的性能差异巨大多核心CPU的发展线程的本质是增加一个可以执行代码工人 多线程的优点 多个执行流,并行执行。(多个工人,干不一样的活) 多线程的缺点 上下文切换慢,切换上下文典型值…

SpringSecurity5.7+最新案例 -- 授权 --

一、前提 书接上回 SpringSecurity5.7最新案例 – 用户名密码验证码记住我 本文 继续处理SpringSecurity授权 … 目前由 难 -> 简,即自定义数据库授权,注解授权,config配置授权 二、自定义授权 0. 数据准备 SET NAMES utf8mb4; SET …

FFmpeg将编码后数据保存成mp4

以下测试代码实现的功能是:持续从内存块中获取原始数据,然后依次进行解码、编码、最后保存成mp4视频文件。 可保存成单个视频文件,也可指定每个视频文件的总帧数,保存多个视频文件。 为了便于查看和修改,这里将可独立的…

Redis追本溯源(四)集群:主从模式、哨兵模式、cluster模式

文章目录 一、主从模式1.主从复制——全量复制2.主从复制——增量复制 二、哨兵模式1.实时监控与故障转移2.Sentinel选举领导者 三、cluster模式1.三种分片方案2.cluster模式 Redis 有多种集群搭建方式,比如,主从模式、哨兵模式、Cluster 模式。 一、主…

一些不错的VSCode设置和插件

设置 同步设置 我们做的各项设置,不希望再到其他机器的时候还得再重新配置一次。VSCode中我们可以登陆微软账号或者GitHub账号,登陆后我们可以开启同步设置。开启设置同步,根据提示登陆即可。 允许侧边栏水平滑动 在目录层次较深或者文件…

Leetcode-每日一题【剑指 Offer 07. 重建二叉树】

题目 输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 示例 1: Input: preorder [3,9,20,15,7], inorder [9,3,15,20,7]Output: [3,9,20,null,null,15,7] 示例 2: Input: preo…

【Python小demo】JOJO替身面板生成

文章目录 1 前言2 代码实现3 总结 1 前言 最近暑假在数模研赛备赛,情理之中地接触了一些图表。也是第一次才知道雷达图这么个图表形式,用于直观地评价多个变量或指标。看到雷达图,我不禁联想到了JOJO中的替身面板,于是兴起想用Py…

.NET 应用程序 部署

**硬件支持型号 点击 查看 硬件支持 详情** DTU701 产品详情 DTU702 产品详情 DTU801 产品详情 DTU802 产品详情 DTU902 产品详情 G5501 产品详情 本文内容 在设备上部署 dotnet应用,与任何其他平台的部署相同,可以2种方式: 依赖于框…

Zebec Protocol ,不止于 Web3 世界的 “Paypal”

Paypal 是传统支付领域的巨头企业,在北美支付市场占有率约为 77% 以上。从具体的业务数据看,在8月初,Paypal 公布的 2023 年第二季度财报显示,PayPal 第二季度净营收为 73 亿美元,净利润为 10.29 亿美元。虽然 Paypal …

【C# 基础精讲】运算符和表达式

在C#编程中,运算符和表达式是构建复杂逻辑的关键元素。运算符用于执行各种数学、逻辑和其他操作,而表达式则由运算符、变量、常量和函数组成,用于生成计算结果。本文将详细介绍C#中常见的运算符和表达式的概念,以及它们在程序中的…

全面讲解最小二乘法

常见的最小二乘法我们就不多说了,下面主要介绍一下最小二乘法的一些先进方法。 正则化的最小二乘法 在使用常见的最小二乘法进行回归分析时,常常会遇到过拟合的问题,也就是在训练数据集上表现的很好,但是在测试数据集上表现的很…

Flutter 让软键盘不再自动弹起

1、问题说明: 在开发中,经常遇到这种事,一个页面有输入框,点击输入框后,会弹起软键盘,同时输入框会聚焦,手动收起软键盘后,点击另一个按钮前往下一个页面或者显示一个弹窗&#xff0…

heima头条项目学习--Day1: 环境搭建、SpringCloud微服务(注册发现、网关)

Nacos注册发现、网关 a. 项目介绍b. app登录1) 需求分析2) 表结构分析3) 手动加密(md5随机字符串)4) 用户端微服务搭建5) 功能实现6) app网关7) 网关校验jwt8) 前端集成, 配置nginx a. 项目介绍 业务说明 技术栈说明 [外链图片转存失败,源站可能有防盗…

Nginx的优化和防盗链(面试高频!!!)

Nginx的优化和防盗链 全篇高能!!!!干货较多!!!!本篇含面试高频题: 修改配置文件时,先备份!!!以便回滚!&…

API接口:企业信息核验

企业信息核验是现代企业管理中必不可少的一项业务,它可以帮助企业做出正确的决策。在这篇文章里,我们将会介绍如何使用API接口来对企业信息进行核验,并实现快捷、准确的查询。 一、API接口 在这里我们使用的是挖数据提供的企业信息核验API接…

医学影像PACS临床信息系统源码

医学影像临床信息系统(Picture Archiving and Communication Systems)PACS是指从医疗影像设备中获得数字影像,利用高速网络进行存储、管理、传输的医疗影像信息管理系统。通过该系统,能实现影像数字化、无胶片化管理。 登记系统 …

MyCat水平分表

1.水平拆分案例场景 2.MyCat配置 这个表只是在 schema.xml配置的逻辑表,在具体的数据库里面是没有的 根据id的模确定数据存在哪个节点上!!

8.7 作业 c高级

1.写一个函数,获取用户的uid和gid并使用变量接收: #!/bin/bash function fun() {uidid -u ubuntugidid -g ubuntu }funecho "UID: $uid" echo "GID: $gid"思维导图:

(树) 剑指 Offer 54. 二叉搜索树的第k大节点 ——【Leetcode每日一题】

❓剑指 Offer 54. 二叉搜索树的第k大节点 难度:简单 给定一棵二叉搜索树,请找出其中第 k 大的节点的值。 示例 1: 输入: root [3,1,4,null,2], k 13/ \1 4\2 输出: 4示例 2: 输入: root [5,3,6,2,4,null,null,1], k 35/ \3 6/ \2 4/1 输出…

【多音音频测试信号】具有指定采样率和样本数的多音信号,生成多音信号的相位降低波峰因数研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…