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

之前一直以为 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

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

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

相关文章

达梦数据库系列之Mysql项目迁移为达梦项目

达梦数据库系列之Mysql项目迁移为达梦项目 1 达梦数据库安装及MySql数据迁移2 SpringBoot项目迁移2.1 驱动包引入2.2 驱动类配置2.3 数据源配置2.4 flowable迁移2.4.1 异常问题2.4.2 解决 3 迁移常见问题3.1 不是 GROUP BY 表达式3.1.1 dm.ini 开启Mysql兼容模式3.1.2 修改动态…

第5章 使用OSSEC进行监控(网络安全防御实战--蓝军武器库)

网络安全防御实战--蓝军武器库是2020年出版的&#xff0c;已经过去3年时间了&#xff0c;最近利用闲暇时间&#xff0c;抓紧吸收&#xff0c;总的来说&#xff0c;第5章开始进入主机安全&#xff08;HIDS&#xff09;领域了&#xff0c;2022年的时候有幸做过终端安全一段时间&a…

【文献阅读】The Efficiency Spectrum of Large Language Models: An Algorithmic Survey

这篇文章发表于2024年4月 摘要 大语言模型&#xff08;LLMs&#xff09;的快速发展推动了多个领域的变革&#xff0c;重塑了通用人工智能的格局。然而&#xff0c;这些模型不断增长的计算和内存需求带来了巨大挑战&#xff0c;阻碍了学术研究和实际应用。为解决这些问题&…

毕业项目推荐:基于yolov8/yolov5/yolo11的暴力行为检测识别系统(python+卷积神经网络)

文章目录 概要一、整体资源介绍技术要点功能展示&#xff1a;功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出&#xff08;xls格式&#xff09;功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…

MySQL面试01

MySQL 索引的最左原则 &#x1f370; 最左原则本质 ͟͟͞͞( •̀д•́) 想象复合索引是电话号码簿&#xff01; 索引 (a,b,c) 的排列顺序&#xff1a; 先按a排序 → a相同按b排序 → 最后按c排序 生效场景三连&#xff1a; 1️⃣ WHERE a1 ✅ 2️⃣ WHERE a1 AND b2 ✅ 3️…

【Linux】【网络】UDP打洞-->不同子网下的客户端和服务器通信(未成功版)

【Linux】【网络】UDP打洞–>不同子网下的客户端和服务器通信&#xff08;未成功版&#xff09; 上次说基于UDP的打洞程序改了五版一直没有成功&#xff0c;要写一下问题所在&#xff0c;但是我后续又查询了一些资料&#xff0c;成功实现了&#xff0c;这次先写一下未成功的…

unity学习63,第2个小游戏:用fungus做一个简单对话游戏

目录 1 目标用fungus做一个简单的剧情对话游戏 1.1 先创建一个新的3D项目 1.2 fungus是什么 1.2.1 怎么获得 1.2 在AssetStore里搜索fungus (插件类)--千万别买收费的错的&#xff01; 1.3 fungus的官网 1.3.1 官网给的3个下载链接&#xff0c;unity的果然已经失效了 …

前后分离文件上传案例,前端HTML,后端Net6开发的webapi(完整源代码)下载

文件上传功能在项目开发中非常实用&#xff0c;本案例前端用HTML页面的form表单实现&#xff0c;后端用Net6实现。 前后分离文件上传案例&#xff0c;前端HTML&#xff0c;后端Net6&#xff08;完整源代码&#xff09; 下载链接https://download.csdn.net/download/luckyext/9…

利用Adobe Acrobat 实现PPT中图片分辨率的提升

1. 下载适用于 Windows 的 64 位 Acrobat 注册方式参考&#xff1a;https://ca.whu.edu.cn/knowledge.html?type1 2. 将ppt中需要提高分辨率的图片复制粘贴到新建的pptx问价中&#xff0c;然后执行“文件—>导出---->创建PDF、XPS文档” 3. 我们会发现保存下来的distrib…

自学微信小程序的第十二天

