【注意力机制】Self-attention注意力机制理论知识

news2024/9/22 13:41:02

注意力机制目录

输入输出类别(N指向量个数):

  • 第一种:输入 N N N,输出 N N N(例如:Sequence Labeling、POS tagging)
  • 第二种:输入 N N N,输出 1 1 1(例如:Sentiment analysis)
  • 第三种:输入 N N N,输出 N ′ N' N(seq2seq任务:由机器自己决定输出的个数)例如:翻译任务、语音辨识

第一种为例Sequence Labeling任务:

例子: I saw a saw

序列输入到FC层得到各个单词的词性不能解决saw是不同词性的问题,采用考虑上下文的context,将前后几个向量串起来输入到FC,考虑Window包括多个前后多个frame
在这里插入图片描述
考虑整个input的sequence资讯,可将Window变大甚至盖住整个sequence,但是可能过拟合,FC参数过多。

Self-attention引入

考虑整个input的sequence资讯信息更好的办法:
self-attention考虑一整个资讯信息并返回与输入相同数目的vetor输出,再输入FC决定应该是什么。
在这里插入图片描述
self-attention可以叠加:
输入+self-attention+FC+self-attention+FC(交替使用,FC专注某一位置的咨询,self-attention关注整个资讯)
在这里插入图片描述

:self-attention最相关文章:Attention is all you need.(提出了transformertransformer最重要的module就是self-attentionBert也有应用)

self-attention架构

self-attention输入是一串Vector(可能整个网络的input,也可能是隐层的output)

例:
输入 a 1 a 2 a 3 a 4 a^{1} \quad a^{2} \quad a^{3} \quad a^{4} a1a2a3a4
输出 b 1 b 2 b 3 b 4 b^{1} \quad b^{2} \quad b^{3} \quad b^{4} b1b2b3b4
在这里插入图片描述

self-attention怎么产生 b b b

例子:产生 b 1 b^{1} b1

找出与 a 1 a^{1} a1 相关的其他向量(哪些向量是重要的,哪些部分跟判断 a 1 a^{1} a1 是哪一个level有关系,哪些是决定 a 1 a^{1} a1 得class或regression数值所需用到的资讯)
其中每一个向量与 a 1 a^{1} a1 关联的程度,用数值 α 表示(计算 α 方法有:Dot-producttransformer中使用)、Additive
在这里插入图片描述
q 1 = W q a 1 q^{1}=W^qa^1 q1=Wqa1 q q q称为query)
k 2 = W k a 2 k^{2}=W^ka^2 k2=Wka2 k k k称为key), k 3 = W k a 3 k^{3}=W^ka^3 k3=Wka3 k 4 = W k a 4 k^{4}=W^ka^4 k4=Wka4 k 1 = W k a 1 k^{1}=W^ka^1 k1=Wka1

α ( 1 , 2 ) = q 1 ⋅ k 2 α(1,2)=q^1·k^2 α(1,2)=q1k2 α ( 1 , 2 ) α(1,2) α(1,2)代表query是1提供,key是2提供的,1与2的关联性,也称为attention score), α ( 1 , 3 ) = q 1 ⋅ k 3 α(1,3)=q^1·k^3 α(1,3)=q1k3 α ( 1 , 4 ) = q 1 ⋅ k 4 α(1,4)=q^1·k^4 α(1,4)=q1k4
在这里插入图片描述
本身也会计算:
α ( 1 , 1 ) = q 1 ⋅ k 1 α(1,1)=q^1·k^1 α(1,1)=q1k1
计算出 a 1 a^{1} a1与每一个向量关联性后,做一个softmax,输出一排 α ′ ( 1 , i ) α'(1,i) α(1,i)
在这里插入图片描述
根据 α ′ α' α 抽取这个sequence里重要的咨询:
v 1 = W v a 1 v^{1}=W^va^1 v1=Wva1 v 2 = W v a 2 v^{2}=W^va^2 v2=Wva2 v 3 = W v a 3 v^{3}=W^va^3 v3=Wva3 v 4 = W v a 4 v^{4}=W^va^4 v4=Wva4
再用 v i v^i vi 乘以 α ′ ( 1 , i ) α'(1,i) α(1,i) ,然后再累加得到 b 1 b^1 b1
α ′ ( 1 , 1 ) ⋅ v 1 + α ′ ( 1 , 2 ) ⋅ v 2 + α ′ ( 1 , 3 ) ⋅ v 3 + α ′ ( 1 , 4 ) ⋅ v 4 = b 1 α'(1,1)·v^1+α'(1,2)·v^2+α'(1,3)·v^3+α'(1,4)·v^4=b^1 α(1,1)v1+α(1,2)v2+α(1,3)v3+α(1,4)v4=b1

