Transformer架构的工作原理

1. 整体架构概览

Transformer遵循编码器-解码器结构,但和传统的RNN或CNN不同,它完全基于注意力机制,没有循环或卷积。整体架构如下图所示(可自行想象):

  • 编码器(Encoder):由多个相同的层堆叠而成(原论文为6层)。每一层包含两个子层:

    1. 多头自注意力(Multi-Head Self-Attention)

    2. 前馈神经网络(Feed-Forward Neural Network,FFN)

      每个子层周围都有残差连接(Residual Connection),随后进行层归一化(Layer Normalization)。

  • 解码器(Decoder):同样由多个相同的层堆叠而成(也是6层)。每一层包含三个子层:

    1. 掩码多头自注意力(Masked Multi-Head Self-Attention)------防止看到未来的词。

    2. 交叉注意力(Cross-Attention)------将编码器的输出与解码器的当前状态进行交互。

    3. 前馈神经网络。

      每个子层同样有残差连接和层归一化。

  • 输入处理:输入序列首先通过词嵌入(Word Embedding)转换为向量,然后加上位置编码(Positional Encoding)以注入序列顺序信息。


2. 核心组件详解

2.1 自注意力机制(Self-Attention)

自注意力是Transformer的核心,它允许模型在处理每个词时,动态地关注输入序列中所有其他词的相关性。对于每个输入向量,自注意力计算它与序列中所有向量的注意力权重,然后用这些权重加权求和得到输出。

计算步骤:

对于输入序列 X=(x1,x2,...,xn)X=(x1​,x2​,...,xn​),每个 xixi​ 是一个 dmodeldmodel​ 维的向量。自注意力机制通过三个可学习的权重矩阵 WQ,WK,WVWQ,WK,WV 将每个 xixi​ 映射为查询(Query)、键(Key)和值(Value)向量:

Qi=xiWQ,Ki=xiWK,Vi=xiWVQi​=xi​WQ,Ki​=xi​WK,Vi​=xi​WV

通常,Q,K,VQ,K,V 的维度为 dkdk​,且 dk=dmodel/hdk​=dmodel​/h,其中 hh 是多头注意力的头数。

然后,对于每个查询 QiQi​,计算它与所有键 KjKj​ 的点积,得到注意力分数:

scoreij=Qi⋅Kjscoreij​=Qi​⋅Kj​

这些分数除以 dkdk​​ 进行缩放(防止点积过大导致梯度消失),然后通过Softmax函数归一化为概率分布:

αij=exp⁡(scoreij/dk)∑k=1nexp⁡(scoreik/dk)αij​=∑k=1n​exp(scoreik​/dk​​)exp(scoreij​/dk​​)​

最后,输出向量 zizi​ 是所有值向量 VjVj​ 的加权和:

zi=∑j=1nαijVjzi​=j=1∑n​αij​Vj​

这样,每个位置 ii 的输出融合了整个序列的信息,权重 αijαij​ 表示 ii 对 jj 的关注程度。

为什么用点积?

点积可以衡量两个向量的相似度,计算高效。缩放因子 dkdk​​ 是为了使Softmax的输入方差稳定在1左右,避免梯度饱和。

2.2 多头注意力(Multi-Head Attention)

单头自注意力可能只能捕捉一种类型的依赖关系。为了增强模型的表达能力,Transformer使用多头注意力:并行执行 hh 个不同的自注意力(每个头有不同的 WQ,WK,WVWQ,WK,WV),然后将所有头的输出拼接起来,再通过一个线性变换投影回 dmodeldmodel​ 维。

具体来说,对于每个头 ii,计算输出 headi=Attention(QWiQ,KWiK,VWiV)headi​=Attention(QWiQ​,KWiK​,VWiV​)。然后拼接所有头:

MultiHead(Q,K,V)=Concat(head1,...,headh)WOMultiHead(Q,K,V)=Concat(head1​,...,headh​)WO

其中 WOWO 是输出投影矩阵。

多头机制允许模型在不同子空间中关注不同的位置组合,比如一个头可能关注句法关系,另一个头关注语义相关性。

2.3 位置编码(Positional Encoding)

自注意力本身是置换不变的(即打乱输入顺序,输出也会相应打乱,但权重关系不变),因此必须显式地将序列的位置信息注入模型。Transformer使用位置编码(PE)添加到输入嵌入中。位置编码可以是固定的,也可以是可学习的。原论文使用正弦和余弦函数:

PE(pos,2i)=sin⁡(pos100002i/dmodel),PE(pos,2i+1)=cos⁡(pos100002i/dmodel)PE(pos,2i)​=sin(100002i/dmodel​pos​),PE(pos,2i+1)​=cos(100002i/dmodel​pos​)

其中 pospos 是位置索引,ii 是维度索引。这种编码方式使得模型能够容易地学习相对位置关系,因为对于固定偏移 kk,PEpos+kPEpos+k​ 可以表示为 PEposPEpos​ 的线性函数。

2.4 前馈神经网络(FFN)

每个编码器和解码器层中的自注意力子层之后,都跟着一个前馈网络。它是一个简单的全连接多层感知机,通常包含两个线性变换和一个非线性激活函数(如ReLU):

FFN(x)=max⁡(0,xW1+b1)W2+b2FFN(x)=max(0,xW1​+b1​)W2​+b2​

在Transformer中,FFN的中间维度通常比 dmodeldmodel​ 大(原论文中 dmodel=512dmodel​=512,FFN内部维度为2048)。这个子层对每个位置独立且相同地处理(即逐位置前馈网络),但在不同层之间参数不同。

