快速理清 Attention 注意力和 Encoder, Decoder 概念

news2025/3/9 17:36:15

之前一直以为 Attention 和 RNN 没关系是凭空蹦出来的新概念;以为 Transformer, Encoder, Decoder 这几个概念是绑在一起的。并不尽然。

Encoder 和 Decoder

在这里插入图片描述
RNN 里就有 Encoder Decoder 的概念。其中,encoder 接受用户输入,写入 hidden state。Decoder 接受之前时刻的隐状态,并生成 logits。类似的架构也出现在 CNN 图像模型中。

所以,不论如何,只要是数据流长得像 encode, decode 的,都是 Encoder, Decoder

Attention 普遍意义上的注意力机制

请添加图片描述
上面 RNN 的问题是,decoder 只能拿到 encoder 最后的这个 <end> 位置的 feature,相当于必须串行接收整个输入,不能有注意力地选择输入序列的重点(不能加权)。

所以,我们想实现一个类似全连接的功能,在每个 decode 的位置,给输入序列的隐状态加个系数,共同喂给 decoder。所以,注意力其实就是把上面的这个序列算个系数。

但是怎么能让这个全连接矩阵可训练,可泛化是个问题。注意力机制引入了 Q, K, V 三个概念,其中 K, V 是 n 个 kv pair,Query 表示上图上面的部分,最后,Q 和 K 会两两一组算一个相关系数,然后用相关系数乘上 v,作为注意力输出。

其中,Q, K 表示。一个例子是我看涩图的注意力集中在人脸上,Q = 我; K = 涩图(V 和 K 严格绑定,是另一个空间对 K 的表示)Q,K 算一个相似度赋给 V.

一般 K = V。
请添加图片描述

请添加图片描述

自注意力机制

注意力是一个很宽泛的概念,不知道 QKV 是什么,自注意力机制则是规定了 QKV 同源,都是通过原始输入 X X X 乘上线性矩阵 W q , W k , W v W^q, W^k, W^v Wq,Wk,Wv 产生的。

请添加图片描述

给定输入矩阵 X X X(形状为 ( n , d ) (n, d) (n,d),其中 n n n 是序列长度, d d d 是嵌入维度),计算 Query(查询)、Key(键)、Value(值):
Q = X W Q , K = X W K , V = X W V Q = X W_Q, \quad K = X W_K, \quad V = X W_V Q=XWQ,K=XWK,V=XWV
其中:

  • W Q , W K , W V W_Q, W_K, W_V WQ,WK,WV 是可训练的权重矩阵(形状均为 ( d , d k ) (d, d_k) (d,dk))。
  • Q , K , V Q, K, V Q,K,V 的形状均为 ( n , d k ) (n, d_k) (n,dk)

2. 计算注意力分数(Scaled Dot-Product Attention)

A = Q K T d k A = \frac{Q K^T}{\sqrt{d_k}} A=dk QKT
其中:

  • K T K^T KT 是 Key 矩阵的转置(形状为 ( d k , n ) (d_k, n) (dk,n)),使得 Q K T QK^T QKT 形状为 ( n , n ) (n, n) (n,n)
  • 1 d k \frac{1}{\sqrt{d_k}} dk 1 是缩放因子,防止大数值影响梯度。

3. 计算注意力权重(Softmax 归一化)

α = softmax ( A ) \alpha = \text{softmax}(A) α=softmax(A)
其中, α \alpha α 形状为 ( n , n ) (n, n) (n,n),表示序列中每个位置对其他位置的注意力权重。

4. 计算加权 Value

Z = α V Z = \alpha V Z=αV
其中:

  • Z Z Z 形状为 ( n , d k ) (n, d_k) (n,dk),即每个输入位置的加权输出。

5. 多头注意力(Multi-Head Attention)

