Transformer 模型
Transformer 模型,自 2017 年由 Vaswani 等人提出以来,在自然语言处理(NLP)领域引发了革命性的变革。这一模型的核心在于其独特的自注意力机制和多头注意力机制,以及由编码器和解码器构成的精妙架构。模型结构图示如下:
Transformer 模型结构
Transformer 模型的核心架构由编码器和解码器两大部分组成。这两部分各自包含多个相同的层堆叠而成,每一层都包含特定的子层设计,旨在处理序列到序列的任务,如机器翻译、文本摘要等。
01.编码器(Encoder):
负责处理输入序列,并生成上下文丰富的表示。它由多个相同的层堆叠而成,每层包含两个主要的子层——多头注意力机制和前馈神经网络(Feed-Forward Neural Network)。此外,编码器还引入了位置编码(Positional Encoding),以保留序列中单词的顺序信息,因为 Transformer 本身不具有处理序列顺序的能力。
02.解码器(Decoder):
负责生成输出序列。它的结构与编码器相似,但在多头注意力机制和前馈神经网络层之间增加了一个 Masked Multi-Head Attention 层,用于确保生成的序列不会参考未来的信息。解码器的每一层同样包含残差连接(Residual Connections)和层归一化(Layer Normalization),以增强学习效率和稳定性。
03.多头注意力机制(Multi-Head Attention)
多头注意力机制是 Transformer 模型的核心之一,它允许模型在同一时刻关注序列中的多个位置,从而捕捉丰富的上下文信息。
输入向量:
给定输入的查询(Query)、键(Key)和值(Value)向量。
注意力权重计算:
通过点积将查询与键进行相似性计算,经过 Softmax 函数生成注意力权重。
输出生成:
将注意力权重应用于值,生成加权和作为输出。
多头机制:
不同的头参数化模型训练的不同子空间,最后将所有头的输出拼接并通过线性变换获得最终结果。这个过程使得模型能同时从不同的子空间中学习信息,从而增强了上下文建模。
多头注意力机制通过引入多个并行的注意力头,提高了模型对输入数据的全面捕捉和处理能力,使其在处理大规模数据和复杂任务时更具优势。
编码器与解码器
01.编码器(Encoder)
编码器的作用是将输入序列转换为一系列上下文丰富的表示。这一转换过程通过多层堆叠实现,每层都包含多头注意力机制和前馈神经网络。
输入嵌入:
将输入词汇转换为密集的向量表示。
位置编码:
为输入向量添加位置信息,以帮助模型理解序列的顺序。
多头注意力机制:
计算输入序列中各个位置之间的关联性,生成上下文向量。
前馈神经网络:
对上下文向量进行变换,增强其表征能力。
编码器的每一层输出都会经过层归一化和残差连接,最终产生编码器的输出,这些输出将作为解码器的输入。
02.解码器(Decoder)
解码器的作用是将编码器的输出转换为目标序列。它的结构与编码器相似,但增加了一个 Masked Multi-Head Attention 层,以确保在生成输出序列时不会访问未来的信息。
Masked Multi-Head Attention:
确保解码器在生成下一个单词时,只能利用已经生成的单词的信息。这一机制保证了生成时的信息安全性。
Multi-Head Attention:
解码器从编码器输出中获取上下文信息,进行处理。
前馈神经网络:
对多头注意力的输出进行处理,以增强其表征能力。
解码器的每一层同样包含残差连接和层归一化,以确保模型的稳定性和学习效率。
解码器的输出通过 softmax 函数形成概率分布,最终选择概率最高的词作为输出。
总结
Transformer 模型通过其独特的编码器-解码器结构与多头注意力机制,极大地提高了序列到序列任务的表现力,从此打开了深度学习的另外一扇大门。
END
作者:gloomyfish
来源:OpenCV学堂
推荐阅读
- 多视角 Transformer,在图像分类、目标检测以及实例和语义分割实现 Top-1 精度 !
- SGLang 的 Expert Parallel 特性解读
- 简化 Transformer 结构:在 RTX3090 上实现 CLIP 的轻量级训练!
- PyTorch 原生 FP8 训练进展
欢迎大家点赞留言,更多 Arm 技术文章动态请关注极术社区嵌入式 AI 专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。