2.5 残差连接和层归一化

每个子层(自注意力或FFN)的输出都会加上其输入(残差连接),然后进行层归一化。即:

Output=LayerNorm(x+Sublayer(x))Output=LayerNorm(x+Sublayer(x))

残差连接有助于缓解深度网络中的梯度消失问题,使梯度能直接流过子层。层归一化则对每个样本的特征维度进行归一化,稳定训练过程。


3. 编码器与解码器的具体工作流程

3.1 编码器

输入序列(如源语言句子)经过词嵌入和位置编码后,得到向量序列 XX。然后依次通过 NN 个编码器层:

  1. 多头自注意力:X′=LayerNorm(X+MultiHead(X,X,X))X′=LayerNorm(X+MultiHead(X,X,X))

    注意:在自注意力中,Q、K、V都来自同一个 XX,即自注意力。

  2. 前馈网络:X′′=LayerNorm(X′+FFN(X′))X′′=LayerNorm(X′+FFN(X′))

最终输出 EncoderOutputEncoderOutput 是一个同样长度的向量序列,每个向量编码了对应词及其上下文的信息。

3.2 解码器

解码器在训练时以目标序列(如目标语言句子)作为输入,但为了自回归生成,需要掩蔽未来信息。输入同样经过嵌入和位置编码得到 YY。然后逐层处理:

  1. 掩码多头自注意力

    Y′=LayerNorm(Y+MaskedMultiHead(Y,Y,Y))Y′=LayerNorm(Y+MaskedMultiHead(Y,Y,Y))

    这里的掩码(Mask)是为了防止当前位置关注未来位置。具体做法是在计算注意力分数时,将未来位置的分数设置为 −∞−∞(经过Softmax后权重为0)。这保证了预测第 tt 个词时只能使用前 t−1t−1 个词的信息。

  2. 交叉注意力

    Y′′=LayerNorm(Y′+MultiHead(Y′,EncoderOutput,EncoderOutput))Y′′=LayerNorm(Y′+MultiHead(Y′,EncoderOutput,EncoderOutput))

    这里,查询来自解码器的当前状态 Y′Y′,而键和值来自编码器的输出。这样解码器能够关注输入序列的相关部分。

  3. 前馈网络

    Y′′′=LayerNorm(Y′′+FFN(Y′′))Y′′′=LayerNorm(Y′′+FFN(Y′′))

经过 NN 层后,解码器的输出通过一个线性层(映射到词汇表大小)和Softmax,得到每个位置上的下一个词的概率分布。

在推理(生成)时,解码器采用自回归方式:一次生成一个词,将已生成的词作为输入继续预测下一个词。


4. 训练与损失函数

Transformer通常使用交叉熵损失函数进行训练。对于机器翻译,目标序列的每个位置都有真实词,模型输出概率分布,计算损失并反向传播。由于解码器是自回归的,训练时采用教师强制(Teacher Forcing):将真实目标序列作为解码器输入(但掩蔽未来),而不是使用模型自己预测的词。这样能加速训练并稳定收敛。

为了防止过拟合,还会使用Dropout、标签平滑(Label Smoothing)等技术。


5. 关键优势与影响

  • 并行计算:自注意力可以一次性计算所有位置的注意力,不像RNN需要逐步计算,因此训练速度更快。

  • 长距离依赖:自注意力直接连接任意两个位置,路径长度恒为1,更容易捕捉长距离依赖。

  • 可解释性:注意力权重可以可视化,帮助理解模型关注哪些部分。

  • 通用性:Transformer不仅用于NLP,还被扩展到计算机视觉(ViT)、语音处理等领域。


6. 总结

Transformer通过自注意力机制替代了循环和卷积,实现了高效的并行计算和对长距离依赖的建模。其核心组件包括多头自注意力、位置编码、前馈网络、残差连接和层归一化。编码器-解码器结构使其适用于序列到序列的任务,同时通过掩码支持自回归生成。这一架构奠定了现代大规模预训练模型的基础,是深度学习领域里程碑式的工作。

相关推荐
肾透侧视攻城狮1 小时前
《解锁TensorFlow NLP实战:一站式掌握文本预处理、向量化技术与情感分析管道最佳实践》
人工智能·深度学习·文本预处理·向量化文本·向量化模式选项·bert分词器·tf构建文本处理管道
Katecat996632 小时前
【深度学习】Faster-RCNN改进:钩子状态识别与分类三种状态自动检测
人工智能·深度学习·分类
Tadas-Gao2 小时前
校准之弧与演进之轮:大模型时代的软件工程范式革命
人工智能·深度学习·架构·大模型·llm·软件工程
刘贺同学2 小时前
Day08-龙虾哥打工日记:多 Agent 协作——什么时候该给 AI 招小弟?
aigc·ai编程
Dev7z2 小时前
基于YOLO11的泳池溺水行为实时检测系统设计与实现
人工智能·深度学习·yolo11·泳池溺水
无心水3 小时前
【任务调度:数据库锁 + 线程池实战】2、MySQL 8.0+ vs PostgreSQL:SKIP LOCKED 终极对决,谁才是分布式调度的王者?
java·人工智能·后端·面试·架构
简佐义的博客3 小时前
120万细胞大整合(自测+公共数据):scRNA-seq 构建乳腺细胞图谱的完整思路(附生信复现资源)
人工智能·深度学习·算法·机器学习
byzh_rc3 小时前
[深度学习网络从入门到入土] 残差网络ResNet
网络·人工智能·深度学习
YouRock3 小时前
面试必问:别背“URL请求到渲染”了,你的对手压根不走这条路
面试