在这里插入图片描述

例子:产生 b 2 b^{2} b2

主角: a 2 a^{2} a2
每一个向量与 a 2 a^{2} a2关联的程度,用数值 α α α 表示(计算 α α α 方法:Dot-product
q 2 = W q a 2 q^{2}=W^qa^2 q2=Wqa2
k 1 = W k a 1 k^{1}=W^ka^1 k1=Wka1 k 2 = W k a 2 k^{2}=W^ka^2 k2=Wka2 k 3 = W k a 3 k^{3}=W^ka^3 k3=Wka3 k 4 = W k a 4 k^{4}=W^ka^4 k4=Wka4
根据 q 2 q^{2} q2 去对 a 1 a1 a1 a 4 a4 a4 attention score
α ( 2 , 1 ) = q 2 ⋅ k 1 α(2,1)=q^2·k^1 α(2,1)=q2k1 α ( 2 , 2 ) = q 2 ⋅ k 2 α(2,2)=q^2·k^2 α(2,2)=q2k2 α ( 2 , 3 ) = q 2 ⋅ k 3 α(2,3)=q^2·k^3 α(2,3)=q2k3 α ( 2 , 4 ) = q 2 ⋅ k 4 α(2,4)=q^2·k^4 α(2,4)=q2k4
计算出 a 2 a^{2} a2 与每一个向量关联性后,做一个softmax,输出一排 α ′ ( 2 , i ) α'(2,i) α(2,i)
根据 α ′ α' α 抽取这个sequence里重要的咨询
v 1 = W v a 1 v^{1}=W^va^1 v1=Wva1 v 2 = W v a 2 v^{2}=W^va^2 v2=Wva2 v 3 = W v a 3 v^{3}=W^va^3 v3=Wva3 v 4 = W v a 4 v^{4}=W^va^4 v4=Wva4
再用 v i v^i vi 乘以 α ′ ( 2 , i ) α'(2,i) α(2,i),然后再累加得到 b 2 b^2 b2
α ′ ( 2 , 1 ) ⋅ v 1 + α ′ ( 2 , 2 ) ⋅ v 2 + α ′ ( 2 , 3 ) ⋅ v 3 + α ′ ( 2 , 4 ) ⋅ v 4 = b 2 α'(2,1)·v^1+α'(2,2)·v^2+α'(2,3)·v^3+α'(2,4)·v^4=b^2 α(2,1)v1+α(2,2)v2+α(2,3)v3+α(2,4)v4=b2

在这里插入图片描述

self-attention 总结:

第一步:每一个a都要分别产生q k vIInput

q i = W q a i q^{i}=W^qa^i qi=Wqai ——> ( q 1 q 2 q 3 q 4 ) = W q ( a 1 a 2 a 3 a 4 ) \begin{pmatrix}q^1&q^2&q^3&q^4\end{pmatrix}=W^q\begin{pmatrix}a^1&a^2&a^3&a^4\end{pmatrix} (q1q2q3q4)=Wq(a1a2a3a4)——> Q = W q ⋅ I Q=W^q·I Q=WqI

k i = W k a i k^{i}=W^ka^i ki=Wkai——> ( k 1 k 2 k 3 k 4 ) = W k ( a 1 a 2 a 3 a 4 ) \begin{pmatrix}k^1&k^2&k^3&k^4\end{pmatrix}=W^k\begin{pmatrix}a^1&a^2&a^3&a^4\end{pmatrix} (k1k2k3k4)=Wk(a1a2a3a4)——> K = W k ⋅ I K=W^k·I K=WkI

v i = W v a i v^{i}=W^va^i vi=Wvai——> ( v 1 v 2 v 3 v 4 ) = W v ( a 1 a 2 a 3 a 4 ) \begin{pmatrix}v^1&v^2&v^3&v^4\end{pmatrix}=W^v\begin{pmatrix}a^1&a^2&a^3&a^4\end{pmatrix} (v1v2v3v4)=Wv(a1a2a3a4)——> V = W v ⋅ I V=W^v·I V=WvI

第二步:每一个 q i q^{i} qi 都和每一个 k k k 计算 Dot-product 得到 attention score

α ( 1 , 1 ) = k 1 ⋅ q 1 α(1,1) = k^1·q^1 α(1,1)=k1q1 α ( 1 , 2 ) = k 2 ⋅ q 1 α(1,2) = k^2·q^1 α(1,2)=k2q1 α ( 1 , 3 ) = k 3 ⋅ q 1 α(1,3) = k^3·q^1 α(1,3)=k3q1 α ( 1 , 4 ) = k 4 ⋅ q 1 α(1,4) = k^4·q^1 α(1,4)=k4q1

α ( 1 , i ) = k i ⋅ q 1 α(1,i) = k^i·q^1 α(1,i)=kiq1 ——> ( k 1 k 2 k 3 k 4 ) ⋅ q 1 = ( α ( 1 , 1 ) α ( 1 , 2 ) α ( 1 , 3 ) α ( 1 , 4 ) ) \begin{pmatrix}k^1\\k^2\\k^3\\k^4\end{pmatrix}·q^1=\begin{pmatrix}α(1,1)\\α(1,2)\\α(1,3)\\α(1,4)\end{pmatrix} k1k2k3k4q1=α(1,1)α(1,2)α(1,3)α(1,4)

( k 1 k 2 k 3 k 4 ) ⋅ ( q 1 q 2 q 3 q 4 ) = ( α ( 1 , 1 ) α ( 2 , 1 ) α ( 3 , 1 ) α ( 4 , 1 ) α ( 1 , 2 ) α ( 2 , 2 ) α ( 3 , 2 ) α ( 4 , 2 ) α ( 1 , 3 ) α ( 2 , 3 ) α ( 3 , 3 ) α ( 4 , 3 ) α ( 1 , 4 ) α ( 2 , 4 ) α ( 3 , 4 ) α ( 4 , 4 ) ) \begin{pmatrix}k^1\\k^2\\k^3\\k^4\end{pmatrix}·\begin{pmatrix}q^1q^2q^3 q^4\end{pmatrix}=\begin{pmatrix}α(1,1)α(2,1)α(3,1)α(4,1)\\α(1,2)α(2,2)α(3,2)α(4,2)\\α(1,3)α(2,3)α(3,3)α(4,3)\\α(1,4)α(2,4)α(3,4)α(4,4)\end{pmatrix} k1k2k3k4(q1q2q3q4)=α(1,1)α(2,1)α(3,1)α(4,1)α(1,2)α(2,2)α(3,2)α(4,2)α(1,3)α(2,3)α(3,3)α(4,3)α(1,4)α(2,4)α(3,4)α(4,4) ——> K T ⋅ Q = A K^T ·Q=A KTQ=A ——> A ′ = s o f t m a x ( A ) 或 R e l u ( A ) A'=softmax(A)或Relu(A) A=softmax(A)Relu(A)

第三步:输出 b 1 = α ′ ( 1 , i ) ⋅ v i b^{1}=α'(1,i)·v^i b1=α(1,i)vi

( v 1 v 2 v 3 v 4 ) ⋅ ( α ( 1 , 1 ) α ( 2 , 1 ) α ( 3 , 1 ) α ( 4 , 1 ) α ( 1 , 2 ) α ( 2 , 2 ) α ( 3 , 2 ) α ( 4 , 2 ) α ( 1 , 3 ) α ( 2 , 3 ) α ( 3 , 3 ) α ( 4 , 3 ) α ( 1 , 4 ) α ( 2 , 4 ) α ( 3 , 4 ) α ( 4 , 4 ) ) = ( b 1 b 2 b 3 b 4 ) \begin{pmatrix}v^1v^2v^3 v^4\end{pmatrix}·\begin{pmatrix}α(1,1)α(2,1)α(3,1)α(4,1)\\α(1,2)α(2,2)α(3,2)α(4,2)\\α(1,3)α(2,3)α(3,3)α(4,3)\\α(1,4)α(2,4)α(3,4)α(4,4)\end{pmatrix}=\begin{pmatrix}b^1b^2b^3 b^4\end{pmatrix} (v1v2v3v4)α(1,1)α(2,1)α(3,1)α(4,1)α(1,2)α(2,2)α(3,2)α(4,2)α(1,3)α(2,3)α(3,3)α(4,3)α(1,4)α(2,4)α(3,4)α(4,4)=(b1b2b3b4)——> V ⋅ A ′ = O V·A'=O VA=O

O O O 其中每一个column就是self-attention的输出。

self-attention中唯一需要学的参数: W q W^q Wq W k W^k Wk W v W^v Wv

Multi-head Self-attention

self-attention是用 q q q 去找相关的 k k k ,相关有很多种不同的形式,也许不能只有一个 q q q,要多个 q q q负责不同种类的相关性。
q i = W q a i q^i=W^qa^i qi=Wqai q q q称为query)然后 q i q^i qi 再乘以另外2个矩阵得到 q i , 1 q^{i,1} qi,1 q i , 2 q^{i,2} qi,2
解释:2个head,里面有2种不同相关性, i i i代表位置,1和2代表这个位置的第几个 q q q q q q有2个,对应 k k k v v v 也有2个。
在这里插入图片描述
在这里插入图片描述
得到的 b b b可以都接起来,再乘以一个矩阵得到 b i b^i bi,再送到下一层。
在这里插入图片描述

