首页 > 其他分享 >8.Transformer模型

8.Transformer模型

时间:2023-10-23 18:55:05浏览次数:38  
标签:输出 Transformer 模型 归一化 encoder decoder 注意力 输入

1- Transformer模型是什么

Transformer模型是一个基于多头自注意力的序列到序列模型(seq2seq model),整个网络结构可以分为编码器(encoder)和解码器(decoder)两部分。seq2seq模型输出序列的长度是不确定的。我们输入一个sequence后,先由encoder负责处理,再把处理好的结果输入到decoder中,由decoder决定最后输出什么样的sequence。Transformer的完整结构如下图所示:

2- 编码器Encoder

2.1- encoder的输入输出

上图中左侧就是encoder部分, 由图中可以看出它里面有N个blocks, 每个block会输入一排向量, 然后输出一排向量作为下一个block的输入; 在每个block中, 输入会先经过一个自注意力层, 然后再通过一个全连接层之后输出;

2.2- Block中的自注意力层

encoder中自注意力层的输出和之前说过的有一些区别; 它应用了像Resnet模型那样的残差计算, 自注意力层计算出的结果会再加上原来的输入作为最终的输出, 这就是图中Add的含义; 之后我们再对输出进行一次归一化(normalization), 不过这里用的是不是之前用过的批量归一化(Batch Normalization), 而是层归一化(Layer Normalization);
对了, 观察图中可以发现这里用的就是多头注意力机制;

2.2.1- 批量归一化和层归一化

批量归一化我在之前卷积神经网络已经说过了, 所以这里只说说层归一化和批量归一化不同的点在哪;
批量归一化是在一批数据中, 对每个特征维度独立地进行归一化; 例如对于一个图像, 它的特征可能有颜色, 形状等; 这批数据的每个特征的均值都是0, 方差都是1; 而层归一化则是对针对单个数据, 对这个数据的所有特征进行归一化, 也就是让每个数据的所有特征均值为0, 方差为1;
直观来说, 我们可以想象一个立方体, 它有三个维度, x轴是一个批量的数据, y轴是特征, z轴是一个数据的值; 左图表示批量归一化, 他对一个批量的数据操作, 并且每次只选一个特征; 右图表示层归一化, 它每次只对一个数据操作, 每次选择全部特征;

2.3- Block中的全连接层

经过层归一化后得到的输出会再经过一个全连接层, 并且全连接层的后面也会进行残差计算和层归一化; 之后就得到了当前block的输出;

3- 解码器Decoder

3.1- decoder的输入输出

以语音识别为例, 我们输入一段声音给encoder, 然后输出一排向量, decoder读入这一排向量后输出文字; 在生成文字过程中, 我们首先会向decoder中输入一个特殊向量BEGIN, 表示进程的开始, 经过一系列处理后会输出一个向量, 在最开始的时候我们还会设置一个数据库, 里面有n个文字用于输出, 这个向量的长度就是n, 我们让这个向量通过一个softmax函数, 这样就得到了所有文字可能的概率, 输出其中概率最大的文字, 这就是图中的'机'; 接下来我们会把'机'也作为输入进行下一个文字的识别, 也就是说此时有BEGIN和'机'两个输入, 越到后面参与运算的输入越多;

那为什么要这样操作呢, 就像我在文章最开始说的, decoder的输出长度是不确定的(下图有四个输出完全是偶然), 完全由机器自己决定, 他需要不断根据语义和上文来进行调整, 如果我们像encoder那样一下子把所有输入都读进去, 那么decoder就无法根据生成过程中的反馈来调整自己的输出,可能会导致语法错误或语义不通; 但是这样decoder可能会永远都不会停下来; 所以我们要在数据库中准备一个特殊的符号END, 一般把它和BEGIN设为同一个符号, 当输出END时就可以停止了;

3.2- Block中的Masked Self-attention层

在decoder的block中第一个层是一个masked self-attention层; 自注意力层的每个输出都是和所有输入相关联的, 而标记自注意力层的第i个输出只和前i个输入有关; 这正是因为我上面所讲的, 当你处理第i个信息时, 我们只把前i个信息作为输入, 后面的还没给他读进去;

3.3- Block中的交叉注意力层(Cross-attention)

encoder的所有输出ai都会产生键ki和值vi, 经过标记自注意力层得到的输出会产生查询q, 该查询会和encoder的所有键运算得到注意力权重αi, 然后再和值运算得到最终的输出; 这个过程和自注意力是相似的;

