Transformer模型-2-整体架构

总架构图

下图为Transformer模型架构图

原文描述

简单理解为它是一个盒子:

graph LR A[输入:机器学习] --> B[模型:Transformer:包含Encoder与Decoder两部分]--> C[输出:machine learning]

【举例】: 输入中文,输出英语

graph LR A[我爱你] --> B[Transformer模型] --> C[I love you]

每个EncoderDecoder 都包含 6 个 block,上例可分解为:

这6个block结构相同,但参数各自随机初始化, 分别是:

  • 第一层:多头自注意机制,有两子层
  • 第二层:一个简单的、位置方向的全连接前馈(神经)网络,有两子层
  • Add & Norm 层: 每个编码器的每个子层(Self-Attention 层和 FFN 层)都有一个残差连接和特征归一层,再执行一个层标准化操作

事实上,只是Transformer采用了6层结构,事实上可配置多层

Transformer的词向量维度是512

BERT为768维

编码器:Encoder

Encoder由三个部分组成: 输入多头注意力前馈神经网络

输入:Inputs

Transformer 中单词的输入表示 xWord EmbeddingPosition Embedding相加得到。

词嵌入:Word Embedding

词嵌入层 负责将自然语言转化为与其对应的独一无二的词向量表达。

位置编码器:Position Embedding

Transformer 中除了Word Embedding,还需要使用Position Embedding 表示单词出现在句子中的位置。因为 Transformer 不采用 RNN 的结构,而是使用全局信息,因此是无法捕捉到序列顺序信息的

注意力机制

我们再来看一下这个图,图中红色圈中的部分为 Multi-Head Attention,是由多个 Self-Attention组成的,可以看到 Encoder 包含一个 Multi-Head Attention,而 Decoder 包含两个 Multi-Head Attention (其中有一个用到 Masked)。

Multi-Head Attention 上方还包括一个 Add & Norm 层

  • Add: 表示残差连接 (Residual Connection) 用于防止网络退化
  • Norm: 表示 Layer Normalization,用于对每一层的激活值进行归一

自注意力机制:Self-Attention

自注意力机制是注意力机制的变体,其减少了对外部信息的依赖,更擅长捕捉数据或特征的内部相关性。自注意力机制的关键点在于,Q、K、V是同一个东西,或者三者来源于同一个X,三者同源。

多头注意力机制:Multi-Head Attention

与其只使用单独一个注意力汇聚, 我们可以用独立学习得到的h 组(一般h=8)不同的线性投影来变换Q、K和V。

然后,这h组变换后的Q、K和V将并行地送到注意力汇聚中。 最后,将这h个注意力汇聚的输出拼接在一起, 并且通过另一个可以学习的线性投影进行变换, 以产生最终输出。 这种设计被称为多头注意力(multihead attention)

残差连接

每个编码器的每个子层(Self-Attention 层和 FFN 层)都有一个残差连接,再执行一个层标准化操作。

LN和BN

  • LN: Layer Normalization,LN是"横"着来的,对同一个样本,不同的特征做归一化。
  • BN: Batch Normalization,BN是"竖"着来的,对不同样本,同一特征做归一化。

tips: 二者提出的目的都是为了加快模型收敛,减少训练时间 在NLP任务中,一般选用的都是LN,不用BN。因为句子长短不一,每个样本的特征数很可能不同,造成很多句子无法对齐,所以不适合用BN。

维度 为了便于这些剩余连接,模型中的所有子层以及嵌入层都产生维度dmodel=512的输出(来自原文,如上图)。

前馈神经网络:FeedForward

在进行了Attention操作之后,Encoder和Decoder中的每一层都包含了一个全连接前向网络 ,对每个position的向量分别进行相同的操作,包括两个线性变换和一个ReLU激活输出
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> s u b l a r y e r o u t p u t = L a y e r N o r m a l ( x + S u b L a y e r ( x ) ) \\ sub_laryer_output = LayerNormal(x+SubLayer(x)) \\ </math>sublaryeroutput=LayerNormal(x+SubLayer(x))

解码器:Decoder

Decoder结构与Encoder相似,但是存在一些区别。

  • Decoder 包含两个 Multi-Head Attention 层。
    1. 第一个 Multi-Head Attention 层采用了 Masked 操作。
    2. 第二个 Multi-Head Attention 层的K, V矩阵使用 Encoder 的编码信息矩阵C进行计算,而Q使用上一个 Decoder的输出计算。
  • 最后有一个 Softmax 层计算下一个翻译单词的概率。

第一个 Multi-Head Attention

掩码: Mask

Mask 表示掩码,它对某些值进行掩盖,使其在参数更新时不产生效果。Transformer 模型里面涉及两种 mask,分别是 Padding Mask 和 Sequence Mask。其中,Padding Mask 在所有的 scaled dot-product attention 里面都需要用到,而 Sequence Mask 只有在 Decoder 的 Self-Attention 里面用到。

第二个 Multi-Head Attention

其实这块与上文 Encoder 中 的 Multi-Head Attention 具体实现细节上完全相同,区别在于Encoder的多头注意力里的Q、K、V是初始化多个不同的,矩阵得到的。而Decoder的K、V是来自于Encoder的输出,Q是上层Masked Self-Attention的输出。

Encoder 中 的 Multi-Head Attention只有一个输入,把此输入经过三个linear映射成Q 、K 、V , 而这里的输入有两个:

  • 一个是Decoder的输入经过第一个大模块传过来的值。
  • 一个是Encoder最终结果。是把第一个值通过一个linear映射成了Q,然后通过两个linear把第二个值映射成K、V ,其它的与上文的完全一致。这样做的好处是在 Decoder 的时候,每一位单词都可以利用到 Encoder 所有单词的信息。

Linear和softmax

Decoder最后会输出一个实数向量。那我们如何把浮点数变成一个单词?这便是线性变换层Linear层要做的工作,它之后就是Softmax层。

Linear层是一个简单的全连接神经网络,它可以把Decoder产生的向量投射到一个比它大得多的、被称作对数几率(logits)的向量里。

相关推荐
Ronin-Lotus1 小时前
深度学习篇--- ResNet-18
人工智能·深度学习·resnet
说私域2 小时前
基于开源 AI 智能名片链动 2+1 模式 S2B2C 商城小程序的新开非连锁品牌店开业引流策略研究
人工智能·小程序·开源
moonsims3 小时前
无人机和无人系统的计算机视觉-人工智能无人机
人工智能·计算机视觉·无人机
钓了猫的鱼儿3 小时前
无人机航拍数据集|第27期 无人机交通目标检测YOLO数据集3717张yolov11/yolov8/yolov5可训练
人工智能·yolo·目标检测
tzc_fly3 小时前
rbio1:以生物学世界模型为软验证器训练科学推理大语言模型
人工智能·语言模型·自然语言处理
北方有星辰zz3 小时前
语音识别:概念与接口
网络·人工智能·语音识别
阿里-于怀4 小时前
携程旅游的 AI 网关落地实践
人工智能·网关·ai·旅游·携程·higress·ai网关
赴3354 小时前
神经网络和深度学习介绍
人工智能·深度学习·反向传播
爱看科技5 小时前
英伟达新架构9B模型引领革命,谷歌/阿里/微美全息AI多维布局锻造底座竞争力
人工智能·架构
2501_924878596 小时前
强光干扰下漏检率↓78%!陌讯动态决策算法在智慧交通违停检测的实战优化
大数据·深度学习·算法·目标检测·视觉检测