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

NLP——Transformer

一、Transformer背景介绍

Transformer的优势

相比之前占领市场的LSTM和GRU模型,Transformer有两个显著的优势:

  1. Transformer能够利用分布式GPU进行并行训练,提升模型训练效率。
  2. 在分析预测更长的文本时, 捕捉间隔较长的语义关联效果更好。

二、Transformer架构

1. Transformer模型的作用

  1. 基于seq2seq架构的transformer模型可以完成NLP领域研究的典型任务, 如机器翻译, 文本生成等. 同时又可以构建预训练语言模型,用于不同任务的迁移学习。

2. Transformer架构

在这里插入图片描述
总体架构分为四个部分:

  1. 输入部分
  2. 编码器部分
  3. 解码器部分
  4. 输出部分

① 输入部分

源文本嵌入层及其位置编码器(inputs word embedding + positional encoding);
目标文本嵌入层及其位置编码器(outputs word embedding + positional encoding)。

文本嵌入层的作用(Word Embedding)

无论是源文本嵌入还是目标文本嵌入,都是为了将文本中词汇的数字表示转变为向量表示, 希望在这样的高维空间捕捉词汇间的关系。
embedding之后要乘以根号下d_model有以下两个原因:

  1. 为了防止position encoding的信息覆盖我们的word embedding,所以进行一个数值增大。
  2. 符合标准正态分布。
位置编码器的作用及实现方式(三角函数)(Positional Encoding)

作用:Transformer编码器或解码器中缺乏位置信息,因此加入位置编码器,将词汇的位置可能代表的不同特征信息和word_embedding进行融合,以此来弥补位置信息的缺失。
为什么用三角函数:

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

② 编码器部分

由N个编码器层堆叠而成;
每个编码器层由两个子层连接结构组成;
第一个子层连接结构包括一个(可以带掩码的)多头自注意力子层和规范化层以及一个残差连接;
第二个子层连接结构包括一个前馈全连接子层和规范化层以及一个残差连接。
在这里插入图片描述

掩码张量(MASK)

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

  1. PADDING MASK: 句子补齐的PAD,去除影响(一般作用于编码器端)
  2. SETENCES MASK:解码器端,防止未来信息被提前利用(一般作用于解码器端)
多头注意力机制(Multi-Head Attention)

概念:将模型分为多个头, 可以形成多个子空间, 让模型去关注不同方面的信息, 最后再将各个方面的信息综合起来得到更好的效果。Transformer中使用8个头。
传入数据经过线性变换得到[2,4,512],通过view函数切8个头得到[2,4,8,64],通过transpose交换1和2位置得到[2,8,4,64],再经过注意力机制函数得到[2,8,4,64],再次使用transpose交换得到[2,4,8,64],最后通过view函数合并多头得到[2,4,512]送入下一线性变化。

前馈全连接层(Feed Forward)

通过两个全连接层构成,作用是增强模型的拟合能力

规范化层(Norm)

随着网络深度的增加,模型参数会出现过大或过小的情况,进而可能影响模型的收敛,因此进行规范化,将参数规范致某个特征范围内,辅助模型快速收敛提高训练稳定性

残差连接(Add)

在多头注意力机制得到矩阵的基础上加上残差块,加入残差块的目的是为了防止在深度神经网络的训练过程中发生退化的问题,退化的意思就是深度神经网络通过增加网络的层数,Loss逐渐减小,然后趋于稳定达到饱和,然后再继续增加网络层数,Loss反而增大。

ResNet残差神经网络

引入ResNet残差神经网络了解残差块。
神经网络退化中,对于多余的层,我们需要保证多出来的网络进行恒等映射。只有进行了恒等映射之后才能保证这多出来的神经网络不会影响到模型的效果。
在这里插入图片描述
上图就是构造的一个残差块,X是输入值,F(X)是经过第一层线性变换后并且激活的输出,在第二层线性变化之后,激活之前,F(X)加入了这一层输入值X,然后再进行激活后输出。要恒等映射,我们只需要让F(X)=0就可以了。
x经过线性变换(随机初始化权重一般偏向于0),输出值明显会偏向于0,而且经过激活函数Relu会将负数变为0,过滤了负数的影响。这样当网络自己决定哪些网络层为冗余层时,使用ResNet的网络很大程度上解决了学习恒等映射的问题,用学习残差F(x)=0更新该冗余层的参数来代替学习h(x)=x更新冗余层的参数。

③ 解码器部分

由N个解码器层堆叠而成;
每个解码器层由三个子层连接结构组成;
第一个子层连接结构包括一个带有掩码的多头自注意力子层和规范化层以及一个残差连接;
第二个子层连接结构包括一个带有掩码的多头一般注意力子层和规范化层以及一个残差连接,这里的Q查询张量是上一个子层输入,K和V是编码器的输出;
第三个子层连接结构包括一个前馈全连接子层和规范化层以及一个残差连接。
在这里插入图片描述

④ 输出部分

线性层Linear;
softmax层。
在这里插入图片描述

http://www.dtcms.com/a/311528.html

相关文章:

  • flutter实时播报的桌面应用遇到的问题
  • I2C(韦东山HAL库)
  • 2023年ASOC SCI2区TOP,可修灰狼优化算法RGWO+燃料电池参数辨识,深度解析+性能实测
  • 【无标题】根据11维拓扑量子色动力学模型(11D-TQCD)与当代宇宙学理论的融合分析,宇宙轮回的终结机制及其最终状态可系统论述如下:
  • 商品中台数据库设计
  • WPFC#超市管理系统(4)入库管理
  • 音视频学习(四十八):PCM和WAV
  • 基于深度学习的医学图像分析:使用GAN实现医学图像增强
  • 进阶向:Python生成艺术图案(分形、数学曲线)
  • MySQL索引解析
  • vue3pinia
  • Corrosion2靶机
  • Cyber Weekly #63
  • 搜索引擎评估革命:用户行为模型如何颠覆传统指标?
  • Sklearn 机器学习 数据聚类 用Numpy自己实现聚类
  • 【C++】类和对象(2)
  • 使用keil点亮stc8核心板的灯
  • 逻辑回归 银行贷款资格判断案列优化 交叉验证,调整阈值,下采样与过采样方法
  • MQTT 入门教程:MQTT工具调式
  • 堆----2.前 K 个高频元素
  • VirtualBox 的 HOST 键(主机键)是 右Ctrl 键(即键盘右侧的 Ctrl 键)笔记250802
  • 学习笔记:无锁队列的原理以及c++实现
  • Linux 高级 I/O 系统调用详解
  • Vue 响应式基础全解析2
  • Node.js中path模块的使用指南
  • InfluxDB 与 Node.js 框架:Express 集成方案(二)
  • 如何在`<link type=“icon“ href=`的`href`中写SVG并使用path标签? 笔记250802
  • 嵌入式 C 语言入门:递归与变量作用域学习笔记 —— 从概念到内存特性
  • 深入 Go 底层原理(十三):interface 的内部表示与动态派发
  • Javaweb————Apache Tomcat服务器介绍及Windows,Linux,MAC三种系统搭建Apache Tomcat