计算机视觉与深度学习-Transformer-【北邮鲁鹏】

news2024/11/28 9:31:52

目录

  • 引入
  • 基本组成
    • 编码器
      • 多头自注意力机制(Multi-Head Self-Attention)
        • 多头自注意力的计算过程
        • 头数与维度关系
        • 前馈神经网络(Feed-Forward Neural Network)
      • 编码器中的ADD&NORM
        • 加法操作(Addition)
        • 归一化操作(Normalization)
          • 批归一化(Batch Normalization)和层归一化(Layer Normalization)
    • 解码器
      • 遮蔽多头注意力(Masked Multi-Head Attention):
        • 遮蔽多头注意力的操作步骤:
        • 举例
      • 多头注意力(Multi-Head Attention):
      • 前馈神经网络(Feed-Forward Network):
    • 如何实现并行
    • 编码器和解码器的堆叠
    • 编码器和解码器的联系
  • Transformer的位置编码
  • Transformer的输入和输出
    • Transformer输入的嵌入
    • Transformer输出的嵌入
      • 三级目录

引入

相对于传统的 LSTM,Transformer 模型在处理长序列时具有更高的训练效率。这是由于Transformer模型的并行计算性质以及自注意力机制的引入。

传统的循环神经网络(如LSTM)在处理序列数据时需要按照时间顺序逐步计算和更新隐藏状态,导致训练速度较慢。而Transformer模型通过引入自注意力机制,能够同时对整个输入序列进行并行计算,从而加速了训练过程。在自注意力机制中,每个位置的编码可以直接关注到其他位置的编码,而不需要像LSTM一样逐步传递信息。
在这里插入图片描述

基本组成

在这里插入图片描述

编码器

编码器(Encoder):编码器是Transformer模型的输入部分,负责将输入序列转换为一系列高维表示。

编码器由多个相同的编码器层(Encoder Layer)堆叠而成,堆叠多个相同的编码器层可以逐渐提取输入序列的高级表示,捕捉输入序列中的语义和上下文信息。

每个编码器层通常包含两个子层

多头自注意力机制(Multi-Head Self-Attention)

  • 是Transformer模型中的一种变体自注意力机制,用于增强模型对输入序列的建模能力。

  • 在传统的自注意力机制中,通过计算每个位置与其他位置之间的相似度来获取位置之间的关联性,并生成加权表示。而多头自注意力则引入了多个注意力头(Attention Head),每个头都会学习不同的相似度权重,从而能够更全面地捕捉输入序列的信息。

  • 多头自注意力的核心思想是将输入序列先经过多个线性变换,然后分成多个注意力头。每个注意力头都会进行独立的自注意力计算,生成自己的查询、键和值,并计算相应的注意力权重。

多头自注意力的计算过程

在这里插入图片描述

1、输入序列的线性变换:

将输入序列经过三个不同的线性变换,分别得到查询(Queries)、键(Keys)和值(Values)【 就是输入特征进行变换以后的下一轮要用到的真正的特征。】的表示。这些线性变换通常是具有不同权重的独立线性层。
在这里插入图片描述
X 1 X_1 X1 W Q W^Q WQ相乘得 q 1 q_1 q1 X 2 X_2 X2 W Q W^Q WQ相乘得 q 2 q_2 q2
X 1 X_1 X1 W K W^K WK相乘得 k 1 k_1 k1 X 2 X_2 X2 W K W^K WK相乘得 k 2 k_2 k2
X 1 X_1 X1 W V W^V WV相乘得 v 1 v_1 v1 X 2 X_2 X2 W V W^V WV相乘得 v 2 v_2 v2

2、多头注意力计算:

  • 对于每个注意力头,分别计算查询和键之间的相似度。这可以通过对查询和键的内积进行计算得到。
  • 为了控制相似度的尺度,通常会对相似度进行缩放,例如将相似度除以查询或键的维度的平方根。
  • 将相似度得分进行softmax操作,以获得注意力权重。这样可以确保注意力权重的和为1,用于对值进行加权求和。
  • 注意力权重乘以对应的值,得到每个位置的加权值。

在这里插入图片描述

流程图的形式
在这里插入图片描述

3、多头注意力的合并:

对输入序列进行多组线性变换,得到多组查询(Q)、键(K)和值(V)的表示。每组Wk、Wq和Wv都是独立的权重矩阵。

