首页 > 其他分享 >TransFormer--解码器:多头注意力层

TransFormer--解码器:多头注意力层

时间:2024-11-24 11:04:22浏览次数:8  
标签:TransFormer -- 矩阵 编码器 查询 解码器 注意力 向量

TransFormer--解码器:多头注意力层

下图展示了Transformer模型中的编码器和解码器。我们可以看到,每 个解码器中的多头注意力层都有两个输入:一个来自带掩码的多头注意力层,另一个是编码器输出的特征值。

在这里插入图片描述

让我们用R来表示编码器输出的特征值,用M来表示由带掩码的多头注意力层输出的注意力矩阵。由于涉及编码器与解码器的交互,因此这一层也被称为编码器−解码器注意力层。

让我们详细了解该层究竟是如何工作的。多头注意力机制的第1步是创建查询矩阵、键矩阵和值矩阵。我们已知可以通过将输入矩阵乘以权重矩阵来创建查询矩阵、键矩阵和值矩阵。但在这一层,我们有两个输入矩阵:一个是R(编码器输出的特征值),另一个是M(前一个子层的注意力矩阵)。

我们使用从上一个子层获得的注意力矩阵M创建查询矩阵Q,使用编码器输出的特征值R创建键矩阵和值矩阵。由于采用多头注意力机制,因此对于头i,需做如下处理。

查询矩阵 Q i Q_i Qi​通过将注意力矩阵M乘以权重矩阵 W i Q W_i^Q WiQ​来创建。

键矩阵和值矩阵通过将编码器输出的特征值R分别与权重矩阵 W i K 、 W i V W_i^K、W_i^V WiK​、WiV​相乘来创建,如下图所示。

在这里插入图片描述

为什么要用M计算查询矩阵,而用R计算键矩阵和值矩阵呢?因为查询矩阵是从M求得的,所以本质上包含了目标句的特征。键矩阵和值矩阵则含有原句的特征,因为它们是用R计算的。为了进一步理解,让我们来逐步计算。

第1步是计算查询矩阵与键矩阵的点积。查询矩阵和键矩阵如下图所示。需要注意的是,这里使用的数值是随机的,只是为了方便理解。

在这里插入图片描述

下图显示了查询矩阵与键矩阵的点积结果。

在这里插入图片描述

通过观察上图中的矩阵 Q i ∗ K i T Q_i * K_i^T Qi​∗KiT​,我们可以得出以下几点。

  1. 从矩阵的第1行可以看出,其正在计算查询向量 q 1 q_1 q1​()与所有键向量 k 1 k_1 k1​(I)、 k 2 k_2 k2​(am)和 k 3 k_3 k3​(good)的点积。因此,第1行表示目标词与原句中所有的词(I、am和good)的相似度。
  2. 同理,从矩阵的第2行可以看出,其正在计算查询向量 q 2 q_2 q2​(Je)与所有键向量 k 1 k_1 k1​(I)、 k 2 k_2 k2​(am)和 k 3 k_3 k3​(good)的点积。因此,第2行表示目标词Je与原句中所有的词(I、am和good)的相似度。
  3. 同样的道理也适用于其他所有行。通过计算 Q i ∗ K i T Q_i * K_i^T Qi​∗KiT​,可以得出查询矩阵(目标句特征)与键矩阵(原句特征)的相似度。

计算多头注意力矩阵的下一步是将 Q i ∗ K i K Q_i * K_i^K Qi​∗KiK​除以 d k \sqrt{d_k} dk​ ​,然后应用softmax函数,得到分数矩阵 s o f t m a x ( Q i ∗ K i T d k ) ∗ V i softmax(\frac{Q_i * K_i^T}{\sqrt{d_k}}) * V_i softmax(dk​ ​Qi​∗KiT​​)∗Vi​。

接下来,我们将分数矩阵乘以值矩阵 V i V_i Vi​,得到,即注意力矩阵 Z i Z_i Zi​,如下图所示。

在这里插入图片描述

假设计算结果如下图所示。

在这里插入图片描述

目标句的注意力矩阵 Z i Z_i Zi​是通过分数加权的值向量之和计算的。为了进一步理解,让我们看看Je这个词的自注意力值 Z 2 Z_2 Z2​是如何计算的,如下图所示。

在这里插入图片描述

Je的自注意力值 Z 2 Z_2 Z2​是通过分数加权的值向量之和求得的。因此, Z 2 Z_2 Z2​的值将包含98%的值向量 v 1 v_1 v1​(I)和2%的值向量 v 2 v_2 v2​(am)。这个结果可以帮助模型理解目标词Je指代的是原词I。

同样,我们可以计算出h个注意力矩阵,将它们串联起来。然后,将结果乘以一个新的权重矩阵 W 0 W_0 W0​,得出最终的注意力矩阵,如下所示。

