一文彻底搞懂Transformer的Encoder和Decoder中的重要模块

前言

该篇文章承接第一篇文章的内容,将从细节部分致力于将每个Encoder和Decoder部分的每个模块解释清楚,通过这篇文章相信你能彻底理解Transformer中许多重要模块的基本原理。

Transformer完整的流程图

在这篇文章中,我们将致力于解决Encoder Block和Decoder Block的部分,我们将要解决以下问题:1.softmax的原理和计算2.自注意力机制的原理和计算3.多头自注意力机制的原理和计算4.残差连接的原理5.层归一化的原理

细节模块讲解

1. Softmax激活函数的原理和计算

由于在注意力机制的计算中使用到了Softmax激活函数,因此在这里先来简单介绍一下什么是softmax。

1.1 Softmax的计算公式如下

 

1.2 Softmax的作用

Softmax可以将一系列输出值转化为值域在[0, 1]之间的一系列值,并且这些值的加和为1。因此我们可以把softmax处理后得到的一系列值看作是概率,而softmax后的值越接近1,则代表概率越大,在分类任务中则代表越有可能属于这一类,因此我们经常能够在最后的输出层看到Softmax的身影。

1.3 Softmax在Encoder中的核心作用

在计算自注意力机制的过程中会用到Softmax激活函数,这里阐述一下其在注意力机制中所发挥的作用。

1.31 归一化注意力权重

  • 概率分布特性:softmax将实数分数转换为概率分布([0,1]区间,总和为1),明确每个位置对其他位置的影响程度。

  • 示例:若输入为句子,softmax能突出语义相关的词(如动词与主语),抑制无关词。

1.32 动态聚焦重要信息

  • 指数放大效应:softmax的指数运算会放大高分值,抑制低分值,使模型更关注强相关的位置。

  • 示例:在句子“The animal didn’t cross the street because it was too tired”中,softmax会让“it”更关注“animal”而非“street”。

1.33 支持长距离依赖

  • 全局交互:无论位置远近,softmax允许模型直接计算任意两个位置的相关性,克服了RNN的序列依赖限制。

  • 示例:捕捉段落中首尾呼应的关键词,无需逐步传递信息。

2. 自注意力机制的原理和计算

2.1 注意力机制的计算公式

其中Q代表query(查询),K代表key(键),V代表value(值),代表K的转置,代表最后一维的维度(特征维度)。

2.2 注意力机制的计算原理

我们以这张图为例,X是一个4行5列的输入,然后X分别经过三个线性层变为Q,K,V,这里Q,K,V的形状并没有发生改变,我们可以判断这里的Linear应该是一个方阵,这三个Linear从上至下我们可以分别看作,三个权重矩阵,通过这三个权重矩阵将输入X分别映射为Q,K,V,随后Q和进行矩阵乘法运算再进行Softmax处理获得Attention Score,也就是Attn矩阵,Attn矩阵再与V进行矩阵乘法,随后通过一个Linear线性层获得最后的输出Out,这就是注意力机制的整个运算流程。自注意力机制呢则是在此基础上要求初始化的Q,K,V相同,即Q=K=V,而普通的注意力机制没有此要求,也就是满足K=V即可,Q无需与其相同。(在这里整个讲解过程我都是直接用的矩阵的形式来进行讲解,而实际的运算过程也是于此相同。我并没有拿出一个单独的样本进行讲解,这是因为那样之后即使听懂也很难以自行回归到矩阵计算。矩阵计算你可以理解为数学层面的“并行”计算,他虽不是真正的并行计算,却能起到和并行计算近似的作用)

2.3 关于注意力机制的计算公式中为什么要除以的问题的回答

相信不少朋友们对此是存在异或的,这里我从两个角度进行解答。

1. 直观感受角度:当越大时即最后一维的维度越大时,就会造成的值越大,体现为方差变大,一旦如此再经过Softmax函数的作用会进一步放大更大的部分,从而可能会出现一个值为1,其他值几乎完全不起作用的情况,显然这不是我们想要的,因此除了一个来解决这个问题。

2.严禁数学角度:我们可以把Q和K看作相互独立的服从标准正态分布的随机变量,那么根据概率统计的知识我们不难发现就服从均值为0,方差为的正态分布,而我们希望在这个过程中的方差保持不变,因此我们需要对每个随机变量同时除以来消除掉方差的影响。

3. 多头自注意力机制的原理和计算

3.1 多头注意力机制图

3.2 多头自注意力机制的计算原理

