戳蓝字“架构师带你玩转AI” 关注我哦!****
本系列文章的初衷是带领大家深入剖析Transformer,逐步揭示其内在机制和工作原理。本系列第一篇:总体架构 ,它是理解Transformer工作原理的基础。
大多数具有竞争力的神经序列转换模型都具有编码器-解码器结构。编码器将输入序列(x1,...,xn)映射到一系列连续表示z =(z1,...,zn),解码器然后生成输出序列(y1,...,ym)。Transformer也遵循这种总体架构,使用堆叠的自注意力机制和逐点、全连接层,分别用于编码器和解码器。
目录
1. 编码器-解码器架构
2. Transformer总体架构
2.1 输入嵌入(Input Embedding)
2.2 位置编码(Positional Encoding)
2.3 多头注意力(Multi-Head Attention)
2.4 残差连接和 层归一化 (Add & Norm)
2.5 带掩码的多头注意力(Masked M ulti-Head Attention)
2.6 前馈神经网络(Feed Forward)
3. Transformer编码器
4. Transformer解码器
5. 总结
01
编码器-解码器架构
Encoder-Decoder架构是自然语言处理(NLP)和其他序列到序列(Seq2Seq)转换任务中的一种常见框架。
这种架构的核心思想是 将输入序列编码成一个固定大小的向量表示,然后利用这个向量来生成输出序列。
例如:Seq2Seq模型框架包括两部分,分别是编码器和解码器,它们都是循环神经网络。它能实现从一个序列到另外一个序列的映射,而且两个序列的长度可以不相等。 机器翻译就是典型Seq2Seq模型,从一个序列到另外一个序列的预测:
02
Transformer总体架构
Transformer也遵循这种总体架构,使用堆叠的自注意力机制和逐位置的全连接层,分别用于编码器和解码器 ,如图中的左半部分和右半部分所示。
Transformer模型通过 输入嵌入、位置编码、多头注意力、残差连接和层归一化、带掩码的多头注意力以及前馈网络等组件 ,实现了对输入序列的高效编码和输出序列的生成。
在每个步骤中,模型是自回归的,在生成下一个符号时,会将先前生成的符号作为额外的输入。
输入嵌入
输入嵌入(Input Embedding): 主要负责将输入的符号或词元(如单词或字符)转换为
连续的多维向量表示, 以便模型能够理解和处理。 这是文本向量化的一种形式,有助于模型捕捉文本中的语义和语法信息。
在Transformer模型中,输入嵌入是通过查找嵌入矩阵(Embedding Matrix)来实现的。当输入序列中的每个词元通过嵌入层时,它会在嵌入矩阵中查找其对应的向量表示。
这种向量表示是低维且连续的,使得模型能够捕捉词元之间的相似性和关系。
位置编码
位置编码(Positional Encoding): 主要目标是在序列数据的嵌入向量中引入位置信息,以捕捉语言中单词或字符的顺序信息。
位置编码通常是 通过将正弦和余弦函数的值 添加到输入嵌入向量中来实现的。
这些函数能够生成具有不同频率的波形,从而允许模型区分不同位置的信息。通过这种方式,即使Transformer模型是并行处理序列数据的,它也能够理解和利用单词在序列中的顺序信息。
多头注意力
多头注意力(Multi-Head Attention) : 主要目标是 允许模型同时学习多组不同的自注意力权重。每个“头”可以被看作是一种注意力权重的不同子表示。
通过并行运行多个自注意力层并综合其结果,能够同时捕捉输入序列在不同子空间中的信息。每个头部独立地学习不同的注意力权重,并通过不同的线性变换对输入序列进行编码。通过这种方式,多头注意力能够 同时关注来自输入序列的不同子空间的信息 ,从而增强了模型的表达能力。
残差连接和
层归一化
残差连接和层归一化(Add & Norm) :
主要起到
稳定模型训练、提高性 能 的作用 ,
共同确保模型在训练过程中能够更有效地学习输入数据的特征,并生成更准确的输出。
残差连接(Add): 本质上类似一种兜底策略,目的是当模型的深度已经达到最优解,后面再增加冗余层也至少不会导致之前的效果下降。它的做法是将上一层的输出直接连接到下一层的输出,及上一层的输出直接和下一层的原始输出对应位置相加形成最终输出。例如:模型一共50层,若第25层时模型已经充分学习达到测试集最佳效果,则让从26层开始到第50层学习一种**恒等变换
** ,在最后一层将第26层的输出恒等映射出来 。
层归一化(Norm): 这 是一种正则化技术,用于调整神经网络中每一层的激活值的分布,使得模型的训练更加稳定并提升性能。基本上所有的规范化技术,都可以概括为如下的公式:
对于隐层中某个节点的输出,即激活值
a
,进行非线性变换(如ReLU、tanh等)后得到
h
。层归一化的过程就是先计算这一层所有激活值的均值
μ
和方差
σ²
,然后使用这些统计量对
h
进行分布调整。
这种调整
就是把“高瘦”和“矮胖”的都调整回正常体型(深粉色),把偏离x=0的拉回中间来(淡紫色)。
带掩码的
多头注意力
带掩码的多头注意力(Masked M ulti-Head Attention) :
结合了多头注意力(Multi-Head Attention)和掩码(Mask), 主要是为了在解码器的每个时间步中只关注之前的位置,避免当前位置的信息对之后的位 置造成干扰。
带掩码的多头注意力可以通过设置掩码矩阵来实现 ,这个矩阵将未来的位置掩盖,在Softmax函数计算前将这些位置的注意 力值设为负无穷,这样输出就不会受到未来位置的影响。
前馈
神经网络
前馈神经网络 ( Feed Forward ) : 本质是一个全连接的网络层,它接收上一层的输出作为输入,并通过一系列线性变换和非线性激活函数来生成输出。它在编码器和解码器的每一层中都扮演着关键的角色。
前馈神经网络通常由两个线性变换层和一个ReLU激活函数组成。第一个线性变换层将输入映射到一个更高的维度,ReLU激活函数为网络引入非线性,而第二个线性变换层则将输出映射回原始维度或所需的维度。
前馈神经网络可以表示为以下公式:
FFN(x) = max(0, xW1 + b1)W2 + b2
其中,x是输入张量,W1、b1、W2、b2是可学习的权重矩阵和偏置向量。
max(0, xW1 + b1) 是一个激活函数,通常为ReLU。
03
Transformer编码器
Transformer的编码器由多个相同的编码器层堆叠而成。在标准的Transformer结构中, 通常有6个这样的编码器层 。
每个编码器层包含两个主要的子层:即多头自注意力(Multi-Head Attention)层和 前馈神经网络 (Feed-Forward Network)层。
在每个子层后面都有 残差连接(图中的虚线)和层归一化(LayerNorm) 操作,二者合起来称为Add & Norm操作。
04
Transformer解码器
与编码器类似,Transformer的解码器也是由多个相同的解码器层堆叠而成。在标准的Transformer结构中, 通常也有6个这样的解码器层。
每个编码器层包含三个主要的子层:即 掩蔽自注意力层(Masked Self-Attention)、Encoder-Decoder注意力层、 前馈神经网络 (Feed-Forward Network)层。
同样,在每个子层后面都有 残差连接(图中的虚线)和层归一化(LayerNorm) 操作,二者合起来称为Add & Norm操作。
05
总结
本文全面概述了Transformer模型的总体架构——编码器-解码器架构。编码器和解码器各自包含多个堆叠的层,这些层结构上相似但功能各异。文中简要介绍了Transformer的关键组件,包括 输入嵌入、位置编码、多头注意力、残差连接和层归一化、带掩码的多头注意力以及前馈神经网络等 。
下 一篇: 注意力机制 , 将深入探讨注意力机制。
全文完,如果觉得写得不错,那就点个赞或者“在看”吧,感谢阅读。
如果转载本文, 文末 务必注明:“ 转自微信公众号:架构师带你玩转AI ”。
全文完,如果觉写错,那就点个赞或者“在看”吧,多谢阅读。
如果转载本文,文末务必注明:“转自微信公众号:九边”。