Positional encoding

以上Self-attention的方法没有对位置信息考虑,需要考虑上位置的咨询。
Positional encoding:为每一个位置设定一个vetor(称为positional vetor e i e^i ei i i i代表位置)
e i + a i e^i + a^i ei+ai 再计算 q i q^i qi k i k^i ki v i v^i vi
在这里插入图片描述
Positional encoding有不同的方法产生:例如sinusiodal/cosRNNFloater network、或者通过学习得到。

其他Self-attention应用

:做语音识别、语音辨识整个sequence可能太长,使用Truncated Self-attention人为的设定一小个范围。
在这里插入图片描述
self-attention用于Graph上,结点和边对应到矩阵上,没有边对应的位置可以不计算attention score 直接设为0,这就是一种GNN
在这里插入图片描述

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

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

相关文章

使用 Learner Lab - 使用 API Gateway 与 Lambda 上传图片到 S3

使用 Learner Lab - 使用 API Gateway 与 Lambda 上传图片到 S3 AWS Academy Learner Lab 是提供一个帐号让学生可以自行使用 AWS 的服务,让学生可以在 100 USD的金额下,自行练习所要使用的 AWS 服务,如何进入 Learner Lab 请参考 使用 Lear…

【车载开发系列】UDS诊断---读取数据($0x22)

