首页 > 其他分享 >Transformer模型-7- Decoder

Transformer模型-7- Decoder

时间:2024-09-21 11:54:55浏览次数:11  
标签:输出 Transformer AI 模型 Attention Encoder Decoder 输入

概述

image.png

Decoder也是N=6层堆叠的结构,每层被分3层: 两个注意力层和前馈网络层,同Encoder一样在主层后都加有Add&Norm,负责残差连接和归一化操作。

Encoder与Decoder有三大主要的不同

  1. 第一层 Masked Multi-Head Attention: 采用Masked操作
  2. 第二层 Multi-Head Attention: K, V矩阵是使用Encoder编码信息矩阵C进行计算,而Q使用上一个Decoder的输出计算。
  3. 概率计算输出: Linear和Softmax作用于前向网络层的输出后面,来预测对应的word的probabilities

Encoder的输入矩阵用X表示,输出矩阵用C表示

流程图表示如下:

Positional Encoding特征值Output Embedding带掩码的多头注意力层多头注意力层前馈网络层Add&NormLinearSoftmaxOutputProbilities

分析如下:

  1. 我们将 输入转换为嵌入矩阵,再加上位置编码,输入解码器
  2. 解码器收到输入,将其发送给带掩码的多头注意力层,生成注意力矩阵M
  3. 将注意力矩阵M和Encoder输出的特征值R作为多头注意力层的输入,输出第二层注意力矩阵
  4. 从第二层的多头注意力层得到注意力矩阵,送入前馈网络层,后者将解码后的特征作为输出
  5. 前馈网络层的输出经过Add&Norm后,做linear及Softmax回归,并输出目标句子的特征

Decoder 的输入

Decoder的输入结构与encoder的一样。

Transformer模型-4-Inputs-笔记

Masked Multi-Head Attention

输入组成


由如下几个部分组成

1.初始输入:前一时刻Decoder输入+前一时刻Decoder的预测结果 + Positional Encoding
3.中间输入:Encoder Embedding
4.Shifted Right:在输出前添加 起始符(Begin),方便预测第一个Token

Shifted Right是在起始位添加起始符(Begin),让整个输入向后移一位,是为了在T-1时刻需要预测T时刻的输出。

举例: I like eat hamburg

正常的输出序列位置关系如下:

1  0:"I"
2  1:"like"
3  2:"eat"
4  3: "hamburg"

在执行的过程中,我们在初始输出中添加了起始符,相当于将输出整体右移一位(Shifted Right),所以输出序列如下:

1  0: </s> #起始符
2  1: "I"
3  2: "like"
4  3: "eat"
5  4: "hamburg"

这样我们就可以通过起始符预测“I”,也就是通过起始符预测实际的第一个输出。

具体步骤

Time Step 1

  • 初始输入: 起始符 + Positional Encoding
  • 中间输入:(我爱吃汉堡)Encoder Embedding
  • Decoder: 产生预测I

Time Step 2

  • 初始输入:起始符 + I + Positonal Encoding
  • 中间输入:(我爱吃汉堡)Encoder Embedding
  • Decoder:产生预测like

Time Step 3

  • 初始输入:起始符 + I + like + Positonal Encoding
  • 中间输入:(我爱吃汉堡) Encoder Embedding
  • Decoder:产生预测eat

Time Step 4

  • 初始输入:起始符 + I + like + eat + Positonal Encoding
  • 中间输入:(我爱吃汉堡) Encoder Embedding
  • Decoder:产生预测hamburg

Masked


主要用途

  1. 引入类对焦矩阵,实现并行解码加速整个训练过程;
  2. 在生成attention时保存信息不泄露(没有生成不该生成的数据)

Masked的工作方式: 以"I like eat hamburg"说明

  1. Masked Multi-Head Attention层:在生成I时不能看到Like、eat、hambugers更不能生成他们之间的相关度信息,解码时只能看到自己或<起始符>,后面的信息都隐掉,即masked

image.png

上图表示:输入矩阵 + Mask = Mask矩阵

图中黑色框表示被Mask的部分

  1. Multi-Head Attention则是把Encoder信息与Decoder信息进行整合

image.png

并行化处理-原因分析

早在Seq2Seq模型采用的是逐步Decoder,在Encoder时一次性输入全部数据,生成第一个字时,会先结合 <起始符> ,再生成;然后用生成第二个字符时 由第一个字符再结合起始符达成,以此类推,整个过程是串行化的过程

而在大规模的模型训练过程中,解决效率的的关键就是把串行计算改为计算(并行解码) ,即一次性输入,一次性解码。当一次性将信息全部输入,模型一次计算可能会计算所有数据。但并行会影响到结果输出 —— 因为计算时如数据全可见,会对预测会有影响,而加入了Masked是可以避免数据泄露的。我们输入时还是一次性输入全部数据,在Attention时追加一个Masked保证一个字符只能看到前一个字或起始符。

公式推导

1.得到Q,K,V: 输入数据:I like eat hamburg,进行三次线性变化,得到Q,K,V。

image.png

2.Masked计算:当Q∗K=QKTQK=QKT得到相当度信息后,再和Masked矩阵做按位相乘得到masked QKTQKT 。Masked保存此次解码只看到该看到的,隐去看不到的或不应该看到的。

image.png

3.得到Attention(Q,K,V)公式:拿到softmax(QKTdk)softmax(dkQKT) 结果后再和 V(value) 做一次 Attention计算得到Attention(Q,K,V)

image.png

公式:

Attention(Q,K,V)=softmax(QKTdk)∗V*A**tt**e**n**t**i**o**n*(*Q*,*K*,*V*)=*so**f**t**ma**x*(*d**k**Q**K**T*)∗*V*

