Transformer之多角度解读

Transformer

文章目录

  • Transformer
    •   👉引言💎
  • 一、 自注意力机制 : 主要用于 长距离依赖捕捉和转换序列
  • 二、 Encoder:
    • 2.1 多头注意力机制:
    • 2.2 残差连接:
  • 三、 Decoder:
    • 3.1 Decoder 多头注意力层:
    • 3.2 交叉注意力层
    • 3.3 Transformer中的全连接层
  • 四、 自注意力过程 - 从 K,Q,V维度解读:

  👉引言💎

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。
热爱写作,愿意让自己成为更好的人…


在这里插入图片描述

铭记于心
🎉✨🎉我唯一知道的,便是我一无所知🎉✨🎉

一、 自注意力机制 : 主要用于 长距离依赖捕捉和转换序列

在这里插入图片描述

二、 Encoder:

2.1 多头注意力机制:

在这里插入图片描述

Q *K【Q 矩阵和 K矩阵的转置之间做矩阵乘法(词向量做点积)】 得到分数矩阵(查询映射到键,一个单词对其他单词的关注度),经过开方 scale缩放和softmax,得到注意力权重(注意力分数),然后 *V 得到输出向量

在这里插入图片描述
在这里插入图片描述

而多头注意力,就是输入前先将向量分成多组 Q和K,然后经过上述自注意力过程 拼接在一起 (此时 每个词向量dim维度增加),再经过Linear层降维到 原维度

总之,多头注意力是一个模块,用于计算输入的注意力权重,并生成一个带有编码信息的输出向量,指示序列中的每个词如何关注其他所有词

2.2 残差连接:

将多头注意力输出向量加到原始输入上,然后输出经过层归一化,归一化后的残差输出被送入点对点前馈网络(Feed Forward)进行进一步处理。点对点前馈网络是几个线性层,中间有ReLU激活函数。

再次将该输出与点对点前馈网络的输入相加并进一步归一化。残差连接有助于网络训练,因为它允许梯度直接流过网络。

在这里插入图片描述

使用层归一化来稳定网络,从而显著减少所需的训练时间。点对点前馈层用于进一步处理注意力输出,可能使其具有更丰富的表达。

可以将编码器堆叠n次进一步编码信息,每一层都有机会学习到不同的注意力表示

三、 Decoder:

自回归生成单词序列,有 两个多头注意力层 和一个点对点前馈网络层(类似于编码器,但每个多头注意力层的任务不同)。最后,它由一个类似于分类器的线性层和一个softmax来得到单词概率。

解码器将先前输出的列表作为输入,以及包含来自输入的注意力信息的编码器输出。当编码器生成一个结束标记作为输出时,解码停止。输入通过嵌入层和位置编码层,得到位置嵌入。位置嵌入被送入第一个多头注意力层,计算解码器输入的注意力得分。

使用mask 只访问之前的单词,防止计算未来

在这里插入图片描述