如果使用 h h h 个头,每个头分别计算:
Z i = Attention ( X W Q i , X W K i , X W V i ) Z_i = \text{Attention}(X W_{Q_i}, X W_{K_i}, X W_{V_i}) Zi=Attention(XWQi,XWKi,XWVi)
然后将多个头的结果拼接并映射回原始维度:
Z = [ Z 1 , Z 2 , … , Z h ] W O Z = [Z_1, Z_2, \dots, Z_h] W_O Z=[Z1,Z2,,Zh]WO
其中:

  • W O W_O WO 是输出投影矩阵(形状为 ( h ⋅ d k , d ) (h \cdot d_k, d) (hdk,d))。
  • Z Z Z 形状回到 ( n , d ) (n, d) (n,d)

Ref

https://zhuanlan.zhihu.com/p/109585084
https://www.cnblogs.com/nickchen121/p/16470710.html

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

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

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

相关文章

爬虫案例八js逆向爬取网易音乐

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、js逆向的前期准备二、网站分析三、代码 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 爬取网易音乐 提示&#xff1a;以下是本篇…

Sentinel 笔记

Sentinel 笔记 1 介绍 Sentinel 是阿里开源的分布式系统流量防卫组件&#xff0c;专注于 流量控制、熔断降级、系统保护。 官网&#xff1a;https://sentinelguard.io/zh-cn/index.html wiki&#xff1a;https://github.com/alibaba/Sentinel/wiki 对比同类产品&#xff1…

使用 vxe-table 导出 excel,支持带数值、货币、图片等带格式导出

使用 vxe-table 导出 excel&#xff0c;支持带数值、货币、图片等带格式导出&#xff0c;通过官方自动的导出插件 plugin-export-xlsx 实现导出功能 查看官网&#xff1a;https://vxetable.cn gitbub&#xff1a;https://github.com/x-extends/vxe-table gitee&#xff1a;htt…

powershell@宝塔面板批量建站脚本@批量设置@批量部署伪静态设置