在这里插入图片描述
在真实做的时候,使用了八组 W Q , W K , W V W^Q,W^K,W^V WQ,WK,WV。得到八组Z。八组结果,分别为 Z 0 , Z 1 . . . Z 7 Z_0,Z_1...Z_7 Z0,Z1...Z7
在这里插入图片描述
然后将这八组结果contact起来。然后再学一组线性变换 W 0 W^0 W0
在这里插入图片描述
总结流程:
在这里插入图片描述

将多个注意力头的输出表示进行拼接或线性变换,以得到多头注意力模块的最终输出。

头数与维度关系

在这里插入图片描述

前馈神经网络(Feed-Forward Neural Network)

在这里插入图片描述

编码器中的ADD&NORM

在这里插入图片描述

加法操作(Addition)
  • 在编码器中,加法操作通常是通过将多头注意力模块的输出【 z z z】与残差连接(Residual Connection)【 x x x】进行相加实现的。
  • 在多头注意力模块的输出和残差连接之间进行元素级别的相加操作。
  • 加法操作的目的是将多头注意力模块的输出与原始输入进行融合,以保留输入的原始信息。
归一化操作(Normalization)
  • 在加法操作之后,对结果进行归一化操作,通常使用层归一化(Layer Normalization)或批归一化(Batch Normalization)来实现。
  • 归一化操作的目的是对加法操作后的结果进行规范化,以提高模型的稳定性和泛化能力。
  • 归一化操作通常包括对结果进行平移和缩放,以使其具有适当的平均值和方差。
批归一化(Batch Normalization)和层归一化(Layer Normalization)

是两种常见的归一化技术,用于在神经网络中提升训练的效果和收敛速度。它们的主要区别在于归一化的维度和应用的位置。
在这里插入图片描述

批归一化(Batch Normalization):

  • 批归一化是在每个批次(batch)的数据上进行归一化操作。
  • 它的计算是基于每个特征在整个批次中的均值和方差进行的。
  • 在训练过程中,批归一化可以减少内部协变量偏移(Internal Covariate Shift),有助于加速收敛并提高模型的泛化能力。
  • 在卷积神经网络中,批归一化通常应用在卷积操作后、激活函数之前。

层归一化(Layer Normalization)

  • 层归一化是在每个样本的特征维度上进行归一化操作。
  • 它的计算是基于每个样本在同一层内的特征维度上的均值和方差进行的。
  • 与批归一化相比,层归一化更适用于循环神经网络(RNN)等没有明确批次维度的场景。
  • 层归一化可以减少样本间的依赖关系,有助于提高模型的鲁棒性和泛化能力。
  • 在循环神经网络中,层归一化通常应用在循环层的计算之后。

解码器

解码器(Decoder):解码器是Transformer模型的输出部分,负责根据编码器的表示生成输出序列。

解码器也是由多个相同的解码器层(Decoder Layer)堆叠而成。通过堆叠多个相同的解码器层,解码器可以逐步生成目标序列,并在每个解码器层中融合源语言序列的上下文信息和自身的上下文信息。
在这里插入图片描述

每个解码器层通常包含三个子层:

遮蔽多头注意力(Masked Multi-Head Attention):

  • 遮蔽多头注意力是解码器中的第一个组件。
  • 它类似于编码器中的自注意力层,但在解码器中应用了遮蔽操作。
  • 遮蔽多头注意力允许解码器在生成每个目标位置的预测时,只关注之前生成的位置,遮蔽掉后续位置的信息。
  • 它帮助解码器在生成目标序列时保持自回归的性质,确保生成的每个位置只依赖于之前已生成的部分。这样可以编码模型在生成当前位置时访问未来位置的信息。
遮蔽多头注意力的操作步骤:

在这里插入图片描述

1、输入:

  • 解码器的输入是来自上一层解码器的输出。
  • 输入包括查询(Query)向量、键(Key)向量和值(Value)向量。

2、掩码(Masking):

  • 在遮蔽多头注意力中,需要对注意力权重进行掩码操作。
  • 掩码矩阵的形状与注意力权重矩阵相同,其中需要遮蔽的位置被设置为一个很小的值或负无穷,以使得在softmax操作中相应位置的注意力权重趋近于零。
  • 掩码矩阵通常是一个上三角矩阵,确保当前位置只能依赖于之前已生成的部分。

