首页 > 其他分享 >Transformer网络架构

Transformer网络架构

时间:2024-09-01 17:52:10浏览次数:11  
标签:编码 Transformer 架构 模型 语义 编码器 网络 解码器 向量

只有理解了,才能在超越经验的情况下,生成出合理的内容

编解码

image-20240725184248195

encoder-decoder结构

  • 什么是“码”?

剥离形式的表示(各种语言的不同),剩下的语义关系(上下文语义)

  • “码”的要求:1、数字化 2、语义关系的距离

分词器和one-hot编码在2不足

需要找到一个纬度高,但是又没那么高的空间(潜空间),去协助完成编解码的工作

思路:对one-hot编码进行降维

  • 矩阵和空间变换

image-20240725230444761

  • word2vec(解决单个词,单个token语义的问题)

训练出体现语义的嵌入矩阵

image-20240725232737080

W将one-hot编码投射到潜空间,W' 将潜空间中的词向量还原成one-hot码

attention机制

word2vec解决了单个词,单个token语义的问题。注意力机制要解决的是许多词组合在一起后,整体体现出来的语义

image-20240725233609667

“美女”在不同情况下:(1)美女,加个微信吧。 (2)美女,麻烦让一下。

注意力机制需要解决的就是要识别出因为上下文关联而对词典(word2vec)中原本客观的语义进行调整和改变的幅度。

看A'V

  • V表示从词典中查出来的token的客观语义
  • A'表示因为上下文关联而产生的修改系数

为什么A'就能表示因为上下文关联而产生的修改系数

image-20240725235832075

Q和K相乘得到的A是输入的这一组词向量自己和自己之间的相互关系

A'(经过softmax归一后)和V相乘是用这个相互关系来修正V的词向量

为什么要有Q和K两个矩阵?为什么不能用一个矩阵训练?

二次型

image-20240726000238197

“概率论难”的评论——评论者的语义理解和视频制作者的设定语义出现差别

理解:让q和k能够承担设定语义(为下文做铺垫的语义)表达语义(基于上文的语义表达)两部分的功能

解码器如何解决seq2seq问题?

对于翻译问题,如何实现中文编码后解码出来的英语单词向量维度不同的问题

方法:生成(解码)的时候,一个一个地生成(利用RNN的思路)

image-20240726002441132

postional encoding

postional encoding的作用?

保证输入的一组词向量在并行计算的同时还能保证他们的先后顺序

使用了绝对位置编码(针对数据进行修饰,直接让数据携带了位置信息)

image-20240726111926802

image-20240726113013489

Multi-Head Self-Attention

image-20240726114140428

image-20240726114409921

多头注意力能够识别出跨语段的语义,而不仅仅局限于周围

Appendix

  • 从概率角度理解除以根号dk

把数据根据他们的相对关系进行归一

image-20240725234512248

  • (self)attention、transformer其他版本

1.1 注意力机制

一维情况:

image-20240725213354190

二维情况:

image-20240725213852763

以点积模型为例

image-20240725213920515

image-20240725213924219

image-20240725214100457

1.2 自注意力机制

Q、K、V都为X时

image-20240725214252347

1.3 Transformer模型

先对X做不同的线性变换(三个W矩阵)再 输入

image-20240725214322517

  • 相对位置编码

绝对位置编码直接让数据携带信息,而相对位置编码让注意力得分A矩阵增加位置信息

image-20240726113502797

  • Auto Encoder(自编码器)

“自”的意思:自己训练自己

image-20240725183042620

能够把输入进行过滤,进行特征提取,通过重建图像和原始图像的损失进行训练

image-20240725183159674

  • Variational Auto Encoder(变分自编码器)

Auto:不再把输入映射到固定的变量上,而是映射到一个分布上(比如混合高斯GMM)

image-20240725183350857

image-20240725183407603

KL散度,描述学习的分布和高斯分布之间的相似性

“将一个字符串拆散了再重组”

attention机制

核心思想:通过加权求和解决context的理解,本质上就是在不同的上下文下专注不同的信息。

  • RNN结构

image-20240725154830808

  • encoder-decoder模型

两个RNN组合,形成encoder-decoder模型

先对一句话编码,再解码,从而实现机器翻译

image-20240725155055346

缺陷:但是统一压缩成相同长度的编码c的做法,会导致翻译精度下降

  • attention

通过每个时间,输入不同的c解决encoder-decoder问题

image-20240725153612027

image-20240725153514983

通过attention的引入,打破了只能利用encoder形成单一向量的限制。attention让每一时刻,模型都能动态地看到全局信息。

缺陷:依然还存在RNN的时序依赖

  • self-attention

既然模型本身已经对全部输入进行了打分,所以去除RNN中的时序依赖

image-20240725154023575

encoder编码阶段,利用attention机制计算每个单词与其他所有单词之间的关联