Multi-Head Attention

也称 Cross Multi-Head Attention 即是结合Encoder与Encoder而得到的信息,获取整合的Attention(Q,K,V),其中数据获取来源分为:

Q: 由masked Multi-head Attention输出,再经过Add&Norm后得到的数据
K\V: 是Encoder输入出经过两次线性变化的而得数据,其中的3/4分给了Multi-Head Attention

最后 将所有的Q (Decoder端所有的 token) 去和encoder的输出的数据一起计算,来衡量他们之间的相关度,最后结合Value生成Attention。

Decoder -输出

transformer的output probabilities,从字面上我们即可理解transformer的输出token是由各个词的概率计算而得。

原理: 数据经过 (cross) multi-head Attention及线性变化之后,输出softmax,最后输出数据,输出则是每个位置上单词的概率分布

结构分析

在这里插入图片描述

用softmax预测输出单词


用Softmax来预测下一个单词,通过之前的各种操作后得到一个最终输出Z来预测单词:

image.png

又因为Mask,使得单词的输出Z0只包含<起始符>的信息,如下:

起止符这里用begin表示

image.png

先贴个图,后面随着笔者对其学习研究的加强会补充更多的内容,现在主要是想强调输出是由概率计算而得,加深印象。


如果您也对AI大模型感兴趣想学习却苦于没有方向

标签:输出,Transformer,AI,模型,Attention,Encoder,Decoder,输入
From: https://blog.csdn.net/aidashuju/article/details/142414124

相关文章

  • ROS和ROS2借助智能大模型的学习和研究方法
    机器人相关知识的本身和价值-CSDN博客知识本身在智能时代毫无价值,需要基于知识应用和创新才有价值。 学历报废并非来自扩招,而是智能模型的快速发展。-CSDNblink-领先的开发者技术社区 2024年中秋,智能模型实力已经如此,但还有大量朋友笃定旧模-CSDNblink-领先的开发者技......
  • 窗口管理(Stage模型)
    基本概念窗口沉浸式能力:指对状态栏、导航栏等系统窗口进行控制,减少状态栏导航栏等系统界面的突兀感,从而使用户获得最佳体验的能力。沉浸式能力只在应用主窗口作为全屏窗口时生效。通常情况下,应用子窗口(弹窗、悬浮窗口等辅助窗口)无法使用沉浸式能力。悬浮窗:全局悬浮窗口是一种......
  • 前端开发转行AI大模型?应该如何准备面试?面试题+答案来了!!!
    一、初探大模型:起源与发展1、预热篇:解码注意力机制1.1注意力机制最早是在哪个领域得到应用的1.2以下哪些方法被用于处理序列数据?1.3以下方法被用于处理序列数据的是1.4注意力机制是什么2、变革里程碑:transformer的崛起2.1Transformer模型和注意力机制的关系2.......
  • fastsam_pytorch图像分割算法模型
    FastSAM论文FastSegmentAnything模型结构以yolov8-seg的instancesegmentation为基础,检测时集成instancesegmentation分支,主要分为两步全实例分割(allinstanceSegmentation)和基于prompt的mask输出(Prompt-guidedSelection),仅使用了2%的SA-1B数据集便得到了差不多的......
  • asr_onnxruntime语音识别模型,实现speech-to-text的转换
    asr_onnx论文无模型结构算法原理数据集无环境配置在光源可拉取推理的docker镜像,在光合开发者社区可下载onnxruntime安装包。asr_onnx推荐的镜像如下:dockerpullimage.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-ubuntu20.04-dtk24.04.1-py3.10cdasr_onn......
  • 面试面经|大模型算法岗常见面试题100道
    本文提供了一份全面的大模型算法岗位面试题清单,包括基础理论、模型结构、训练微调策略、应用框架、分布式训练和模型推理等方面的知识点,旨在帮助求职者准备相关技术面试。一、基础篇1、目前主流的开源模型体系有哪些?Transformer体系:由Google提出的Transformer模型及其......
  • 仅仅449页,学透大模型技术—《自然语言处理:大模型理论与实践》NLP
    《自然语言处理:大模型理论与实践》是一本由赵宇教授和任福继教授主编的书籍,专注于自然语言处理(NLP)技术,尤其是在大模型技术方面的理论与实践。这本书详细介绍了大模型技术在自然语言处理中的应用,包括语言模型的基础知识、大模型的关键技术,以及如何在实际中应用这些模型。......
  • 图像生成大模型imagen
    图像生成大模型Imagen是谷歌推出的一款强大的文生图模型。以下是关于它的一些主要信息: 1. 工作原理:-文本编码:使用一个大的冻结(frozen)T5-XXL编码器将输入的文本描述编码为嵌入。T5-XXL编码器是在纯文本语料中进行预训练的大型语言模型,含有大量的文本知识,能够很好地理解......
  • 三维模型,不要只说轻量化
    一拿到三维模型,“各路神仙”都会要求先进行轻量化。但我发现很多人其实对轻量化的目的,及应用场景是没有概念的。因此本文以我自己数据处理的角度,来说说三维模型要加载到渲染平台,围绕轻量化方面,它该做什么,不该做什么。1、三维模型为啥会卡三维模型就是一个文件,文件大了自然卡......
  • 0915,SOCKET网络编程部分,三种I/O多路复用模型(select ,poll,epoll)
    目录  nc127.0.0.1port01_socket_client.cc01_socket_server.cc02_select_client.cc02_select_server.cc03_poll_server.cc04_epoll_server.cc01_socket_client.cc#include<stdlib.h>#include<string.h>#include<sys/stat.h>#include<sy......