当前位置: 首页 > news >正文

4. 注意力机制介绍_2

1. 注意力机制规则

它需要三个指定的输入Q(query), K(key), V(value),然后通过计算公式得到注意力的结果,这个结果代表 query在 key和 value作用下的注意力表示;当输入的 Q=K=V时,称作自注意力计算规则;当 Q、K、V不相等时称为一般注意力计算规则


1.1 常见的注意力计算规则

(常见的注意力计算规则(计算公式):有三种,最常用的第三种,第一种用得少,第二种基本不用;)
1️⃣ 将Q,K进行纵轴拼接,做一次线性变化,再使用 softmax处理获得结果最后与 V做张量乘法;(即假设Q、k的纵轴都是4维则拼接后的纵轴是8维;然后经过Linear目的是进行形状变换;再经过Softmax得到一个注意力权重在乘以V得到注意力;)

2️⃣ 将Q,K进行纵轴拼接,做一次线性变化后再使用tanh函数激活,然后再进行内部求和,最后使用softmax处理获得结果再与V做张量乘法;(现将QK拼接,在经过linear线性变化,然后使用tanh激活函数,在进行sum内部求和,然后进行softmax,最后乘以V。此种方式基本不用

3️⃣ 将Q与K的转置做点积运算,然后除以一个缩放系数,再使用softmax处理获得结果最后与V做张量乘法;(Q与K的转置即K相乘,除以缩放系数(根号dk),dk即为词嵌入维度(词嵌入几维则dk几维),(括号内)原因是:① 使其结果符合标准正太分布,均值为0方差为1;② 除以根号dk目的是防止梯度消失;在经过softmax得到注意力权重,最后乘以V得到Attention;最常用)

1.2 Seq2Seq架构加入Attention

在上述机器翻译架构中加入Attention的方式有两种:

1.2.1 第一种tensorflow版本(传统方式):


上图翻译应用中的Q、K、V解释:
查询张量Q:解码器上一时间步的隐藏层输出结果
键张量K:编码部分每个时间步的结果组合而成;
值张量V:编码部分每个时间步的结果组合而成。
(有三部分:Query、Key、Value,若想在Seq2Seq架构(或者说Encoder-Decoder架构)中加入Attention,要分别找到QKV,图中由下往上:最下部分是编码器、中间叫注意力也叫中间语义张量C(每一个时间步的C都不一样)、最上面是解码器。
详细步骤:“欢迎”“来”“北京”三个单词都要送入GRU模型,然后得到三个隐藏层张量(假设都为图中的1行3列 3黑点),此时编码器任务结束;假如目的是拿三个中文单词预测 ‘to’这个单词, Q是Decoder部分的红线箭头指向部分,预测”to”时拿到上一时间步的隐藏层张量‘welcome’(右向箭头),中间绿色部分表示将红色部分的Q复制3次,当第一个时间步“欢迎”的词向量(黑色三点)过来后,认为是Key;复制的Q和Key作用得到3个分数,再分别进行Softmax归一化,得到对应的权重,权重分别再和对应的 V相乘,再求和得到一个中间语义张量C(中间上面的三黑点);
Q是来自解码器的上一层的隐藏层输出结果,拿到Q‘welcome’的词向量 与 中间语义张量C进行拼接,经过linear层,再和上一时间步隐藏层的输出结果融合,共同预测“to”;在预测“北京”时要拿着前一个Q“to”和K运算得到中间语义张量C;预测“welcome”拿的Q是“GO”(一个初始化的张量h0);每次预测时,中间语义张量C都改变了。只要是做文本生成式任务,分别给他一个开始、结束的说明;)


1.2.2 第二种Pytorch版本(改进版):


上图翻译应用中的Q、K、V解释
查询张量Q:解码器每一步的输出(预测结果)或者是当前输入的x;
键张量K:解码器上一步的隐藏层输出;
值张量V:编码部分每个时间步输出结果组合而成;
(由下往上,“欢迎”“来”“北京”3个词经过编码器得到3个隐藏层张量输出结果(下部分三黑点);但是一开始送到解码器中的GRU翻译’welcome‘时会有一个上一时间步隐藏层输出结果:对于第一种传统方式在预测第一个值“welcome”时传入的是一个初始化的值GO(h0),但这里第二种方式把编码器最后一个单词“北京”这个词的隐藏层张量的输出结果(它包含了整个编码器的语义)直接送给解码器中的第一个时间步翻译出第一个单词“welcome”,同时有一个当前时间步的隐藏层输出结果就是 k-Key(图中红点)、q-Query即为翻译出来的‘welcome’的词向量,都是1行3列拼接得到 —》1行6列,经过linear可以改变形状再次变成 1行3列(中间score)得到权重值再将权重值与原来的V(每个时间步的隐藏层输出结果组合而成,中间的 3*3部分)相乘,得到中间语义张量C 即为注意力
再将得到的中间语义张量C与 ‘welcome’拼接(向上箭头),经过linear,再与上一时间步隐藏层输出结果q,共同作用,预测出单词‘to’;q是上一时间步预测出的真实的结果 ‘Welcome’(向上output的)、k是上一时间步的隐藏层输出结果,两者进行向量的拼接通过linear,再经过softmax得到权重分数(中间);权重分数再分别乘以对应的V(每个编码器中每个单词的隐藏层输出结果)得到中间语义张量C,再和‘welcome’拼接,linear后得到当前时间步的真实输入,加上上一时间步的隐藏层输出结果共同作用,预测出单词‘to’;
这是第二种计算注意力的方式;)
(为什么k、q两者作用的这种方式有效?:因为上一时间步的隐藏层输出结果k包含了编码器中所有单词的信息;
预测第一个单词‘welcome’时如何得知那个单词的权重最大呢?:此时 q指的是GO(第一个灰色块),k是编码器过来的k,两者作用;)

第一种传统方式是点乘运算,第二种是拼接运算;


2. 什么是深度神经网络注意力机制


3. 注意力机制的作用


4. 注意力机制实现步骤


4.1 步骤


4.2 代码实现


5. 小结

http://www.rkmt.cn/news/1449781.html

相关文章:

  • Agent Harness Engineering综述:一篇读懂 AI Agent 真正的工程瓶颈
  • 别再死记硬背公式了!用5分钟搞懂电感‘伏秒平衡’,开关电源设计不再懵
  • # 20251901 2024-2025-2 《网络攻防实践》实验十
  • 别再复制粘贴了!手把手教你用Nacos 2.x和Sentinel搭建RuoYi-Cloud微服务后台(含常见启动报错解决)
  • SQL学习日志_Day2_深入SQL语法与数据库层级结构
  • 2026重庆除甲醛公司真实排名,选对不踩坑 - GrowthUME
  • 智能家居 Zigbee 与 WiFi 协议对比:穿墙性能深度测评
  • 图像转换新思路:BBDM如何用‘布朗桥’在潜在空间里‘搭桥’,比DDPM更直接?
  • 从语音识别到机器人控制:PicoTalk模块在远程呈现机器人中的应用
  • Keras设计哲学:从用户心智模型到深度学习框架的抽象艺术
  • 别再只问哪个 AI 模型更强了,2026 年真正拉开差距的是向量引擎
  • 手把手教你用MetaMask创建钱包并获取免费测试币(从安装到第一笔转账)
  • 用GD32F3x0单片机驱动TDC-GP22(SSP1922)做高精度测距:一份完整的SPI通信与寄存器配置指南
  • 基于ESP-01F与WebSocket的智能温度计:物联网开发实战指南
  • 量子门分解与校准技术详解
  • 华硕笔记本终极控制方案:5分钟掌握G-Helper轻量级优化工具
  • SAP生产计划员必看:如何利用组件与装配报废率,精准控制原材料采购数量?
  • 基于 Harmony 6.0 应用的同城活动组织平台首页实现
  • 基于树莓派的智能迷你冰箱:物联网全栈开发与硬件实践
  • 不到150元成本!基于STM32的智能手表项目复盘:从PCB布线到低功耗设计的避坑经验
  • 别再被`Uint8Array`坑了!Vue3 + WebSocket + protobufjs 实战避坑指南
  • DiskGenius实战:新买的SATA/NVMe固态硬盘,分区选MBR还是GPT?4K对齐怎么设置?
  • 告别重复劳动:用Tessy的Base工程模板,5分钟复用你的测试环境配置
  • 大语言模型本地部署与云端API的技术经济性对比
  • Arm Neoverse V1 RAS机制与缓存错误处理深度解析
  • 修武沙发翻新换皮换布哪家好、匠阁、御匠、锦修三大品牌哪个靠谱公司推荐、怎么选沙发翻新服务商 - 卓一科技
  • GPT还是MBR?给SATA/NVMe固态硬盘分区前,你必须搞懂的3个关键选择
  • Arm Mali-C55 ISP架构解析:从芯片设计到影像处理的诗意平衡
  • 基于Teensy与WS2812B的旋转动画转向灯制作全解析
  • 2026年电脑维修上门哪家靠谱 五家上门电脑维修平台综合评测口碑推荐 - 资讯焦点