image-20240725155625937

加入前馈神经网络

image-20240725154244163

decoder不仅看之前产生的输出,也要看encoder产生的输出

image-20240725155937906

transformer

1、基础知识

1、总体架构图

依靠self-attention

image-20240725180111735

attention(Q, K, V):

Q来自于前一个解码器层,K、V来自于编码器的输出

image-20240725185601702

编码器处理输入向量,将输出转化为attention向量K和V,

解码器解码阶段,即考虑K、V,又考虑与其他向量的关系

2、左侧

image-20240725190028776

  • 使用算法将单词向量化
  • 嵌入位置信息,变成统一长度(底下绿色的向量)
  • encoder将绿色作为输入,通过前馈网络发送到下一个编码器

image-20240725190514917

self-attention计算公式:

image-20240725180353266

效果:和X相比,Z中掺入了上下文信息

image-20240725180742880

  • 线性层和softmax层将输出向量转化为单词

image-20240725180925614

参考:

[1] https://www.bilibili.com/video/BV1XH4y1T76e/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=0bc656b59467691987b3a096498b7112 " 编解码、词嵌入"
[2] https://www.bilibili.com/video/BV1dt4y1J7ov/ " 注意力QKV矩阵运算"

个人想法

中译英翻译模型

Transformer训练翻译模型时候(比如中译英),训练过程是先将中文的通过Transformer架构中的编码器部分进行编码,将各个token映射到潜在向量空间,与此同时将平行英文译文在Transformer架构中的编码器部分(实际上也包含了编码器部分)先进行编码,然后将二者的token同时送入多头注意力机制模块部分进行训练,通过反向传播调整来使Transformer架构中的编码器部分的参数矩阵和Transformer架构中的编码器部分的前半部分(也实际上是编码器)的参数矩阵的系数改变,使得前者对中文编码后和后者对英文编码后得到的潜在向量空间相一致。这样训练出来的模型使用编码器对要翻译的整个中文语段进行编码,然后英文根据已经生成的译文进行编码,通过计算差异,推测出英文接下来要生成什么词添加到译文中,可以使得在相同的潜在向量空间中的中文语段向量和已经生成的译文的英文语段向量更接近,从而实现自回归生成英文译文,并且保持了语义的高度一致。

  1. 编码器和解码器的作用:在Transformer模型中,编码器负责处理输入序列(在这个例子中是中文句子),而解码器负责生成输出序列(英文句子)。编码器将输入序列的每个token转换为一系列的潜在向量,这些向量捕捉了token的语义信息以及它们之间的关系。
  2. 多头注意力机制:编码器和解码器都使用了多头注意力机制,这使得模型能够在处理序列时考虑到不同位置的信息。在解码器中,还有一个特殊的注意力机制,称为“编码器-解码器注意力”(也就是交叉注意力),它允许解码器注意输入序列(中文句子)的相关部分,以便更好地生成输出序列(英文句子)。
  3. 训练过程:在训练过程中,模型会接收到中文句子和对应的英文翻译。中文句子首先通过编码器进行编码,而英文翻译则同时通过编码器和解码器进行处理。模型的目标是最大化正确翻译的概率,这是通过最小化预测英文单词与实际英文单词之间的损失函数(如交叉熵损失)来实现的。
  4. 反向传播和参数更新:通过反向传播算法,模型根据损失函数的梯度来更新其参数(包括编码器和解码器中的权重矩阵)。这个过程会不断重复,直到模型收敛到一个最小化损失的点。
  5. 自回归生成:在推理阶段(即模型部署使用时),模型会逐个生成英文单词。解码器会根据已经生成的英文单词和编码器的输出来预测下一个单词,这个过程是自回归的,因为每个新生成的单词都会影响到后续单词的生成。
  6. 潜在向量空间的一致性:训练的目标是使得模型能够学习到一个一致的潜在向量空间,在这个空间中,语义上相似的中文和英文句子被映射到相近的向量。这样,模型就能够基于中文句子的编码来推测出合适的英文翻译。

自动补全模型

编码器

在自动补全模型中,编码器的任务是将用户输入的前缀转换成一个高维的潜在表示。这个潜在表示捕捉了前缀的语义信息,使得模型能够理解输入的上下文。编码器通过自注意力机制处理输入序列,这样每个位置的输出都能够考虑到整个输入序列的信息。

解码器

解码器负责生成补全选项。在训练阶段,解码器接收编码器的输出作为上下文信息,并使用自回归的方式生成一系列可能的补全选项。解码器同样使用自注意力机制来关注输入序列的不同部分,并且使用编码器-解码器注意力来确保生成的序列与输入序列的相关部分保持一致。

训练数据