3、注意力计算:

  • 对于遮蔽多头注意力,与常规的多头注意力计算类似,但是在计算注意力权重时,需要将掩码矩阵与注意力得分相乘,以实现遮蔽效果。
  • 注意力得分是通过查询向量和键向量之间的点积计算得到的。
  • 掩码矩阵的作用是将掩码位置对应的注意力得分置为负无穷,使得在softmax操作中对应的注意力权重趋近于零。
  • 最后,将掩码后的注意力权重与值向量相乘,得到加权和作为遮蔽多头注意力的输出。
举例

当将中文词组"计算机视觉"翻译成英文"computer vision"时,遮蔽多头注意力的作用就像是给解码器戴了一副眼罩。它确保解码器在翻译每个词的时候,只能看到之前已经翻译的词,而不能看到后面还没翻译的词。

在生成翻译结果的过程中,遮蔽多头注意力起到的作用如下:

  • 开始翻译时,解码器只知道第一个位置是一个特殊的开始标记。通过遮蔽多头注意力,它只能看到开始标记,而不知道后面还有什么内容。

  • 然后,解码器会生成第一个翻译结果的词,比如英文的"computer"。在生成这个词时,遮蔽多头注意力确保解码器只能看到开始标记,而不知道"视觉"这个词的存在。

  • 接着,解码器生成第二个翻译结果的词,比如英文的"vision"。在生成这个词时,遮蔽多头注意力仍然起作用,确保解码器只能看到开始标记和前面已生成的"computer",而不知道后面还有什么内容。

通过遮蔽多头注意力,解码器可以逐步生成正确的翻译结果,每一步只依赖于之前已经生成的部分。这样可以确保翻译结果的准确性和连贯性,避免未来信息对当前生成的影响。在这个例子中,遮蔽多头注意力确保了生成英文单词"computer"时不会受到中文词组"视觉"的影响,从而得到正确的翻译结果"computer vision"。

多头注意力(Multi-Head Attention):

多头注意力是解码器中的第二个组件。
它类似于编码器中的编码器-解码器注意力层,但没有遮蔽操作。
多头注意力允许解码器对编码器的输出进行注意力计算,以捕捉与当前解码位置相关的编码器信息。
它帮助解码器在生成每个目标位置的预测时,结合编码器的上下文信息,以更好地对输入序列进行对齐和建模。

前馈神经网络(Feed-Forward Network):

前馈神经网络是解码器中的最后一个组件。
它接收遮蔽多头注意力和多头注意力的输出,并通过一层或多层的全连接神经网络进行非线性变换。
前馈神经网络层有助于解码器对特定目标位置进行更深入的建模和预测,以生成最终的输出序列。

如何实现并行

在这里插入图片描述

在这里插入图片描述

编码器和解码器的堆叠

通过堆叠多个编码器层和解码器层,可以增加模型的表示能力和深度。

Encoder和Decoder是累加的形式,既然是累加的形式,则要求输入和输出保持一致。
在这里插入图片描述

编码器和解码器的联系

编码器和解码器之间存在辫子连接,主要体现在以下两个方面:

  • 编码器-解码器注意力机制(Encoder-Decoder Attention):在解码器的每个解码器层中,引入了编码器-解码器注意力机制。这个注意力机制使得解码器可以关注编码器的输出,从而将编码器的上下文信息引入到解码器的生成过程中。通过编码器-解码器注意力,解码器可以在生成目标序列的每个位置时,动态地关注与之对应的源语言序列的不同位置。这有助于解码器更好地利用编码器的信息,提高生成的准确性和一致性。

  • 编码器的输出作为解码器的输入:编码器的最后一层的输出被传递给解码器作为输入。这样,解码器在生成目标序列时可以直接访问编码器的表示和上下文信息。编码器的输出向解码器提供了一个初始的上下文向量,起到了引导解码器生成合理输出的作用。

在这里插入图片描述
因为编码器和解码器都是可堆叠的,所以旁边显示的是Nx。

原始论文:编解码器均为6层,即N=6

Transformer的位置编码

Transformer 模型中的位置编码(Positional Encoding)是为了在输入序列中引入位置信息,以帮助模型学习序列中的顺序和位置关系。由于 Transformer 模型没有像循环神经网络(RNN)那样的显式顺序处理机制,位置编码可以为模型提供序列中不同位置的信息。

位置编码通常是通过在输入序列的嵌入表示中添加一个表示位置的向量来实现的。

一种常用的位置编码方法是使用正弦和余弦函数。对于输入序列中的每个位置,使用以下公式计算位置编码向量:
在这里插入图片描述
公式:

