1. 首页 > 百货 > 家电数码

Transformer的核心理解起来也不难 但为什么这么强呢

Transformer的强大在于它的设计。 高票答案已经详细讲解了Transformer在长距离依赖建模方面的能力,我就试着从设计方面补充一下“Transformer能够work很好”的其他几个原因吧。抛砖引玉,大家轻拍。

并行计算 + 强大的表达与泛化能力

传统的循环神经网络(RNN)在处理序列数据时需要按顺序逐步计算,无法并行。而Transformer可以做到”同时计算所有位置的输出”!它是怎样做到的呢?

上图是论文中 Transformer 的内部结构图,左侧为 Encoder block,右侧为 Decoder block。

首先,Transformer使用 位置编码 (Position Encoding)来记录各单词在语句中的位置或次序,位置编码的值遵循一定规则(如由三角函数生成),每个源单词(或目标单词)的Word Embedding与对应的位置编码相加(位置编码向量与Word Embedding的维度相同)得到自己的编码,并最终成为Encoder的输入。

Transformer的Encoder组件由6个相同结构的Encoder串联而成,Decoder组件也是由6个结构相同的Decoder串联而成。 最后一层Encoder的输出将传入Decoder的每一层。

进一步看,每个Encoder中的Multi-Head Attention, 通过多个独立的注意力头并行计算,可以从不同的子空间中学习到不同的表示,从而使模型拥有关注语言不同方面的能力 。下面是Multi-Head Attention的内部结构,

从上图可以看到 Multi-Head Attention 包含多个 Self-Attention 层,首先将输入X分别传递到 h 个不同的 Self-Attention 中,计算得到 h 个输出矩阵。

然后,Multi-Head Attention 将它们拼接在一起 (Concat),传入一个Linear层,得到 Multi-Head Attention 最终的输出Z

Linear层(全连接的神经网络层)的映射是 非线性变换 ,它的作用是对输入进行维度变换和特征提取。线性变换只能进行简单的比例缩放和平移操作,而非线性变换可以引入更多的复杂性,例如曲线形状、峰值和谷底等。这样可以使模型更加灵活,能够更好地适应不同类型的数据分布,从而增加模型的表达能力。

Multi-Head Attention 上方还包括一个 Add & Norm 层,Add 表示残差连接 (Residual Connection) 用于防止网络退化(这也是RNN的顽疾),而Norm 表示 Layer Normalization,用于对每一层的激活值进行归一化,也就是将每一层神经元的输入都转成均值方差都一样的,这样可以加快收敛。

除了多头机制,Transformer还使用了Feed Forward前馈网络,它由两个线性变换和一个非线性激活函数(通常是ReLU)组成。输入的词向量经过一个线性变换,将其映射到一个更高维度的空间。然后,通过ReLU进行非线性变换。最后,再经过一个线性变换,将其映射回原始的词向量维度。通过多层前馈网络的堆叠,模型可以学习到更复杂的特征表示,从而更好地捕捉输入序列中的语义信息。

Transformer架构强大的表达与泛化能力使之成为GPT等大语言模型的底层核心,如果你也对Transformer和大模型感兴趣,想掌握使用和开发大模型的必备技巧,最终进入这一领域,那么选择一门相应的网课是比较快的路径。

传统序列模型在处理长序列时,由于信息的传递是依次进行的,容易出现梯度消失或梯度爆炸的问题,同时也无法充分捕捉到序列中不同位置之间的依赖关系。

通过引入注意力机制,我们可以对 每个位置的注意力权重进行独立计算,不需要像传统序列模型那样依次进行计算,从而实现全局的信息交互。 这也使得自注意力模型在处理长序列时具有更高的效率。

在这个模型中,MatMul是矩阵乘法的操作。具体来说, MatMul将查询矩阵Q与键矩阵K相乘,得到一个注意力分数矩阵。这个注意力分数矩阵表示了查询与每个键之间的相关性或相似度 ,从而决定在注意力机制中分配多少注意力权重给每个键对应的值(Value)。通过将注意力分数矩阵与值矩阵V相乘,可以得到最终的注意力表示。

Scale是指对注意力分数进行缩放的操作。 在计算注意力分数时,通常会将点积的结果除以一个缩放因子,这个缩放因子是注意力机制中的一个超参数。缩放的目的是为了控制注意力分数的大小,使其更稳定和可解释。

具体来说,计算注意力分数的公式为:Attention(Q, K) = softmax(QK^T / sqrt(d_k)) * V

其中,Q表示查询(Query),K表示键(Key),V表示值(Value),d_k表示键的维度。在计算注意力分数时,将点积结果除以sqrt(d_k)来进行缩放。这个缩放因子可以使得注意力分数的范围更合适,避免了点积结果过大或过小的情况。

较大的缩放因子可以增加注意力分数的范围,使得模型更加关注不同位置之间的差异;较小的缩放因子可以减小注意力分数的范围,使得模型更加平均地分配注意力权重。

这种注意力机制不依赖于外部的上下文信息,而是通过内部的自我关注来计算注意力权重。因此,它被称为self-attention自注意力机制。

Mask是一种用于控制注意力机制的操作。 它被用来屏蔽或限制模型在计算注意力分数时对某些位置的关注。 在自注意力模型中,常见的mask操作有两种:padding mask和sequence mask。

通过使用mask操作,自注意力模型可以更好地处理变长序列和生成任务,并且能够控制模型在计算注意力分数时的关注范围。不同的任务和应用场景可能需要不同类型的mask操作。

比如在机器翻译任务中,我们希望将一个源语言句子逐步翻译成目标语言句子。使用sequence mask可以确保模型只能依赖于之前已生成的部分,逐步生成目标语言句子。

而在文本分类任务中,输入的文本长度可能不一致。使用padding mask可以将填充部分的注意力权重设为0,忽略填充部分的影响,确保模型只关注真实的文本内容。

如今当我们谈论Transformer时,其实是在谈论一个大家族。2018年年初,AllenNLP发布了一个新模型ELMo。ELMo是一种比Word2vec更好的训练词向量的模型。而之后的BERT、RoBERTa、XLNet、T5、ALBERT、GPT-3等模型从自然语言理解及自然语言生成等角度,不断刷新自然语言处理领域任务的SotA(State of the Art)表现。

Transformer架构也像其他AI新技术一样,会不断迭代和更新,如果你也对Transformer大家族感兴趣,想进入大模型开发这一热门领域,那么通过学习一门靠谱的网课会是比较快的路径。

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载者并注明出处:https://www.jmbhsh.com/jiadianshuma/35978.html

联系我们

QQ号:***

微信号:***

工作日:9:30-18:30,节假日休息