在训练自动补全模型时,我们需要一个包含输入前缀对应补全选项的数据集。每个训练样本通常包含一个输入前缀和一个或多个正确的补全选项。

  1. 编码输入前缀:将输入前缀通过编码器进行编码,得到一个或多个潜在向量,这些向量代表了输入前缀的语义信息。
  2. 初始化解码器状态:解码器的初始状态通常设置为编码器输出的最后一个隐藏状态,这样解码器就能够利用整个输入前缀的信息。
  3. 生成补全选项:解码器开始生成补全选项。在每个时间步,解码器会根据之前的输出和编码器的上下文信息来预测下一个单词或字符。
  4. 计算损失:对于每个生成的补全选项,计算其与实际补全选项之间的损失。这个损失通常是交叉熵损失,它衡量模型预测的概率分布与实际标签的匹配程度。
  5. 反向传播和参数更新:根据计算出的损失,使用反向传播算法来更新模型的参数,以减少损失并提高模型的预测准确性。
  6. 迭代训练:重复上述步骤,直到模型在训练数据上的表现达到满意的水平。

预测过程

在模型训练完成后,当用户输入一个前缀时,模型会使用相同的编码器和解码器结构来生成补全选项。解码器会根据输入前缀的编码和已经生成的单词来预测下一个最可能的单词或字符。

编码器:他是谁

Transformer:整个场景表达了怎样的语义,(他是否满足这个语义,他在这个语义场景中扮演什么)

long long ago, .....

标签:编码,Transformer,架构,模型,语义,编码器,网络,解码器,向量
From: https://www.cnblogs.com/sherioc/p/18391533

相关文章

  • LSTM(Long Short-Term Memory,长短期记忆网络)介绍
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满。学成后可......
  • 【网络基础知识】判断证书私钥格式
    原创小何运维笔记要判断证书私钥的格式,可以采取以下步骤:查看文件扩展名:文件扩展名可以提供一些线索:.pem:PEM格式,通常是Base64编码的,可以包含多种类型的密钥或证书。.key:通常是私钥文件,可能是PEM或其他格式。.der:DER格式,通常是二进制编码,不易用文本编辑器直接查看。.pfx......
  • 系统架构师(每日一练25)
    每日一练1.在客户机/服务器系统开发中,采用()时,应将数据层和数据处理层放置于服务器,应用逻辑层、表示逻辑层和表示层放置于客户机。答案与解析A.分布式表示结构B.分布式应用结构C.分布式数据和应用结构D.分布式数据结构2.软件的横向重用是指重用不同应用领域中的软件......
  • 什么时候用微服务或者单体架构
    1.微服务和单体架构微服务架构是一种面向服务的架构风格,它将大型复杂的软件应用拆分为一组独立部署的轻量级服务。这些服务通常围绕业务功能构建,可以独立开发、部署、运行,并通过定义良好的接口进行通信。为什么会出现微服务架构微服务架构的出现主要是为了应对大型应用的复......
  • 【GRNN-RBFNN-ILC算法】【轨迹跟踪】基于神经网络的迭代学习控制用于未知SISO非线性系
     ......
  • 【GRNN-RBFNN-ILC算法】【轨迹跟踪】基于神经网络的迭代学习控制用于未知SISO非线性系
     ......
  • 240727 深度神经网络
    红色是实际数据,绿色是预测的点误差图#-*-coding:utf-8-*-importneurolabasnlimportnumpyasnpimportmatplotlib.pyplotasplt#生成数据min_value=-12max_value=12num_datapoints=90x=np.linspace(min_value,max_value,num_datapoints)y=2......
  • 基于cnn卷积神经网络的yolov8动物姿态估计识别(训练+代码)
    往期热门博客项目回顾:计算机视觉项目大集合改进的yolo目标检测-测距测速路径规划算法图像去雨去雾+目标检测+测距项目交通标志识别项目yolo系列-重磅yolov9界面-最新的yolo姿态识别-3d姿态识别深度学习小白学习路线基于CNN(卷积神经网络)的YOLOv8模型在动物姿态......
  • 嵌入式全栈开发学习笔记---Linux网络编程(面试/开发重点)
    目录网络概述Linux网络基础网络模型TCP/IP协议族体系结构数据封装TCP协议TCP协议头部结构TCP三次握手TCP四次挥手UDP协议UDP协议头部结构套接字Socket端口号和IP地址地址转换字节序转换TCP服务器服务器建立步骤第一步,创建socket--socket()第二步,绑定信息Bin......
  • 【系统架构设计师】论文:论混合软件架构的设计
    论文:论混合软件架构的设计文章目录摘要正文总结摘要2022年3月,我所在的公司组织开发了一套完整的变电综合信息管理系统,在这个项目中,担任系统架构设计师职务,主要负责软件架构和网络安全体系架构设计的工作。该系统包括变电运行所需的运行记录、图形开票、安全生产管......