本文档介绍了 Transformer 架构,这是一种完全基于注意力机制的神经网络架构,不使用卷积或循环层。Transformer 最初在 2017 年的论文“Attention is All You Need”中提出,并已成为自然语言处理、计算机视觉和许多其他领域的基石。有关构成 Transformer 的特定注意力机制的信息,请参阅 注意力机制。
Transformer 是一种编码器-解码器架构,它依赖注意力机制来处理序列数据。其主要创新在于完全消除了循环连接,从而实现了显著更高的训练并行度。该架构解决了早期序列模型在处理长距离依赖关系时存在的局限性。
来源: chapter_attention-mechanisms/transformer.md1-18 此图显示了 Transformer 的高级架构,它由一个编码器堆栈、一个解码器堆栈以及位置编码和注意力机制等各种支持组件组成。
Transformer 架构由几个核心组件组成,它们协同工作
| 组件 | 目的 |
|---|---|
| 多头注意力 | 允许模型联合关注不同表示子空间中的信息 |
| 位置编码 | 注入有关序列中 token 位置的信息 |
| 逐位置前馈网络 | 独立地将相同的 MLP 应用于每个位置 |
| Add & Norm(残差 + 层归一化) | 通过稳定梯度来促进深度网络的训练 |
| 掩码注意力(在解码器中) | 通过防止关注未来位置来确保自回归属性 |
来源: chapter_attention-mechanisms/transformer.md7-18 chapter_attention-mechanisms/self-attention-and-positional-encoding.md142-166
逐位置前馈网络(FFN)独立地将相同的变换应用于序列中的每个位置。它由两个线性变换组成,中间夹有一个 ReLU 激活函数
逐位置前馈网络的实现如下
来源: chapter_attention-mechanisms/transformer.md57-119
Transformer 在每个子层之后使用残差连接,然后进行层归一化。这种组合对于能够训练深度 Transformer 网络至关重要
实现将这些操作组合在了一个 AddNorm 类中
来源: chapter_attention-mechanisms/transformer.md150-252
Transformer 编码器由多个相同的层堆叠而成。每个编码器层有两个子层
编码器实现
来源: chapter_attention-mechanisms/transformer.md273-387
Transformer 解码器也由多个相同的层堆叠而成。每个解码器层有三个子层
解码器实现
来源: chapter_attention-mechanisms/transformer.md543-738
由于 Transformer 架构不包含循环和卷积,因此它依赖位置编码来融入有关 token 序列位置的信息。位置编码使用不同频率的正弦和余弦函数
位置编码的实现
来源: chapter_attention-mechanisms/self-attention-and-positional-encoding.md142-245
多头注意力允许模型在不同位置联合关注来自不同表示子空间的信息。它由多个并行运行的注意力头组成
多头注意力的实现
来源: chapter_attention-mechanisms/multihead-attention.md86-217
下图显示了 Transformer 的主要组件在代码库中的实现方式
来源: chapter_attention-mechanisms/transformer.md386-510 chapter_attention-mechanisms/multihead-attention.md86-217
训练期间,Transformer 并行处理输入序列,从而实现高效计算。推理期间,解码器自回归地操作,一次生成一个 token。
Transformer 训练和推理之间的主要区别在于
来源: chapter_attention-mechanisms/transformer.md543-645
Transformer 架构提供了几个优势
来源: chapter_attention-mechanisms/self-attention-and-positional-encoding.md104-141
Transformer 架构通过用注意力机制替换循环和卷积运算,代表了序列处理范式的转变。它并行处理序列和建模长距离依赖关系的能力使其成为各个领域许多最先进模型的基础。该架构的灵活性使其除了最初在机器翻译中的应用之外,还可以适应许多其他应用。