菜单

Transformer 架构

相关源文件

本文档介绍了 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 编码器由多个相同的层堆叠而成。每个编码器层有两个子层

  1. 多头自注意力机制
  2. 逐位置前馈网络

编码器实现

来源: chapter_attention-mechanisms/transformer.md273-387

解码器架构

Transformer 解码器也由多个相同的层堆叠而成。每个解码器层有三个子层

  1. 掩码多头自注意力机制
  2. 多头编码器-解码器注意力机制
  3. 逐位置前馈网络

解码器实现

来源: 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 代码结构

下图显示了 Transformer 的主要组件在代码库中的实现方式

来源: chapter_attention-mechanisms/transformer.md386-510 chapter_attention-mechanisms/multihead-attention.md86-217

训练和推理过程

训练期间,Transformer 并行处理输入序列,从而实现高效计算。推理期间,解码器自回归地操作,一次生成一个 token。

Transformer 训练和推理之间的主要区别在于

  1. 在训练期间,解码器可以使用掩码注意力机制并行处理整个目标序列,以防止关注未来位置
  2. 在推理期间,解码器逐个生成 token,每个预测作为输入反馈到模型中以进行下一个位置

来源: chapter_attention-mechanisms/transformer.md543-645

主要优点

Transformer 架构提供了几个优势

  1. 并行性:消除了顺序计算依赖,使得在现代硬件上进行训练更加高效
  2. 长距离依赖:能够对序列中任意距离的依赖关系进行建模
  3. 可解释性:注意力权重提供了对哪些输入元素对每个输出元素重要的洞察
  4. 可扩展性:可以扩展到拥有数十亿参数的非常大的模型

来源: chapter_attention-mechanisms/self-attention-and-positional-encoding.md104-141

总结

Transformer 架构通过用注意力机制替换循环和卷积运算,代表了序列处理范式的转变。它并行处理序列和建模长距离依赖关系的能力使其成为各个领域许多最先进模型的基础。该架构的灵活性使其除了最初在机器翻译中的应用之外,还可以适应许多其他应用。

来源: chapter_attention-mechanisms/transformer.md1-18