PE ( p o s , 2 i ) = sin ⁡ ( p o s 1000 0 2 i / d model ) \text{{PE}}(pos, 2i) = \sin\left(\frac{{pos}}{{10000^{2i/d_{\text{{model}}}}}}\right) PE(pos,2i)=sin(100002i/dmodelpos)

PE ( p o s , 2 i + 1 ) = cos ⁡ ( p o s 1000 0 2 i / d model ) \text{{PE}}(pos, 2i+1) = \cos\left(\frac{{pos}}{{10000^{2i/d_{\text{{model}}}}}}\right) PE(pos,2i+1)=cos(100002i/dmodelpos)
其中, p o s pos pos 表示位置, i i i 表示维度索引, d model d_{\text{{model}}} dmodel 表示输入嵌入向量的维度。位置编码向量中的偶数索引位置使用正弦函数,奇数索引位置使用余弦函数。

通过这种方式,位置编码将不同位置的单词表示映射到不同的位置编码向量,使得模型能够通过位置编码来区分不同位置的单词。
在这里插入图片描述
在Transformer模型中,位置编码与词嵌入向量相加,成为模型的输入。这样,模型就能同时利用词嵌入的语义信息和位置编码的顺序信息来进行计算和建模,从而更好地处理序列数据。

Transformer的输入和输出

输入是:待翻译的句子+已翻译的词汇
假如待翻译的句子长度是L,则使用One-hot编码,是L个One-hot维度的向量。One-hot维度和字典长度有关系。然后经过Input Embeding(嵌入层),嵌入层会对其进行降维,降到我们使用的一个 d m o d e l = 512 d_{model}=512 dmodel=512的维度。

同样的,已翻译的词汇,加入个数是M个,使用One-hot编码,是M个One-hot维度的向量。然后经过Output Embeding(嵌入层),嵌入层会对其进行降维,降到我们使用的一个 d m o d e l = 512 d_{model}=512 dmodel=512的维度。

L和M不一定相同
在这里插入图片描述
输出:单词的概率

Transformer输入的嵌入

在这里插入图片描述

Transformer输出的嵌入

三级目录

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

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

相关文章

三、2023.9.29.C++面向对象.3

文章目录 33、简述一下什么是面向对象?34、简述一下面向对象的三大特征?35、简述一下 C 的重载和重写,以及它们的区别?36、说说 C 的重载和重写是如何实现的?37、说说构造函数有几种,分别什么作用?38、只定…

(二) gitblit用户使用教程

(一)gitblit安装教程 (二) gitblit用户使用教程 (三) gitblit管理员手册 目录 网页访问git客户端设置推送错误配置查看当前配置 日常使用仓库分组my profile修改上传代码简洁 网页访问 点击Advanced... 点击Accept the Risk and Contiue 初始用户名和密码都是admin,点击login…

使用SDKMAN在Linux系统上安装JDK

本文使用的Linux发行版为Rocky Linux 9.2,可以当做CentOS的平替产品。 SDKMAN是一个sdk包管理工具,通过自带的命令可以快速切换软件环境, 官网地址:https://sdkman.io/。 1、安装sdkman: # curl -s "https://ge…

1 论文笔记:Efficient Trajectory Similarity Computation with ContrastiveLearning

2022CIKM 1 intro 1.1 背景 轨迹相似度计算是轨迹分析任务(相似子轨迹搜索、轨迹预测和轨迹聚类)最基础的组件之一现有的关于轨迹相似度计算的研究主要可以分为两大类: 传统方法 DTW、EDR、EDwP等二次计算复杂度O(n^2)缺乏稳健性 会受到非…

【机器学习】训练集/验证集/测试集释疑

文章目录 序言1. 训练集、验证集、测试集是什么2. 为什么需要验证集3. 验证集是必须的吗4. 验证集和测试集上的表现会不同吗5. 如何从Train/Test Set划分Validation Set6. 训练集、验证集和测试集的比例怎么设置7. 模型表现不好时测试集可以反复使用来调整模型吗8. 训练集、验证…

设计模式6、适配器模式 Adapter

解释说明:将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作 目标接口(Target):当前系统所期待的接口,它可以是抽象类或接口 适配者(Adaptee)&#xff1a…

堆的介绍、堆的向上、 向下调整法与基本功能实现