DAY12 1、腾讯地图SDK是一套为开发者提供多种地理位置服务的工具,可以使开发者在自己的应用中加入地图相关功能,轻松访问腾讯地图服务和数据,更好地实现微信小程序的地图功能。 表49:search()方法的常用选项 选项 类型 说明 keyword string POI搜索关键词,默认周边搜索 l…

海南自贸港的数字先锋:树莓集团的战略布局解析

海南自贸港凭借其独特的政策优势和地理条件&#xff0c;成为了数字产业发展的热土。树莓集团敏锐地捕捉到这一机遇&#xff0c;在此展开了全面而深远的战略布局。 在基础设施建设方面&#xff0c;树莓集团投入大量资金&#xff0c;建设了先进的数据中心。这些数据中心配备了顶…

MySQL -操作

博客主页&#xff1a;【夜泉_ly】 本文专栏&#xff1a;【暂无】 欢迎点赞&#x1f44d;收藏⭐关注❤️ 文章目录 创建数据库格式编码集 操控数据库查看数据库修改数据库删除数据库备份与还原 部分表操作创建表查看表修改表 我的版本号&#xff1a;8.0.41-0ubuntu0.22.04.1 创…

ubuntu20系统下conda虚拟环境下安装文件存储位置

在 Conda 虚拟环境中执行 pip install 安装软件后&#xff0c;安装的文件会存储在该虚拟环境专属的 site-packages 目录中。具体路径取决于你激活的 Conda 环境路径。以下是定位步骤&#xff1a; 1. 确认 Conda 虚拟环境的安装路径 查看所有环境&#xff1a; conda info --env…

Blazor-路由模板(上)

Blazor 的路由模板是定义应用中不同页面或组件访问路径的一种方式。通过路由模板&#xff0c;你可以管理应用程序的导航结构&#xff0c;支持基本路由、参数路由、子路由和区域路由等功能。 我们为访问组件使用page 指令指定路由 URL page "/demoPage" <h3>&l…

OpenObserve开源高性能云原生平台本地部署与远程监控数据攻略

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff1a;人工智能教程 文章目录 前言1. 安装Docker2. 创建并启动OpenObserve容器3. 本地访问测试4. 公网访问本地部署的OpenObserve4.1 内网穿透工具安装…

鸿蒙HarmonyOS-Navagation基本用法

Navagation基本用法 Navigation组件是路由导航的根视图容器&#xff0c;一般作为Page页面的根容器使用&#xff0c;其内部默认包含了标题栏&#xff0c;内容栏和公工具栏&#xff0c;其中内容区默认首页显示导航内容&#xff08;Navigation的子组件&#xff09;或非首页显示&am…

相控阵扫盲

下图展示天线增益 在仰角为0度的情况下随着方位角的变化而变化。需要注意到的是在天线视轴方向上的高增益主瓣上还有几个低增益旁瓣 阵列因子乘以新的阵元方向图会形成指向性更强的波速

CDefView::_OnFSNotify函数分析

进入CDefView::_OnFSNotify函数时状态栏 _UpdateStatusBar函数之后增加一个对象&#xff0c;变成7个对象。 LRESULT CDefView::_OnFSNotify(LONG lNotification, LPCITEMIDLIST* ppidl) { LPITEMIDLIST pidl; LPCITEMIDLIST pidlItem; // we may be registered for no…

人工智能之数学基础:矩阵的秩

本文重点 矩阵的秩,作为矩阵理论中的一个核心概念,是连接矩阵性质与应用的重要桥梁。本文我们将学习矩阵秩的概念,通过矩阵的秩可以判断矩阵是否可逆等等,所以矩阵的秩是非常重要的一个概念。 矩阵秩的概念 秩定义为矩阵A的线性独立的行(或列)的最大数目。也就是说,如…

告别GitHub连不上!一分钟快速访问方案

一、当GitHub抽风时&#xff0c;你是否也这样崩溃过&#xff1f; &#x1f621; npm install卡在node-sass半小时不动&#x1f62d; git clone到90%突然fatal: early EOF&#x1f92c; 改了半天hosts文件&#xff0c;第二天又失效了... 根本原因&#xff1a;传统代理需要复杂…