3.1 Decoder 多头注意力层:

  • (与其他层的不同之处就在于 多了一个mask层来防止计算未来的单词

在这里插入图片描述

3.2 交叉注意力层

使用来自Encoder的输出 作为其K和V矩阵,而Q矩阵则来自Decoder的前一层的输出。这种交叉注意力机制允许Decoder关注到输入序列的相关部分。

在Transformer模型的编码器部分,输出不包括Q(查询)矩阵。编码器的自注意力层会生成自己的Q、K和V矩阵,但是它只将K和V传递给解码器。编码器的Q矩阵用于其内部的自注意力计算,它不会作为输出传递到解码器。

编码器的任务是处理输入序列,创建一个上下文表示,该表示包含了输入序列的整体信息。编码器的输出(即编码器最后一层的输出),就是这个上下文表示,它为每个输入序列元素提供了一个丰富的特征集。当这些输出被传递到解码器时,它们充当K和V矩阵的角色,解码器会使用这些信息来生成输出序列。

在解码器端,会有自己的自注意力层和交叉注意力层。自注意力层会使用己来自解码器上一层的输出作为Q、K和V矩阵,而交叉注意力层会使用这一层生成的Q矩阵以及从编码器传入的K和V矩阵。
总结来说,编码器和解码器都会生成自己的Q矩阵,但编码器的Q矩阵只在编码器内部使用,而不会传递给解码器。解码器使用自己的Q矩阵以及编码器提供的K和V矩阵来进行交叉注意力计算。

Transformer模型的Decoder在其第一个多头注意力层使用的是基于自身输出的自注意力机制,其中既产生了针对当前解码焦点的Q矩阵,也产生了提供上下文信息的K和V矩阵。这样的设计使得Decoder能够有效地整合先前生成的序列信息,以及通过交叉注意力机制,有效地利用Encoder的输出。

3.3 Transformer中的全连接层

  1. 内部结构:在Transformer架构中,全连接层是自注意力机制和多头注意力机制之后的关键组成部分。这些层在每个注意力模块之后出现,用于进一步处理信息。
  2. 前馈网络:Transformer的每个编码器和解码器层都包含一个前馈网络,该网络实际上是由两个线性(全连接)层组成,中间有一激活函数。这些层对于添加网络容量和学习复杂特征非常重要。
  3. 输出映射:在处理任务如序列到序列的翻译时,Transformer模型的输出端通常会有一个全连接层,用于将解码器的输出映射到目标语言的词汇表上。

四、 自注意力过程 - 从 K,Q,V维度解读:

对某一个查询向量 Query,可以理解为正在计算注意力分数的词。而 Key 向量和 Value 向量是我们正在关注的词,即该词与查询词的相关程度首先 初始化Q,K,V的映射线性层([ batch, seq_lens, h_dim ]) , 然后将 输入 经过Embedding和位置编码的词嵌入矩阵([ batch, seq_lens, e_dim ]) 映射为 K,Q,V ,然后 注意力的故事就开始了… 在多头注意力中,拼接后 再来一层linear 又降回到了 e_dim…

  • 一个自注意力过程:

    下面点积 说法: 实际上是 Q和K转置的矩阵乘(从第二维度开始), 由于Q和K是高维度的张量(batch size),所以整个操作实际上是一系列点积的集合 (Q中的每个查询向量与K中的每个键向量之间的点积 组成)

    在这里插入图片描述 · 在这里插入图片描述

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

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

相关文章

hive sql无法停止

排查流程 hive任务停止是调用org.apache.hive.jdbc.HiveStatement的close()方法实现的 其底层是委托给org.apache.hive.service.cli.thrift.TCLIService.Iface客户端实例来实现。 同时,通过JDK动态代理为其织入了synchronized同步机制:其底层是委托给…

申请公众号上限是多少

一般可以申请多少个公众号?公众号申请限额在过去几年内的经历了很多变化。对公众号申请限额进行调整是出于多种原因,确保公众号内容的质量和合规性。企业公众号的申请数量从50个到5个最后到2个,对于新媒体公司来说,这导致做不了公…

【XMU学科实践二】豆瓣爬虫实践

文章目录 分析豆瓣阅读网站具体步骤构造headersBeautiful soup中的定位函数find() 、find_all() 完整爬虫代码 叠甲:仅供学习。。 XMU的小朋友实在不会了可以参考我的思路,但还是建议自己敲一遍哈。 学科实践二还是挺有意思的! 分析豆瓣阅读网…

什么是jwt

jwt是JSON Web Token,由3部分构成: 头部Header:头部包含了两部分,token 类型和采用的加密算法(可为none,后端应限制加密算法,不以这里为准)。 载荷Payload:这部分才是重要…

Compose UI 之 Small TopAppBar

Small 类型 TopAppBar AppBar 主要由2类,顶部 AppBar 和底部 AppBar。 顶部 AppBar:主要包含了标题,action菜单,导航菜单。底部 AppBar:典型地包含主要导航项。 顶部 AppBar 顶部 AppBar 包含了 4 中类型&#xff…

webhook详解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 webhook简介 在当今高度连接的网络世界中,没有什么可以孤立地发挥最佳作用。完成一项任务(几乎)总是需要多个实体的参与。电子商务应用程序需要与支付系统通信,支付…

Python快速入门系列-2(Python的安装与环境设置)

第二章:Python的安装与环境设置 2.1 Python的下载与安装2.1.1 访问Python官网2.1.2 安装Python对于Windows用户对于macOS用户对于Linux用户 2.2 集成开发环境(IDE)的选择与设置2.2.1 PyCharm2.2.2 Visual Studio Code2.2.3 Jupyter Notebook2…

线性dp+中位数,POJ3666 Making the Grade

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 3666 -- Making the Grade (poj.org) 二、解题报告 1、思路分析 先不考虑…

Vessel - Linux hackthebox

#hard #runc #RE #Nodejs-SQLI Enumeration .git leak 使用 dumpall 下载 .git 打开 routes/index.js 可以看到网站使用 nodejs mysql 编写,且只有登录功能 router.post(/api/login, function(req, res) {let username req.body.username;let password req…

ROS2中launch编写及参数含义(xml、python)

ROS2系列文章目录 ROS2中nav_msgs/msg/Path 数据含义及使用 ROS2中std_msgs/msg/Header 数据含义及使用 ROS中TF变换详解 文章目录 ROS2系列文章目录ROS2中launch编写及参数含义(xml、python)一、ROS官方介绍二、实现案例1.编写主函数、CMakeLists.tx…

基于springboot实现图书推荐系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现图书馆推荐系统演示 摘要 时代的变化速度实在超出人类的所料,21世纪,计算机已经发展到各行各业,各个地区,它的载体媒介-计算机,大众称之为的电脑,是一种特高速的科学仪器,比…

实时智能应答3D数字人搭建

语音驱动口型的算法 先看效果: 你很快就可以帮得上我了 FACEGOOD 决定将语音驱动口型的算法技术正式开源,这是 AI 虚拟数字人的核心算法,技术开源后将大程度降低 AI 数字人的开发门槛。FACEGOOD是一家国际领先的3D基础软件开发商,…

VS2017 boost环境配置与报错解决

1、下载Boost 2、boost编译 将下载好的压缩包文件解压,我这里放到了D:\Qt文件夹内 按win键找到 vs2017(主要看你的vs是什么版本)的x86_x64兼容工具命令提示符 输入以下命令: 首先进入到解压的boost文件夹,复制一下前面解压的路径 cd D:\Qt\boost_1_78_0然后输入命令,…

Jmeter(二) - 从入门到精通 - 创建测试计划(Test Plan)(详解教程)

1.简介 上一篇中已经教你把JMeter的测试环境搭建起来了,那么这一篇我们就将JMeter启动起来,一睹其芳容,首先给大家介绍一下如何来创建一个测试计划(Test Plan)。 2.创建一个测试计划(Test Plan&#xff09…

Java设计模式深度解析:掌握工厂模式,优化对象创建与管理

工厂模式是一种创建型设计模式,它提供了一种在不指定具体类的情况下创建对象的方法。在Java中,工厂模式可以通过接口和实现类来实现。比如我们建一个外形工厂,工厂提供对外的获取外形方法,传入不同的参数即可获取不同的外形。如图…

git命令行提交——github

1. 克隆仓库至本地 git clone 右键paste(github仓库地址) cd 仓库路径(进入到仓库内部准备提交文件等操作) 2. 查看main分支 git branch(列出本地仓库中的所有分支) 3. 创建新分支(可省…

Linux 之五:权限管理(文件权限和用户管理)

1. 文件权限 在Linux系统中,文件权限是一个非常基础且重要的安全机制。它决定了用户和用户组对文件或目录的访问控制级别。 每个文件或目录都有一个包含9个字符的权限模式,这些字符分为三组,每组三个字符,分别对应文件所有者的权限…

GIS之深度学习08:安装GPU环境下的pytorch

环境: cuda:12.1.1 cudnn:12.x pytorch:2.2.0 torchvision:0.17.0 Python:3.8 操作系统:win (本文安装一半才发现pytorch与cuda未对应,重新安装了cuda后才开始的&a…

RT-thread学习持续更新中(1)

标准版RTT移植 先不要选择nano版本,选标准版的 include包含头文件 applications 应用层的程序编写放里面 drivers驱动 libraries库 rtthread的内核 LOG_D打印信息 通过修改board.c的SystemClock_Config()更改系统时钟 由于在创建工程向导…

Docker的安装及MySQL的部署(CentOS版)

目录 1 前言 2 Docker安装步骤 2.1 卸载可能存在的旧版Docker 2.2 配置Docker的yum库 2.2.1 安装yum工具 2.2.2 配置Docker的yum源 2.3 安装Docker 2.4 启动和校验 2.5 配置镜像加速(使用阿里云) 2.5.1 进入控制台 2.5.2 进入容器镜像服务 2.5.3 获取指令并粘贴到…