文章目录 abstract批量设置 abstract 对于需要大量建站,并且站点类型都很接近的宝塔用户,可以考虑使用如下powershell脚本进行批量建站语句生成 请根据宝塔的要求的批量建站语句格式创建脚本 例如 function Get-BatchSiteBuilderLines {<# .SYNOPSIS获取批量站点生成器的…

基于multisim的自动干手器设计与仿真

1 设计的任务与要求 设计一个输出 5V 的直流稳压电源。用开关的闭合模拟手挡住光线的功能。用灯的亮灭模拟烘干吹风功能。 2 方案论证与选择 2.1 自动干手器的系统方案 本设计由5V直流电源、红外发射电路、红外接收电路、灯模拟电路构成。 1. 5V直流电源系统 这一部分是整…

webflux响应式编程

webflux&webclient 尚硅谷SpringBoot响应式编程教程&#xff0c;最新springboot3入门到实战 响应式编程设计实战及SpringWebFlux源码剖析 - 拉勾 文章目录 前置知识1、Lambda2、Function3、StreamAPI中间操作&#xff1a;Intermediate Operations终止操作&#xff1a;Ter…

关于tresos Studio(EB)的MCAL配置之GPT

概念 GPT&#xff0c;全称General Purpose Timer&#xff0c;就是个通用定时器&#xff0c;取的名字奇怪了点。定时器是一定要的&#xff0c;要么提供给BSW去使用&#xff0c;要么提供给OS去使用。 配置 General GptDeinitApi控制接口Gpt_DeInit是否启用 GptEnableDisable…

Uniapp项目运行到微信小程序、H5、APP等多个平台教程

摘要&#xff1a;Uniapp作为一款基于Vue.js的跨平台开发框架&#xff0c;支持“一次开发&#xff0c;多端部署”。本文将手把手教你如何将Uniapp项目运行到微信小程序、H5、APP等多个平台&#xff0c;并解析常见问题。 一、环境准备 在开始前&#xff0c;请确保已安装以下工具…

C/C++蓝桥杯算法真题打卡(Day4)

一、P11041 [蓝桥杯 2024 省 Java B] 报数游戏 - 洛谷 算法代码&#xff1a; #include<bits/stdc.h> using namespace std;// 计算第 n 个满足条件的数 long long findNthNumber(long long n) {long long low 1, high 1e18; // 二分查找范围while (low < high) {lo…

C++编写Redis客户端

目录 安装redis-plus-plus库 ​编辑 编译Credis客户端 redis的通用命令使用 get/set exists del keys expire /ttl type string类型核心操作 set和get set带有超时时间 set带有NX string带有XX mset mget getrange和setrange incr和decr list类型核心操作…

记录一下Django的密码重置(忘记密码)

一. Django默认的密码重置 1.路由 # url.pyfrom django.contrib.auth import views as auth_viewsurlpatterns [# 密码重置path(password_reset/, auth_views.PasswordResetView.as_view(), namepassword_reset),# 用户输入邮箱后&#xff0c;跳转到此页面path(password_res…

【运维篇】KubeSphere-02(经验汇总)

一、使用建议 1.对于数据库、对像存储比较重的要不能丢失&#xff0c;有异地存储备份需求的有状态服务&#xff0c;不建议采用k8s进行部署&#xff0c;会导致运维难度更大。 2.对于中间件如redis、MQ、harbor、seata、nacos、zookeeper可采用k8s部署。 3.对于无状态服务tomc…

Qt:多线程

目录 初识Qt多线程 QThread常用API QThread的使用 Qt中的锁 条件变量和信号量 初识Qt多线程 Qt 多线程 和 Linux 中的线程本质是一个东西 Linux 中学过的 多线程 APl&#xff0c;Linux 系统提供的 pthread 库 Qt 中针对系统提供的线程 API 重新封装了 C11 中&#xff0c;…

算法系列之广度优先搜索解决妖怪和尚过河问题

在算法学习中&#xff0c;广度优先搜索&#xff08;BFS&#xff09;是一种常用的图搜索算法&#xff0c;适用于解决最短路径问题、状态转换问题等。本文将介绍如何利用广度优先搜索解决经典的“妖怪和尚过河问题”。 问题描述 有三个妖怪和三个和尚需要过河。他们只有一条小船…

详解常用集合和映射中的线程安全问题

1. 前言 在 Java 中&#xff0c;集合和映射是常用的数据结构&#xff0c;它们分为线程安全和线程不安全两类。我们常用的集合包括&#xff1a;ArrayList、HashSet、CopyOnWriteArrayList、CopyOnWriteArraySet。常用的映射包括&#xff1a;HashMap、ConcurrentHashMap、Hashta…

计算机毕业设计SpringBoot+Vue.js车辆管理系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

【js逆向】iwencai国内某金融网站实战

地址&#xff1a;aHR0cHM6Ly93d3cuaXdlbmNhaS5jb20vdW5pZmllZHdhcC9ob21lL2luZGV4 在搜索框中随便输入关键词 查看请求标头&#xff0c;请求头中有一个特殊的 Hexin-V,它是加密过的&#xff1b;响应数据包中全是明文。搞清楚Hexin-V的值是怎么生成的&#xff0c;这个值和cooki…

【音视频 | AAC】AAC编码库faac介绍、使用步骤、例子代码

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

Unity摄像机跟随物体

功能描述 实现摄像机跟随物体&#xff0c;并使物体始终保持在画面中心位置。 实现步骤 创建脚本&#xff1a;在Unity中创建一个新的C#脚本&#xff0c;命名为CameraFollow。 代码如下&#xff1a; using UnityEngine;public class CameraFollow : MonoBehaviour {public Tran…

dp_走方格(包含dfs分析,记忆化搜索)

类似题目解析&#xff1a;dp_最长上升子序列&#xff08;包含dfs分析&#xff0c;记忆化搜索&#xff09;-CSDN博客 题目链接&#xff1a;2067. 走方格 - AcWing题库 题目图片&#xff1a; 分析题目&#xff08;dfs&#xff09; 这个题目说有一个行为n行&#xff0c;列为m列…