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中的每个键向量之间的点积 组成)

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

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

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

相关文章

SMART PLC自适应低通滤波器(收放卷线速度滤波)

一阶低通滤波器更多内容请参考信号处理专栏相关文章,常用链接如下: 1、SMART PLC 低通滤波器和模拟量采集应用 https://rxxw-control.blog.csdn.net/article/details/136595982https://rxxw-control.blog.csdn.net/article/details/1365959822、SMART PLC双线性变换和后向差…

腾讯云服务器99元一年购买链接来了,续费也是99元

良心腾讯云推出99元一年服务器,新用户和老用户均可以购买,续费不涨价,续费也是99元,配置为轻量2核2G4M、50GB SSD盘、300GB月流量、4M带宽:优惠价格99元一年,续费99元,官方活动页面 txybk.com/g…

【STM32】STM32F4中USART的使用方法和Printf的重定义(基于CubeMX和Keil)

文章目录 一、前言二、STM32CubeMX生成代码2.1 选择芯片2.2 配置相关模式2.3 生成代码 三、Keil重定义Printf3.1 勾选“UseMicroLIB”3.2 添加头文件和修改fputc和fgetc 四、测试Printf的效果4.1 字符串测试4.2 格式化输出测试 五、存在问题的解决方法5.1 检查串口号是否一致5.…

由于找不到vcruntime140.dll无法继续执行的多种解决方法

最近,我在安装Adobe Premiere Pro(以下简称PR)时遇到了一个问题,即无法找到vcruntime140.dll文件。这可能导致某些应用程序无法正常启动或运行,因为vcruntime140.dll是许多基于Microsoft Visual C编译的应用程序所必需…

【中医】康复科治疗与中医养生(针灸、理疗、足浴)

程序员生活指南之 【中医】康复治疗与中医养生(针灸、理疗、足浴) 文章目录 1、康复科室2、中医与养生3、中医康复技术 1、康复科室 什么是康复科? 大部分医院都有康复科,但很多人都不知其具体是干什么的。其实,康复…

考研常识 | 专业硕士与学术硕士的11个区别

专业硕士与学术硕士的11个区别 对于考研学子而言,了解专业学位与学术学位的区别,是报考的第一步。学术学位研究生一般都是全日制的,而专业学位研究生的学习方式还分为即全日制与非全日制两种。这篇文章将带大家认识全日制专业学位与全日制学术…

LCR 131. 砍竹子 I

解题思路:(与砍竹子II的区别是,这里的竹子长度数量级较小) 数学推导或贪心 切分规则: 等长,且尽量为3 b0时,pow(3,a) b1时,pow(3,a-1)*4 少一段3,并入b生成一…

【数据结构】Map的常用方法

文章目录 一、搜索1.概念 二、Map的使用1.概念&#xff1a;2.Map的常用方法&#xff1a;1.V put(K Key ,V Value )2.V get(Object key)3.V getOrDefault(Object key, V defaultValue)4.V remove(Object key)5.Set<K> keySet()6.Collection<V> values()7.Set<Map…

连锁门店终端如何高效IT运维?向日葵助力服装行业数字化升级

服装行业作为典型的传统行业&#xff0c;因供应逐渐饱和、产能相对过剩以及消费结构升级&#xff0c;其销售端的数字化转型需求是最为迫切的。 为此&#xff0c;某知名时装品牌紧抓数字化转型机遇&#xff0c;在2016年起就开始了数字化变革&#xff0c;并在两年多的时间里完成…

配置与管理DNS服务器

配置与管理DNS服务器 **1&#xff0c;什么是DNS&#xff1f;**负责将域名转换成实际想对应的ip地址&#xff0c;这个过程交域名解析。 **2&#xff0c;域名解析的方法&#xff1a;**分布式&#xff0c;层次结构的数据库系统。根域&#xff0c;顶级域&#xff0c;二级域&#…

MyBatis是纸老虎吗?(二)

从二月二十六号开始&#xff0c;我就要求自己出一期与MyBatis有关的文章&#xff0c;直到三月三号那天才发表第一篇文章。这速度&#xff0c;这质量&#xff0c;着实堪忧。经过这件事&#xff0c;我也深刻认识到自己性格上的缺陷——懒惰。为了克服这个坏毛病&#xff0c;我决定…

使用Julia语言和R语言实现K-均值

K-均值算法基础 K-均值聚类算法属于一种无监督学习的方法&#xff0c;通过迭代的方式将数据划分为K个不重叠的子集&#xff08;簇&#xff09;&#xff0c;每个子集由其内部数据点的平均值来表示。计算方法大体如下&#xff1a; 1.初始化簇中心 选择K个数据点作为初始的簇中心…

LLM RAG系统中消除数据幻觉的几个绝招-OPENAI公司内称的“大招”

前言-什么是数据幻觉&#xff1f;它到底有什么危害呢 我们直接来举例&#xff1a; 我是金银花一区的&#xff0c;附近有什么小学&#xff1f; 此时RAG带出如下信息&#xff1a; 金银花小区一区、二区、三区附近教育资源有&#xff1a;银树大学、建设小学金银花校区、金树高…

IMX8MM -- Yocto构建遇见的错误及解决方法:

IMX8MM Yocto构建遇见的错误及解决方法&#xff1a; 1 bison-3.0.4 error2 Opencv BB_NO_NETWORK Error &#xff1a;3 Yocto构建时出现U-boot 问题4 Yocto构建时出现Linux kernel编译问题5 wayland-native6 cross-localedef-native7 wayland-protocols8 mesa 硬件&#xff1a;…

React Navite环境搭建

React Navite官网地址 React Native 中文网 使用React来编写原生应用的框架 创建React Navite项目命令&#xff08;目录必须是英文&#xff09; npx react-nativelatest init AwesomeProject 如果你是想把 React Native 集成到现有的原生项目中&#xff0c;则步骤完全不同…

多项式回归算法模拟

import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.preprocessing import PolynomialFeatures# 生成随机数作为x变量&#xff0c;范围在-5到5之间&#xff0c;共500个样本 x np.random.uniform(-5, 5, siz…

Java开发从入门到精通(一):Java的进阶语法知识

Java大数据开发和安全开发 Java的方法1.1 方法是什么1.1.1 方法的定义1.1.2 方法如何执行?1.1.3 方法定义时注意点1.1.4 使用方法的好处是? 1.2 方法的多种形式1.2.1 无参数 无返回值1.2.2 有参数 无返回值 1.3 方法使用时的常见问题1.4 方法的设计案例1.4.1 计算1-n的和1.4.…

[C/C++]string类常用接口介绍及模拟实现string类

一&#xff1a;Cstring类的由来 在C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c;但是这些库函数与字符串是分离开的&#xff0c;不太符合OOP的思想&#xff0c;而且底层空间需要用…

【CSS面试题】高度塌陷问题及解决

什么情况下产生 (when 父盒子没有定义高度&#xff0c;但是子元素有高度&#xff0c;希望用子盒子撑起父盒子的高度&#xff0c;但是子盒子添加了浮动属性之后&#xff0c;父盒子高度为0 <template><div class"father"><div class"son"&…

Gitlab修改仓库权限为public、Internal、Private

Public&#xff08;公开&#xff09;&#xff1a;所有人都可以访问该仓库&#xff1b; Internal&#xff08;内部&#xff09;&#xff1a;同一个GitLab群组或实例内的所有用户都可以访问该仓库&#xff1b; Private&#xff08;私人&#xff09;&#xff1a;仅包括指定成员的用…