目录1 Multi-head Attention 计算公式常见问题1.1 Transformer 使用多头注意力机制的优势1.2 为什么 Q 和 K 需要使用不同的权重矩阵1.3 计算注意力使用点积计算优势1.4 为什么对 QKTQKT 进行 scaled 处理1.5 为什么在进行多头注意力时需要先 concat 再降维1.6 Masked Multi-head Attention 如何实现2 Transfomer 架构常见问题2.1 简要讲一下 Transformer 的 Encoder 模块2.2 讲一下 Transformer 的 Decoder 模块2.3 残差连接的作用和意义2.4 为什么 Transformer 使用 LayerNorm 而不是 BatchNorm3 Transformer 的位置编码及其意义3.1 为什么 Transformer 需要位置编码3.2 正弦余弦位置编码Sinusoidal Positional Encoding3.3 可训练位置编码Learnable Positional Encoding3.4 位置编码的作用和意义4 Transformer 并行计算4.1 自注意力机制的并行计算4.2 多头注意力的并行计算4.3 前馈神经网络FFN的并行计算4.4 位置编码Positional Encoding无依赖性4.5 训练过程的并行化4.6 总结详细介绍可参考Transformer超详细全解含代码实战_transformer源码解析-CSDN博客https://blog.csdn.net/qq_54708219/article/details/1489978621 Multi-head Attention 计算公式常见问题1.1 Transformer 使用多头注意力机制的优势回答多头注意力机制Multi-Head Attention可以让模型从不同的表示子空间中学习不同的特征增强模型的表达能力。使用多个注意力头有如下优点提高模型的鲁棒性减少单个注意力头可能带来的信息丢失。允许不同的注意力头关注输入序列的不同部分使得模型能够捕捉更丰富的上下文信息。增强模型的能力避免单一注意力模式可能导致的局部最优问题。1.2 为什么 Q 和 K 需要使用不同的权重矩阵回答如果 Q 和 K 使用相同的权重矩阵则变成了一个对称矩阵这样会导致注意力分数的计算缺乏灵活性无法区分不同的输入关系。因此通常使用不同的权重矩阵来生成 Q 和 K其中 为不同的投影矩阵以提供不同的信息表示。1.3 计算注意力使用点积计算优势回答在 Transformer 中点积注意力Dot-product Attention是主要的注意力计算方式。相比于加法注意力Additive Attention点积计算方式的优点包括计算效率更高矩阵运算可以使用并行计算加速。避免了额外的可训练参数而加法注意力需要额外的权重矩阵和非线性变换。适用于高维度的向量尤其是使用多头注意力时点积计算更为高效。1.4 为什么对进行 scaled 处理回答在计算注意力分数时我们使用了计算相似度其中是 K 的维度。如果不进行缩放当较大时的数值会变得过大导致 softmax 的梯度消失问题。因此除以 可以使得分布更加平稳提高训练稳定性。1.5 为什么在进行多头注意力时需要先 concat 再降维回答如果不进行降维每个头的计算量会变得很大因此一般将 维的输入向量映射到一个较低维度的子空间使得每个注意力的计算量减少。如果我们直接相加所有注意力的输出都会累加到同一个维度上而多头注意力的核心优势在于不同的头可以关注不同的特征。直接相加会让这些不同特征的表示混合在一起可能导致模型无法区分不同的注意力模式降低表达能力。1.6 Masked Multi-head Attention 如何实现回答在计算注意力分数时对于 padding 位置我们可以使用一个 mask 矩阵 M将这些位置的注意力分数设为 -∞从而在 softmax 计算后变为 0其中M 的值为2 Transfomer 架构常见问题2.1 简要讲一下 Transformer 的 Encoder 模块Transformer 的 Encoder 由 N 层堆叠而成每一层包含以下主要部分多头自注意力 (Multi-Head Self-Attention)捕捉输入序列中不同位置之间的依赖关系。前馈神经网络 (Feed Forward Network, FFN)用于对每个 token 进行非线性变换提高模型的表达能力。残差连接 (Residual Connection) Layer Normalization保证梯度稳定提高训练效果。计算流程1. 计算自注意力其中 Q,K,V 均由输入 X 经过投影得到2.计算前馈神经网络 (FFN)3.通过 残差连接 LayerNorm 归一化输出2.2 讲一下 Transformer 的 Decoder 模块Transformer 的 Decoder 由 N 层相同的解码层堆叠而成每层包含Masked 多头自注意力 (Masked Multi-Head Self-Attention)防止当前 token 看到未来信息保证自回归生成。Encoder-Decoder 多头注意力 (Multi-Head Attention over Encoder Outputs)让 Decoder 关注 Encoder 计算出的特征。前馈神经网络 (Feed Forward Network, FFN)增强表达能力。残差连接 (Residual Connection) Layer Normalization (LayerNorm)稳定训练提高梯度传播能力。计算流程1.Masked 多头自注意力防止未来信息泄露仅利用已生成的 token 计算注意力其中 M 是 mask 矩阵屏蔽当前 token 之后的所有位置。2.Encoder-Decoder 多头注意力让 Decoder 关注 Encoder 的信息其中Q 由 Decoder 生成K 和 V 由 Encoder 计算得到。3.前馈神经网络 (FFN) 对每个位置的特性进行独立的非线性变换其中是可训练参数。4.残差连接 LayerNorm 每个子层后都加上残差连接Decoder 的最终输出Decoder 最后的输出会经过一个线性变换 Softmax 层得到最终的预测分布其中是 Decoder 最后一层的输出。总结Transformer 的 Decoder 由多个解码层组成每层包含Masked 自注意力、Encoder-Decoder 注意力、前馈神经网络、残差连接和 LayerNorm。Masked 机制确保 Decoder 逐步生成输出避免未来信息泄露。Encoder-Decoder 注意力使 Decoder 能够关注 Encoder 提供的特征。2.3 残差连接的作用和意义残差连接的主要作用如下缓解梯度消失问题梯度可以沿着残差路径传播使得深层网络的训练更加稳定。加速收敛通过跳跃连接使得梯度流动更加顺畅减少训练时间。允许信息直接传播输入信息可以直接通过残差路径流向更深层的网络防止信息丢失。提高模型泛化能力残差连接结合 LayerNorm可以防止模型过拟合提高泛化能力。2.4 为什么 Transformer 使用 LayerNorm 而不是 BatchNorm在 Transformer 中LayerNorm 更适合于序列建模任务主要原因如下适用于长输入序列BatchNorm 依赖于 mini-batch 统计量而 NLP 任务中的序列长度各不相同BatchNorm 可能表现不稳定而 LayerNorm 不受影响。独立于 batch sizeBatchNorm 需要较大的 batch size 来获得稳定的均值和方差而 Transformer 训练时 batch size 通常较小LayerNorm 更稳定。更适用于自注意力机制在 Transformer 结构中每个 token 之间的计算是独立的LayerNorm 可以为每个 token 进行归一化而 BatchNorm 需要整个 batch 的统计信息可能导致不稳定。训练更稳定LayerNorm 适用于梯度传播能够减少梯度消失/爆炸问题提高训练收敛速度。3 Transformer 的位置编码及其意义3.1 为什么 Transformer 需要位置编码Transformer 不像 RNN 那样按顺序处理输入序列而是并行计算这使得模型无法直接获得位置信息。为了让 Transformer 了解输入序列中单词的顺序我们需要引入 位置编码Positional Encoding将其加入词嵌入Embedding中其中X 是词嵌入向量Embedding维度为。PE 是位置编码维度与 X 相同使得模型能够学习到位置信息。3.2 正弦余弦位置编码Sinusoidal Positional EncodingTransformer 论文提出了一种基于正弦和余弦函数的位置编码方法其计算公式如下其中pos 表示序列中的位置Position。i 表示词向量的维度索引。是 Transformer 词嵌入的维度。优点位置编码对序列长度没有限制适用于任意长的序列。不同位置之间的相对关系可以通过线性变换实现即模型可以利用来推断相对位置信息。3.3 可训练位置编码Learnable Positional Encoding除了正弦余弦编码Transformer 也可以使用可训练的位置编码即其中是可学习参数模型在训练过程中自动调整其值。优点可学习的位置编码能够根据任务优化但缺点是对序列长度有限制无法处理比训练时更长的输入序列。3.4 位置编码的作用和意义位置编码的核心作用是提供序列的位置信息使得 Transformer 能够学习顺序信息保留顺序信息解决 Transformer 无法捕捉词序的问题。支持并行计算相比 RNN不需要逐步传递序列信息而是一次性引入位置信息。能学习相对位置信息尤其是正弦余弦编码可以帮助模型学到相对距离而不仅仅是绝对位置。4 Transformer 并行计算Transformer 相比于传统的 RNN 和 LSTM 具有更强的并行计算能力主要体现在以下几个方面4.1 自注意力机制的并行计算在 RNN 或 LSTM 中序列数据需要按照时间步Time Step进行逐个处理计算是串行的而 Transformer 采用自注意力机制Self-Attention可以对整个序列进行矩阵运算从而实现并行计算。自注意力的计算公式如下其中Q, K, V 是整个序列的表示矩阵大小为。计算时所有 token 之间的关系是同时计算的不需要像 RNN 那样按顺序处理每个时间步。由于该计算仅涉及矩阵乘法可以使用 GPU/TPU 进行大规模并行计算极大地加速了训练过程。4.2 多头注意力的并行计算多头注意力Multi-Head Attention通过多个不同的投影矩阵对输入数据进行多个独立的注意力计算其中每个头的计算方式是不同头的计算是完全独立的可以并行执行并最终拼接Concat。由于多个注意力头的计算可以同时进行这使得 Transformer 具有更强的计算效率。4.3 前馈神经网络FFN的并行计算Transformer 中的每个位置都会通过相同的前馈神经网络Feed Forward Network, FFN进行处理由于 FFN 对每个 token 是独立的所有 token 的 FFN 计算可以并行进行进一步提高计算速度。4.4 位置编码Positional Encoding无依赖性相比 RNN 需要通过时间步依赖线性传播信息Transformer 使用位置编码Positional Encoding来表示顺序信息这种方式使得不同位置的信息可以同时输入 Transformer 进行处理而不需要像 RNN 那样逐项传播。4.5 训练过程的并行化Transformer 采用 Teacher Forcing 训练方法即Encoder 部分输入序列 X 可以一次性全部处理不需要按时间步展开。Decoder 部分训练目标序列 Y 也是同时输入 Decoder不需要逐项预测预测时才是自回归。这种方法使得训练阶段的计算可以完全并行化相比 RNN 需要逐项展开的计算方式Transformer 训练更快能充分利用 GPU/TPU 进行高效计算。4.6 总结Transformer 之所以比 RNN 更容易并行化主要体现在自注意力计算是基于矩阵运算不依赖时间步展开可并行处理整个序列。多头注意力计算是独立的多个头可以同时计算注意力分数。前馈神经网络对每个 token 是独立的可以批量并行计算。位置编码代替了循环信息传播消除了对前一步状态的依赖。训练时使用并行的 Teacher Forcing而 RNN 训练需要逐步展开难以并行化。由于这些特性Transformer 可以高效利用 GPU/TPU 进行大规模并行计算大幅提高训练速度尤其适用于大规模数据和长序列任务。