【车载开发系列】UDS诊断—读取数据($0x22) UDS诊断---读取数据($0x22)【车载开发系列】UDS诊断---读取数据($0x22)一.概念定义二.报文格式1)请求2)肯定响应3)否定响应三…

Vue中$nextTick实现源码解析

这篇文章主要为大家介绍了Vue中$nextTick实现源码解析,有需要的朋友可以借鉴参考下! 先看一个简单的问题 {{ text }} 此时打印的结果是什么呢?是 old。如果想让它打印 new,使用 nextTick 稍加改造就可以 this.$nextTick(() >…

【计组笔记】06_指令系统

5.1 指令系统概述及指令格式 1. 指令的基本概念 2. 指令的分类 根据计算机层次结构分类 根据指令中地址码字段的个数分类 根据指令中操作数的物理位置分类 根据指令的功能分类 3. 指令格式 4. 指令的再认识 5. 指令格式举例 5.2 寻址方式及指令寻址 1. 寻址方式的概念 2.…

[论文阅读] 颜色迁移-Correlated Color Space

[论文阅读] 颜色迁移-Correlated Color Space 文章: Color transfer in correlated color space, [paper], [matlab code], [opencv code] 1-算法原理 本文算法比较简单, 其原理是把原始图像本身的空间分布进行归一化, 然后通过旋转平移缩放等变换, 变换到目标图像的空间分布…

WMS手动配货和自动配货的区别

手动配货 不知道配货流程的朋友可以看一下前面的文章链接: 深入浅出WMS之出库流程里面有对出库的解释说明,其中也有对配货的解释。前端页面也可以在前面的那篇文章中看到,这里我们来说一下后端部分。 查 手动配货是选中出库单的某条数据,然…

一文教你从Linux内核角度探秘JDK NIO文件读写本质(上)

1. 前言 在深入讲解Netty那些事儿之从内核角度看IO模型一文中曾对 Socket 文件在内核中的相关数据结构为大家做了详尽的阐述。 Socket内核结构.png 又在此基础之上介绍了针对 socket 文件的相关操作及其对应在内核中的处理流程: 系统IO调用结构.png 并与 epoll 的…

由阿里三位专家撰写:数据库高效优化:架构、规范SQL技巧文档

引言 学习是一种基础性的能力。然而,“吾生也有涯,而知也无涯。”,如果学习不注意方法,则会“以有涯随无涯,殆矣”。 学习就像吃饭睡觉一样,是人的一种本能,人人都有学习的能力。我们在刚出生…

[附源码]计算机毕业设计springboot作业管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

词袋模型(Bag-of-words model)

词袋模型词袋模型简介示例计算机视觉中的词袋模型词袋模型 简介 词袋模型(Bag-of-words model)是用于自然语言处理和信息检索中的一种简单的文档表示方法。通过这一模型,一篇文档可以通过统计所有单词的数目来表示,这种方法不考…

redis安装

版本号:redis-6.2.1 下载redis-6.2.1.tar.gz放/opt目录 解压命令:tar -zxvf redis-6.2.1.tar.gz 解压完成后进入目录:cd redis-6.2.1 在redis-6.2.1目录下执行make命令 出现make test 执行make install 查看redis默认安装路径:/u…

二、CANdelaStudio入门-版本介绍

本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的各个版本,欢迎各位朋友订阅、评论,可以…

PbootCMS简单两步增加自动清理日志功能

问:网站没人访问触发不了清理怎么办? 答:我建议你不要关心这个,都没人访问你的网站,你还有个锤子东西需要清理? 问:听人说前台插入script触发会不安全? 答:都是成年人…

Web应用程序,简单的日志系统解决方案

一、简介 今天介绍一下,当你的程序没有日志系统时,如何快速方便查看当前程序日志的解决方案。如果你的程序有日志系统,可以不看本篇博客哈。本文实例是使用 C# 讲解,当然实现的核心思想适用于其他语言开发的系统。 二、解决方案…

nexus搭建测试dockermavennpm仓库

JAVA下载 https://www.oracle.com/java/technologies/downloads/archive/ https://login.oracle.com/mysso/signon.jsp QQq951699. [rootvm1 ~]# mkdir -p /data [rootvm1 ~]# mv jdk-8u221-linux-i586.tar.gz /data [rootvm1 ~]# cd /data;tar xf jdk-8u221-linux-i586.tar.g…

222页8万字智慧园区IOC平台运维管理平台解决方案

目 录 第一章 项目概述 7 1.1 园区格局的变化 7 1.1.1 传统安防面临的不足与挑战 7 1.1.2 园区安防未来的发展趋势 7 1.2 需求分析 8 1.2.1 平台集成化 8 1.2.2 数据可视化 8 1.2.3 管控全面化 8 1.2.4 覆盖高清化 9 1.2.5 指挥简易化 9 1.2.6 建设智能化 9 1.3 建设思路 9 1.3…

基于物联网设计的自反馈深紫外杀菌消毒系统(STM32F407)

一、前言 目前常态化防控病毒有很多种,其中主要是人工喷洒消毒液这种消毒方式,这种消毒效果无法得到量化,同时还可能存在喷洒盲区,也会对公民的呼吸道产生刺激,腐蚀损坏公共设施,而对于室内公共空间的消毒的要求会更高,基于这样的状况,人工喷洒消毒液这种方式肯定不太…

[附源码]JAVA毕业设计教学成果管理平台(系统+LW)

[附源码]JAVA毕业设计教学成果管理平台(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术…

C语言——利用矩阵LU分解法求逆、行列式

本章介绍了LU分解法,以及如何利用LU分解法求逆、行列式,针对每个公式、原理、代码进行了详细介绍,希望可以给大家带来帮助。 目录 LU分解法 概念 确定L、U矩阵 LU分解法的意义 程序设计 LUP求逆 1)代码 2)代…

uniapp 监听通知栏消息插件(支持白名单、黑名单、过滤) Ba-NotifyListener

简介(下载地址) Ba-NotifyListener 是一款实时监听通知栏消息的uniapp插件。支持白名单、黑名单;支持监听消息移除;支持自定义过滤条件(如短信验证码)等。 支持监听所有通知栏消息(包含id、ti…