下一个block也是进行相同的运算;

标签:输出,Transformer,模型,归一化,encoder,decoder,注意力,输入
From: https://www.cnblogs.com/mostimali/p/17783208.html

相关文章

  • diffusion扩散模型\datawhale组队学习——v3先运行一半
    今天我们一起学习如何对模型微调和引导。微调,用原模型,跑新数据,得到新输出。引导,引导生成过程,改变输出结果。 作者之前用过sd模型,不同的采样方法在不同的采样步数下有不同的效果。首先采样步数并非越高越好或越低越好,有一个最佳使用区间,其次,不同采样方法有自己不同的最佳采样......
  • pytorch(10.5) Transformer 用到视觉模块
    ViT|VisionTransformer|理论+代码_哔哩哔哩_bilibili   1不用卷积神经网络那些东西(CNN)了全部用Transforme 。2大规模数据训练,小规模数据应用。3效果相当计算训练资源更少。 转换思想224*224像素图像-单个像素(视为一个词token)-16*16个像素图像块patches(......
  • langchain中的LLM模型使用介绍
    简介构建在大语言模型基础上的应用通常有两种,第一种叫做textcompletion,也就是一问一答的模式,输入是text,输出也是text。这种模型下应用并不会记忆之前的问题内容,每一个问题都是最新的。通常用来做知识库。还有一种是类似聊天机器人这种会话模式,也叫Chatmodels。这种模式下输入是......
  • Transformer王者归来!无需修改任何模块,时序预测全面领先
    前言 最近,来自清华大学和蚂蚁集团的研究人员重新审视Transformer结构在时序分析中的应用,提出一个全新的反转视角——无需修改任何模块,即可实现Transformer在时序预测任务上的全面领先!本文转载自新智元仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉......
  • 倾斜摄影三维模型根节点合并技术方法探讨
    倾斜摄影三维模型根节点合并技术方法探讨 倾斜摄影技术是一种通过无人机或其他航空器采集大量高分辨率照片,并使用特殊软件将这些照片拼接成三维模型的方法。在这个过程中,摄影机以倾斜角度拍摄照片,从而捕捉到目标物体的多个视角,从而实现更精细和真实的建模效果。在创建倾斜摄......
  • 昇腾CANN 7.0 黑科技:大模型训练性能优化之道
    本文分享自华为云社区《昇腾CANN7.0黑科技:大模型训练性能优化之道》,作者:昇腾CANN。目前,大模型凭借超强的学习能力,已经在搜索、推荐、智能交互、AIGC、生产流程变革、产业提效等场景表现出巨大的潜力。大模型经过海量数据的预训练,通常具有良好的通用性和泛化性。用户基于“大......
  • 综述推荐:视觉计算中的扩散模型
    StateoftheArtonDiffusionModelsforVisualComputinghttps://arxiv.org/pdf/2310.07204v1.pdf视觉计算(VisualComputing)领域,正因生成式人工智能(AI)的出现而快速发展,这为图像、视频和3D场景的生成、编辑和重建打开了前所未有的能力。这些领域中,扩散模型是生成式人工智能架构......
  • 大模型:机器学习的崭新时代
    原创|文BFT机器人在机器学习领域,随着计算能力和数据规模的不断增长,大模型成为一种引人注目的技术。这些具有大规模参数和参数量的机器学习模型正在改变着我们对于人工智能的认识,大模型的出现使得机器学习模型能够处理更复杂的任务,取得更准确和复杂的预测结果。PART01大模型的概......
  • qemu和vscode调试uboot及设备模型数据流分析
    一,前言对于通用的流程,我需要形成闭环的代码理解,验证我理解的准确性。于是我选择用调试的方法来看数据流,用qemu来仿真,vsocde来调试,但是不能仿真am335。所以用了qemu支持仿真的v9。二,过程记录1,编译ubootmakeARCH=armCROSS_COMPILE=arm-linux-gnueabihf-distcleanrm-rf./v9make......
  • osi七层模型与TCP/IP四层模型
    一.osi七层模型:1.应用层​ 最上层的,也是我们能直接接触到的就是应用层(ApplicationLayer),我们电脑或手机使用的应用软件都是在应用层实现。那么,当两个不同设备的应用需要通信的时候,应用就把应用数据传给下一层,也就是传输层。​ 所以,应用层只需要专注于为用户提供应用功能,比如H......