当前位置: 首页 > news >正文

NLP自然语言处理 03 Transformer架构

1. Transformer的背景

        2018年10月,Google发出一篇论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》, BERT模型横空出世, 并横扫NLP领域11项任务的最佳成绩!

        论文地址: https://arxiv.org/pdf/1810.04805.pdf

        而在BERT中发挥重要作用的结构就是Transformer, 之后又相继出现XLNET,roBERT等模型击败了BERT,但是他们的核心没有变,仍然是:Transformer。

        直到现在,Transformer在市场中占用率依旧居高不下,大多数大模型或多或少都使用了transformer的encoder或者decoder架构

2. transformer架构图

2.1 输入部分

        输入部分包含:

  • 源文本嵌入层及其位置编码器
  • 目标文本嵌入层及其位置编码器

2.1.1 文本嵌入层的作用

  • 无论是源文本嵌入还是目标文本嵌入,都是为了将文本中词汇的数字表示转变为向量表示, 希望在这样的高维空间捕捉词汇间的关系.

注意:为什么embedding之后要乘以根号下d_model

  • 原因1:为了防止position encoding的信息覆盖我们的word embedding,所以进行一个数值增大

  • 原因2:符合标准正态分布

2.1.2 位置编码器

        因为在Transformer的编码器结构中, 并没有针对词汇位置信息的处理,因此需要在Embedding层后加入位置编码器,将词汇位置不同可能会产生不同语义的信息加入到词嵌入张量中, 以弥补位置信息的缺失.

位置编码器实现方式:三角函数来实现的,sin\cos函数

为什么使用三角函数来进行位置编码:

1、保证同一词汇随着所在位置不同它对应位置嵌入向量会发生变化
2、正弦波和余弦波的值域范围都是1到-1这又很好的控制了嵌入数值的大小, 有助于梯度的快速计算
3、三角函数能够很好的表达相对位置信息

2.2 编码器部分

编码器由N个编码器层组成
1、每个编码器层由两个子层连接结构
2、第一个子层连接结构:多头自注意力机制层+残差连接层+规范化层
3、第二个子层连接结构:前馈全连接层+残差连接层+规范层

2.2.1 掩码张量

        掩码:掩就是遮掩、码就是张量。掩码本身需要一个掩码张量,掩码张量的作用是对另一个张量进行数据信息的掩盖。一般掩码张量是由0和1两种数字组成,至于是0对应位置或是1对应位置进行掩码,可以自己设定
        掩码分类:

        PADDING MASK: 句子补齐的PAD,去除影响

        位置:编码器的自注意力层(Self-Attention),编码器-解码器注意力层

        SETENCES MASK:解码器端,防止未来信息被提前利用

        位置:解码器的自注意力层


2.2.2 注意力机制

自注意力机制,规则:Q乘以K的转置,然后除以根号下D_K,然后再进行Softmax,最后和V进行张量矩阵相乘

多头自注意力机制介绍

        将模型分为多个头, 可以形成多个子空间, 让模型去关注不同方面的信息, 最后再将各个方面的信息综合起来得到更好的效果.

        在这里QKV是先经过三个不同的linear层,再分多头,然后每个头的QKV进行注意力计算再拼接,最后经过一个linear层

2.2.3 前馈全连接层

        前馈前连接层其实就是俩线性层,俩linear,作用是增强模型的拟合能力

2.2.4 规范化层

作用:随着网络深度的增加,模型参数会出现过大或过小的情况,进而可能影响模型的收敛,因此进行规范化,将参数规范致某个特征范围内,辅助模型快速收敛。作用原理就是一些列的数学计算,使得向量规范.

2.2.5 子层连接结构

  • 如图所示,输入到每个子层以及规范化层的过程中,还使用了残差链接(跳跃连接),因此我们把这一部分结构整体叫做子层连接(代表子层及其链接结构),在每个编码器层中,都有两个子层,这两个子层加上周围的链接结构就形成了两个子层连接结构.

在这里残差链接的作用就是引入加法防止梯度消失

2.3 解码器部分

解码器构成:

  1. N个解码器层堆叠而成
  2. 每个解码器层由三个子层连接结构组成
  3. 第一个子层连接结构:多头自注意力(masked)层+ 规范化层+残差连接
  4. 第二个子层连接结构:多头注意力层+ 规范化层+残差连接
  5. 第三个子层连接结构:前馈全连接层+ 规范化层+残差连接

与编码器的区别就在于多了第一个子层连接,他引入了SETENCES MASK用于防止未来信息被提前利用

2.4 输出部分

一个线性层linear,一个softmax层:作用:通过线性变化得到指定维度的输出,也就是预测的下一个词

注:这时候解码器的输入可以是上一步的输出预测的词,也可以是真实的词

