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激活输出
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)) \\ 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)的向量里。

相关推荐
TMT星球16 分钟前
虎鲸文娱春苗编剧计划全面升级,已孵化20个剧本进入前期开发
大数据·人工智能
奔跑中的小象7 小时前
统信UOS + 天数AI卡部署SGLang服务手册
人工智能·uos·sglang·天数智芯
DevSecOps选型指南7 小时前
中国版Mythos,为何是悬镜安全灵脉CodeAI?
人工智能·安全
Shockang7 小时前
LangGraph 状态机实战
人工智能
刹那芳华19927 小时前
循环神经网络的从零开始实现(RNN)
人工智能·rnn·深度学习
阿童木写作7 小时前
跨境图片翻译工具多合一,批量图片视频字幕翻译加智能抠图
人工智能·python·音视频·语音识别
科技之门7 小时前
AI3D从建模到贴图、绑骨和动画的完整流程怎么做?V2Fun完整工作流指南
人工智能·3d·贴图
宇宙第一小趴菜7 小时前
二、机器学习的应用领域和发展史
人工智能·机器学习
前端开发江鸟7 小时前
我写过 MCP Server,却一直以为 MCP 只有 Tool
人工智能
llwszx8 小时前
【Java/Go后端手撸原生Agent(第十一篇):RAG检索——给Agent加上“查资料“能力】
llm·向量检索·rag·ai智能体·大模型应用·agent开发·后端转ai