💓博主csdn个人主页:小小unicorn ⏩专栏分类:数据结构 🚚代码仓库:小小unicorn的代码仓库🚚 🌹🌹🌹关注我带你学习编程知识 堆 二叉树的顺序结构堆的概念:堆的…

汽车电子——产品标准规范汇总和梳理(开发体系)

文章目录 前言 一、设计架构 二、安全可靠 三、测试验证 四、过程能力 五、质量管理 六、开发指南 总结 前言 见《汽车电子——产品标准规范汇总和梳理》 一、设计架构 《Autosar R22-11 汽车开放系统体系架构》 二、安全可靠 《GB/T 34590.1-2022(ISO 262…

零代码编程:用ChatGPT批量自动下载archive.org上的音频书

http://archive.org 是一个神奇的网站,可以下载各种古旧的软件、书籍、音频、视频,还可以搜索各个网站的历史网页。 比如说,一些儿童故事音频就可以在http://archive.org下载到,可以用来做英语听力启蒙用。 举个例子&#xff0c…

【开发篇】四、数据源、JdbcTemplate、内嵌H2

文章目录 1、数据源DataSource2、SpringBoot的内嵌数据源对象3、Spring的内置持久化方案JdbcTemplate4、SpringBoot内嵌数据库5、内嵌数据库H2的访问 1、数据源DataSource 了解数据源这个概念前,先看下原生JDBC的基本步骤: Connection conn null; State…

【JVM】双亲委派模型

双亲委派模型 1. 什么是双亲委派模型2. 双亲委派模型的优点 1. 什么是双亲委派模型 提到 类加载 机制,不得不提的一个概念就是“双亲委派模型”。 双亲委派模型指的就是 JVM 中的类加载器如何根据类的全限定名找到 .class 文件的过程 类加载器: JVM 里面专门提供…

坠落防护 挂点装置

声明 本文是学习GB 30862-2014 坠落防护 挂点装置. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了高处坠落防护挂点装置的技术要求、检验方法、检验规则及标识。 本标准适用于防护高处坠落的挂点装置。 本标准不适用于体育及消…

【C++】unordered_set与unordered_map的封装

🌇个人主页:平凡的小苏 📚学习格言:命运给你一个低的起点,是想看你精彩的翻盘,而不是让你自甘堕落,脚下的路虽然难走,但我还能走,比起向阳而生,我更想尝试逆风…

Java | Maven(知识点查询)

文章目录 Maven知识速查1. Maven概述2. Maven的作用3. Maven的下载4. Maven的环境配置5. Maven 的基础组成5.1 Maven仓库5.1.1 本地仓库配置:5.1.2 中央仓库配置:5.1.3 镜像仓库配置 5.2 Maven坐标 6. Maven项目6.1 手工创建Maven项目6.2 自动构建项目 7…

7、Docker网络

docker网络模式能干嘛? 容器间的互联和通信以及端口映射 容器IP变动时候可以通过服务名直接网络通信而不受到影响 docker 网络模式采用的是桥接模式,当我们创建了一个容器后docker网络就会帮我们创建一个虚拟网卡,这个虚拟网卡和我们的容器网…

火热报名中 | 2天峰会、20+热门议题,AutoESG 2023数智低碳---中国汽车碳管理创新峰会亮点抢先看!

在碳中和的背景下,减碳之风吹遍全球,而汽车行业则由于产业链长、辐射面广、碳排放总量增长快、单车碳强度高的特点,成为各国碳排放管理的监管重点,聚焦汽车业的碳博弈也逐步升级。 2020年,国务院办公厅印发的《新能源…

Linux高级应用——web网站服务(2)

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号:网络豆云计算学堂 座右铭:低头赶路,敬事如仪 个人主页: 网络豆的主页​​​​​ 目录 前言 一. httpd服务访问控制概述 1.为什么要…

用友U8 CRM客户关系管理任意文件上传漏洞复现【附POC】

文章目录 用友U8 CRM客户关系管理任意文件上传漏洞复现0x01 前言0x02 漏洞描述0x03 影响平台0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现4.访问shell地址 0x06 整改建议 用友U8 CRM客户关系管理任意文件上传漏洞复现 0x01 前言 免责声明:请勿利用文…

牛客 ( 计算几何

#include <bits/stdc.h> using namespace std; using ll long long; using PII pair<double , double>; int n; PII p[3000010]; vector<PII> pp; PII yuan(PII a , PII b , PII c) {//已知三个点确定圆的半径和圆心double x1 a.first,x2 b.first,x3 c.…