M u l t i − h e a d a t t e n t i o n = C o n c a t e n a t e ( Z 1 , Z 2 , . . . , Z i , . . . , Z h ) W 0 Multi - head attention = Concatenate(Z_1,Z_2,...,Z_i,...,Z_h)W_0 Multi−headattention=Concatenate(Z1​,Z2​,...,Zi​,...,Zh​)W0​

将最终的注意力矩阵送入解码器的下一个子层,即前馈网络层。

标签:TransFormer,--,矩阵,编码器,查询,解码器,注意力,向量
From: https://blog.csdn.net/weixin_44144773/article/details/143906527

相关文章

  • Suricata 技术详解
    Suricata并非是黑客工具,而是一款开源的高效网络威胁检测与防御工具,以下为你展开介绍: 功能特性入侵检测与防御:Suricata能够作为网络入侵检测系统(IDS),实时监控网络流量,对可疑活动和入侵行为发出警报。同时,它也可以充当入侵防御系统(IPS),检测到恶意活动和流量后直接进行阻断,有效......
  • STM32 通过按键方式触发中断的处理流程
    需求:通过按键方式触发中断中断处理流程整体流程图片首先中断处理源有三个方向方向:1:内核其他控件(灰色的图2)有可以配置的,配置优先级也有固定的,优先级最高,数越小优先级越高2:片上外设:位于CPU外部,STM32芯片内部(白色的图3)3:片上外设,EXTI专门管理外部中断  通过需求......
  • STM32 系统滴答定时器和时间换算问题
    ARMCPU内部存在定时器SysTick可以称为系统滴答定时器,需要查看Cortex-M3->STK_CRTL控制和状态寄存器:32位寄存器:reserved保留0位:ENABLE:使能位,写1开始计时16位:COUNTFALG:标志位,计数完成自动置1。1位:TICKINT:中断使能,定时完成是否发生中断,0是默认关闭2位:CLKSOURCE:时钟源......
  • STM32 通过STM32cubemx软件进行代码生成(led灯闪烁)并最后封装点亮、熄灭以及翻转灯函数
    第一步生成代码对hal生成的文件进行解释Core:核心->Inc:各种头文件->Src:各种源文件Drivers:驱动文件MDK:可以看到个keil各种文件项目路径hail.ioc,可以用来修改配置,工作日志和配置文件 第二步点击MDK-ARM可以看到keil文件,双击打开keil文件对其配置自动复位功......
  • 【JavaEE初阶 — 多线程】定时器的应用及模拟实现
         目录  1.标准库中的定时器      1.1Timer的定义      1.2Timer的原理      1.3Timer的使用     1.4Timer的弊端      1.5ScheduledExecutorService     2.模拟实现定时器    ......
  • 使用Python实现自动化邮件通知:当长时程序运行结束时
    使用Python实现自动化邮件通知:当长时程序运行结束时前提声明本代码仅供学习和研究使用,不得用于商业用途。请确保在合法合规的前提下使用本代码。目录引言项目背景项目设置代码分析导入所需模块定义邮件发送函数发送邮件实现步骤结语全部代码引言在开发过程中,我们经......
  • 经典战法【均线老鸭头】战法的机构构成,集中模型以及买卖操盘技术,技术要点图文详解
    直接上干货,首先【均线老鸭头】战法的均线构成我们选择5-10-60均线三条。老鸭头名称的由来,这是一个形象的说法,如上图,图中均线系统排列的形态,是不是像一个鸭脑袋?第一段上涨是鸭脖子,股价开始回落处画上一个圆圈,是鸭子的眼睛,第三段启动上涨的位置就是鸭子的嘴巴。整个图形合在一......
  • 【资金趋势指标】安全买点的组合选股和指标操盘关键技术解密,操盘训练营核心技术点
    如上图,指标想要运用到精妙之处,我们就需要找到组合优化效用最大化的位置操作,如上图组合指标,我们主图选择【翻倍密码系统】,副图选择【资金趋势双档】副图指标。在上图标记AB两个买点位置,有什么需要注意的关键信号呢?(1)主图来看波段行情和趋势行情,紫色K线处于波段和趋势多头行情......
  • 机器学习实战笔记34-38:gridsearchcv的进阶使用,无监督学习:kmeans、DBSCAN
    主要讲了gridsearchcv的几种变形使用方式一:全部参数搜索方法是构造机器学习流之后,构造参数空间二:优化评估指标的选择作为网格搜索中输出评估指标的参数,roc_auc参数只能指代metrics_roc_auc_score函数的二分类功能,如果需要多分类,则需要将scoring修改为roc_auc_ovr等参数三......
  • 【LLM训练】从零训练一个大模型有哪几个核心步骤?
    【LLM训练】从零训练一个大模型有哪几个核心步骤?⚠︎重要性:★★★NLPGithub项目:NLP项目实践:fasterai/nlp-project-practice介绍:该仓库围绕着NLP任务模型的设计、训练、优化、部署和应用,分享大模型算法工程师的日常工作和实战经验AI藏经阁:https://gitee.com/fas......