Multi-Head Attention总体计算原理和Self Attention基本一样,唯一不同点在于Multi-Head Attention引入了head(头),通常head设置为8(12,16也可,具体情况具体分析),他的作用是将Self-Attention中提到的(词嵌入维度)均分,然后进行并行计算,每一个head都是相互独立的,其他计算于Self-Attention没有区别。

3.3 多头自注意力机制的优势

3.31 捕捉多样化依赖模式

  • 单头局限性:单头自注意力只能学习一种全局的注意力模式(例如全局关注动词与主语的关联)。

  • 多头优势:每个头可独立关注不同的语义或语法关系,例如:

    • 一个头捕捉长距离依赖(如段落首尾呼应)。

    • 另一个头捕捉局部结构(如短语内部的修饰关系)。

    • 其他头可能关注词性句法角色

3.32 计算效率优化

  • 并行计算:多个头的计算可并行化,充分利用GPU/TPU的硬件加速能力。

  • 维度分解:通过将 ()​ 分解为多个低维子空间(),在保持总计算量相近的前提下,提升特征多样性。

3.33 增强模型鲁棒性

  • 冗余性:多个头的并行计算引入冗余性,避免模型过度依赖单一注意力模式。

  • 抗噪能力:即使某些头因噪声失效,其他头仍能提供有效信息。

4. 残差连接(Residual Connection)的原理

4.1 为什么需要残差连接

在深度神经网络中,随着层数的增加,网络的性能在一定程度上会提高。然而,深度网络的训练也面临着一些挑战,其中之一是梯度消失或梯度爆炸的问题。当反向传播过程中的梯度变得非常小或非常大时,网络的参数更新会受到影响,导致训练变得困难。

4.2 残差连接的思想

残差连接的核心思想是引入一个"shortcut"或"skip connection",允许输入信号直接绕过一些层,并与这些层的输出相加。这样,网络不再需要学习将输入映射到输出的完整函数,而是学习一个残差函数,即输入与期望输出之间的差异。假设一个层的输入为 x,输出为 F(x),那么该层的残差连接可以表示为:

4.3 残差连接的作用

4.31 解决梯度消失/爆炸问题

  • 问题背景:在深层神经网络中,梯度在反向传播时可能因多次链式求导而急剧缩小(消失)或增大(爆炸),导致浅层参数难以更新。

  • 残差的作用

    • 梯度直通:残差连接允许梯度直接通过跳跃路径回传,绕过了复杂的非线性变换层,减少了梯度逐层传递的衰减。

    • 稳定训练:即使某些层的梯度趋近于零,跳跃连接仍能保留有效的梯度信号,确保深层网络的稳定训练。

示例:ResNet-152(152层)通过残差连接成功训练,而普通CNN在20层以上就可能因梯度消失无法收敛。

4.32 允许构建更深的网络

  • 深层网络的表达能力:网络越深,理论上能学习更复杂的特征,但实际中普通深层网络因训练困难而性能下降(退化问题)。

  • 残差的作用

    • 退化问题缓解:残差块让网络更容易学习“恒等映射”(即输出等于输入),即使新增层无效,也不会比浅层网络更差。

    • 突破深度限制:ResNet通过残差连接构建了超过1000层的网络,显著提升了模型容量。

示例:ImageNet比赛中,ResNet-152的错误率(3.57%)远低于VGG-19(7.3%),证明了深度的优势。

4.33 促进特征复用与信息流动

  • 低层次特征保留:浅层网络提取的细节特征(如边缘、纹理)在深层可能被丢失,残差连接通过跳跃路径保留这些信息。

  • 残差学习的本质:网络只需学习输入与输出的差异(残差 F(x)=H(x)−x),而非直接拟合复杂映射 H(x),简化了学习目标。

示例:在图像分割任务中,跳跃连接(如U-Net)将浅层的细节特征与深层的语义特征融合,提升分割精度。

4.34 提升模型鲁棒性

  • 冗余性增强:多个残差路径提供了信息传递的冗余通道,即使某些路径失效,其他路径仍能维持网络功能。

  • 抗噪能力:输入信号通过残差连接直接传递,减少了噪声在多层变换中的累积效应。

4.4 残差连接在transformer中的作用

Transformer模型中的每个子层(自注意力层、前馈网络)均采用残差连接,其结构为:

Output=LayerNorm(x+Sublayer(x))   ★Sublayer(子层的意思)

  • 作用

    • 缓解深层Transformer的训练不稳定问题。

    • 允许注意力机制专注于学习输入序列的交互关系,而跳跃连接保留原始位置信息。

示例:GPT-3(1750亿参数)依赖残差连接实现超深层的稳定训练。

5. 层归一化(Layer Norm)的原理

5.1 Layer Normalization的定义