3.可能的面试题

3.1 attention为什么使用多头?

  • 表达能增强:通过引多个注意头,每个头都可以关注不同的语义信息,从能够捕捉更丰富的特征表示。不同的注意头可以学习到不同的关注权重分布,帮助模型更好地理解输序列 的不同部分。
  •  模型泛化性能提升:通过多头机制,模型可以同时考虑多个关注粒度的信息。每个头可以关注序 列中的不同位置或不同的关系,使得模型能够处理不同尺度和不同层次的语义关系。这有助于提 模型在不同任务和不同数据集上的泛化性能。
  • 抗噪能增强:多头机制能够减少注意机制中的随机性,因为每个头都可以专注于不同的注意 权重。这样可以降低模型对于噪声的敏感性,提模型的鲁棒性和稳定性。
  • 计算加速:注意机制的计算通常是度并的,多头注意步增加了并计算的程 度。多个注意头可以同时计算,加快了模型的训练和推理速度。

3.2 transformer为什么⽤layer norm不⽤batch norm,解释下,什

么情况可以⽤batch norm?

  • 序列度变化:在Transformer中,输序列的度通常是可变的,因为它们可能具有不同数量的词语或位 置编码。Batch Normalization依赖于在每个批次中计算样本的均值和⽅差,样本数在不同的批次中是 不同的。这导致在每个批次上计算的均值和⽅差存在差异,这可能会影响模型的稳定性。相之下,Layer Normalization是对每个样本的特征维度进⾏化,不依赖于批次,因此对序列度的变化更加鲁棒。
  • 训练和推断的⼀致性:在训练和推断过程中,Batch Normalization的为是不同的。在训练时,Batch Normalization使⽤每个批次的均值和差进化,但在推断时,需要使累计的整体均值和差。这 意味着在推断过程中,需要记录每个批次的均值和⽅差,增加了推断的复杂性。相之下,Layer Normalization的计算过程在训练和推断中是⼀致的,更加简单和可靠。
  • 计算:Batch Normalization的计算涉及对每个特征维度的均值和差进计算,因此在处理序列时⽆ 法进⾏有效的并计算。Layer Normalization的计算是在特征维度上进的,可以更好地持并计算, 因此在处理⻓序列时更加高效

3.3 Add&norm层的作用?

  • 化:通过对输化操作,使得输的均值和差保持稳定,有助于加速模型的收敛和提训 练效果。归⼀化可以缓解梯度消失和梯度爆炸等问题,提模型的数值稳定性。
  • 残差连接:Add Norm层通常与残差连接起使于将前层的输出与当前层的输出相加。残差连接允 许信息在⽹络中直接传递,有助于缓解梯度消失、加速训练过程和提模型的表达能
http://www.dtcms.com/a/315643.html

相关文章:

  • 基于 FFmpeg 与 V4L2 的多路摄像头视频采集,图像处理处理与 RTMP 推流项目(开源)
  • GPU 基础矩阵精规组织教程:从基础作用到实战应用
  • EAGLE-2:通过动态草稿树加速语言模型推理
  • 国内办公安全平台新标杆:iOA一体化办公安全解决方案
  • 用 PyTorch 实现一个简单的神经网络:从数据到预测
  • Tdengine 时序库年月日小时分组汇总问题
  • EP01:【DL 第二弹】张量(Tensor)的创建和常用方法
  • 利用DeepSeek编写带缓冲输出的V语言程序
  • centos通过DockerCompose搭建开源MediaCMS
  • 信息收集--基础篇
  • 高效稳定:Spring Boot集成腾讯云OSS实现大文件分片上传与全路径获取
  • systemui 的启动流程是怎么样的?
  • 深入浅出 RabbitMQ-交换机详解与发布订阅模型实战
  • 软件版本、Nodejs中 ~、*、^
  • centos7 个人网站搭建之gitlab私有化部署实现线上发布
  • 鸿蒙OS 系统安全
  • 14.Linux : nfs与autofs的使用
  • 计算机基础速通--数据结构·栈与队列应用
  • 国内外大模型体验与评测技术
  • 安科瑞智慧能源管理系统在啤酒厂5MW分布式光伏防逆流控制实践
  • 【深度学习新浪潮】混元3D是什么产品?
  • 大模型之后,机器人正在等待它的“GPT-1 时刻”
  • BOM Cookie操作详解
  • 基于Halcon 3D的手眼标定方法
  • Kafka自动消费消息软件(自动化测试Kafka)
  • OneCode 3.0 前端架构全面研究
  • xxl-job配置相同,执行顺序
  • Android WiFi图标显示感叹号解决方法
  • Linux 线程同步与互斥
  • 链表之leetcode19:删除链表的倒数第N个结点