Transformer网络架构

news/2024/11/16 3:26:14/文章来源:https://www.cnblogs.com/sherioc/p/18391533

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

编解码

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, .....

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gluon 编译 JavaFx - android apk

Gluon 编译 JavaFx -> android apk 本文的内容属 在linux服务器上 搭建 Gluon 编译 android-apk 环境 这一篇文章直接跟着官网操作一次性成功 虚拟机版本centos8 Architecture: x86-64开始安装相关前置工具gcc version 6 or higher ld version 2.26 or highersudo yum updat…

vue axios

axios是基于promise的http库,可以用在浏览器和node.js中 特性:从浏览器中创建XMLHttpRequests、从node.js创建http请求、支持promiseApi、拦截请求和响应、取消请求、自动转换JSON数据、客户端支持防御xsrf axios就是一个库,也可以单独独立出来发送ajax。 安装: npm install…

正点原子Linux C应用编程:移植tslib并使其适配7寸LCD1024*600的GT911触摸驱动

正点原子Linux C应用编程:移植tslib并使其适配7寸LCD1024*600的GT911触摸驱动 作者在学习【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.4时,发现移植tslib后,触摸事件触发不正常。 使用的硬件版本:正点原子 I.MX6U ALPHA V2.4版本底板,LCD:正点原子7寸1024*600,型号A…

记一次Hyperf定时任务内存异常问题

背景 最近时不时收到 K8S 告警提示项目 POD 出现 OOM 问题,只要触发了项目重新部署或者把 POD 删掉,内存就恢复了,过了一段时间才缓慢增长(基本上要隔几天,这也是这个问题比较难定位和复现的原因) 分析 起初以为是某一个SQL没有限制 limit 或者是程序有死循环把内存跑满了…

河道AI智能视频分析识别系统

河道AI智能视频分析识别系统智能检测方式,智能检测分析河道两边意外违反规定问题,确保人民人身安全问题,河道AI智能视频分析识别系统在初期处理伤害安全性的问题,保证水环境生态安全和人民生命安全安全性,使人和水的影响做到和睦情况,使不足的水源为社会经济的协调发展作…

河道水库雨水情视频监控智能分析系统

河道水库雨水情视频监控智能分析系统可以提升水利枢纽的安全性,这个问题一直是防汛管理方法机构重视的一个主要问题。为加强水利枢纽安全性监管,管理方法单位急需河道水库雨水情视频监控智能分析系统,实时监测降水信息内容,为防汛防灾减灾给予精确、立即的数据信息。系统基…

【运维系列】如何为NETCONF开放安全策略

NETCONF(Network Configuration Protocol,网络配置协议)是一种基于XML的网络管理协议,它提供了一种对网络设备进行配置和管理的可编程方法。NETCONF协议的传输层可以是BEEP、SSH、TLS或SOAP。 由于RFC协议规定必须支持SSH,所以目前SSH是NETCONF使用最广泛的传输层协议,当…

【运维系列】如何为SNMP开放安全策略

SNMP是最广泛使用的网络管理协议。 网管软件作为SNMP Manager,向被管设备中的SNMP Agent发出管理操作的请求。 被管设备在检测到异常时,也会主动向SNMP Manager发送Trap信息。 也就是说,网管软件和被管设备都会主动发起连接,如图 6-1 所示。【图】SNMP典型组网和业务访问关…

MySQL中的group by的意义

这是一道leetcode上数据库的题目,一开始确实是没有想明白哦。

算法-动态规划-多重背包

LeetCode算法刷题 动态规划之多重背包0. 动态规划五部曲:确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组

win10更新在哪里,教你怎么打开电脑win10更新

在Windows 10系统中,打开和查看系统更新的位置相对固定,主要通过“设置”应用来完成。以下是详细的步骤说明: 一、打开Windows 10更新 1.通过“开始”菜单打开“设置”: 点击屏幕左下角的“开始”按钮(Windows徽标)。 在弹出的菜单中,选择并点击“设置”图标(一个齿轮形…

[图文直播]基于ZFile和MinIO搭建私有网盘

前言 ZFile 以下是ZFile的官网,上面也涉及到了搭建方法 https://docs.zfile.vip/install/os-windows 此次仅记录本人按照官方的部署方法进行实操验证。 下载 ibm-semeru-open-jdk_x64_windows_8u372b07_openj9-0.38.0.msi zfile-release.jar 具体下载地址见上面的官网 安装部署…