Layer Normalization 的目标是在神经网络的每一层中,对该层所有神经元的激活值进行归一化。具体来说,LayerNorm 将每一层的激活值转换为均值为 0、标准差为 1 的分布,然后对结果进行缩放和偏移。

计算公式为

其中为均值,为标准差。假设H为该层神经元的个数,是一个非常小的正数(用来防止除0错误),则有

经过归一化后,每个归一化后的激活值会进行缩放和偏移操作,以保持模型的表达能力。这个过程通过引入可学习的参数来完成:

其中:

是缩放系数,用于控制归一化后的尺度(可学习)

是偏移系数,用于控制归一化后的位移(可学习)

5.2 Layer Norm 的核心作用

5.21 稳定特征分布,缓解内部协变量偏移(Internal Covariate Shift)

5.22 加速模型收敛

  • 梯度优化平滑化:归一化后的特征分布更稳定,使得优化器(如Adam)更容易找到梯度下降方向。

  • 降低对初始化和学习率的敏感度:归一化后的参数尺度一致,减少超参数调优难度。

5.23 缓解梯度消失/爆炸

  • 梯度传播稳定性:归一化操作限制了激活值的范围,避免深层网络中梯度因数值过大或过小导致的不稳定。

5.24 适配变长序列数据(如Transformer)

  • 与Batch Norm的区别

    • Batch Norm在批量维度归一化,对序列长度敏感,不适合变长输入(如NLP任务)。

    • Layer Norm在特征维度归一化,独立处理每个样本,完美适配变长序列。

5.3 Layer Norm在Transformer中的具体应用

在Transformer的Encoder/Decoder中,Layer Norm通常与残差连接结合,形成以下两种结构:

5.31 Post-Norm(原始Transformer设计)

Output=LayerNorm(x+Sublayer(x))

  • 特点:先执行残差连接,再进行归一化。

  • 优势:确保输入到下一层的分布稳定。

  • 缺点:深层训练可能不稳定(需配合较小的初始化和精细调参)。

5.32 Pre-Norm(现代改进版)

Output=x+Sublayer(LayerNorm(x))

  • 特点:先归一化,再执行子层计算和残差连接。

  • 优势:训练更稳定,适合极深层模型(如GPT-3)。

  • 缺点:理论收敛性略弱于Post-Norm。

6.结语

到此为止,我的第二篇关于Transformer细节模块介绍的讲解也是彻底结束了,利用这篇博客结合上篇博客相信大家应该可以把Transformer架构基本搞清楚啦!还是欢迎各位朋友们积极为我指出错误,若想与我本人深入探讨还请加q:3125295956。

如果你觉得这篇博客对你很有帮助,请不要吝啬点赞👍收藏+关注,你们的三连是我继续前进的动力!

 

 

 

Transformer是一种基于注意力机制(Attention Mechanism)的深度学习模型架构,最初由Vaswani等人在论文《Attention is All You Need》中提出。它彻底改变了自然语言处理领域的传统做法,并成为许多先进模型的基础框架。 ### Transformer的核心思想 传统的序列建模方法如RNN、LSTM存在训练速度慢、难以并行化的问题。而Transformer通过自注意力机制(Self-Attention),能够在一次前向传播过程中捕捉到输入序列的所有位置之间的依赖关系,从而解决了这些问题。 #### 主要组成部分包括: 1. **编码器(Encoder)** 编码器负责将输入序列转换成高维表示向量。每个编码层包含两个子模块:一个多头注意力机制(Multi-head Attention)一个全连接网络(Feed Forward Network)。这两个子模块之间采用残差连接归一化操作。 2. **解码器(Decoder)** 解码器接收来自编码器的信息以及自身的先前输出预测结果,逐步生成目标序列。其结构类似于编码器,但也加入了“掩码多头注意力”以防止当前位置看到未来的标记信息。 3. **自注意力机制(Self-Attention / Multi-head Attention)** 自注意力允许模型关注句子中的不同部分,在计算某个词的上下文时表示时赋予其他单词不同程度的重要性权重值。这种机制使得长距离依赖更容易被捕获。 4. **Positional Encoding (位置嵌入)** 因为Transformer抛弃了递归形式的设计,默认无法感知输入数据的位置顺序关系,所以引入了固定模式的位置编码来增加时间维度上的特征表达能力。 --- ### 为什么Transformers很重要? - 它们极大地提高了机器翻译等任务的质量; - 提供了一个高效的学习框架可以扩展至非常大的规模; - 成为了预训练通用语言表征的重要工具,例如BERT、GPT系列皆以此为基础构建而成;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值