跳转到主要内容

通俗易懂的 Transformers

Transformers 是 ChatGPT、BERT 和几乎所有现代 AI 模型背后的技术。让我们在不涉及数学的情况下理解它们是什么。

核心思想

想象您正在阅读一个句子。要理解每个单词,您需要考虑它周围的所有其他单词。单词”bank”在”river bank”和”savings bank”中的含义是不同的。 Transformers 正是这样做的 - 它们同时查看所有单词以理解上下文。这是它们的超能力。

Transformers 之前

旧方式 (RNNs)

以前的 AI 模型像人类一样阅读文本 - 一次一个单词,从左到右:
The → cat → sat → on → the → mat
问题
  • 慢(无法并行读取单词)
  • 健忘(在长文本中丢失上下文)
  • 难以训练(信息丢失)

Transformer 革命 (2017)

Transformers 通过同时读取所有单词改变了一切:
[The, cat, sat, on, the, mat] → 全部一起处理
好处
  • 快(并行处理)
  • 更好的上下文理解
  • 很好地处理长文本
  • 更容易训练

Transformers 如何工作

将 transformers 视为具有三个主要组件:

1. Attention Mechanism

“attention”部分就像在阅读时突出显示重要单词。 示例句子:“The animal didn’t cross the street because it was too tired” Transformer 找出:
  • “it”指的是”animal”(不是”street”)
  • “tired”与”animal”相关
  • 这决定了含义
Attention 在相关单词之间创建连接,无论它们相距多远。

2. Positional Encoding

由于 transformers 同时看到所有单词,它们需要知道单词顺序。 没有位置信息:
  • “Dog bites man” = “Man bites dog”(非常不同!)
Transformers 为每个单词添加位置信息:
  • Word 1: “Dog” + [position 1]
  • Word 2: “bites” + [position 2]
  • Word 3: “man” + [position 3]

3. Feed-Forward Networks

在理解关系(attention)之后,模型通过神经网络处理这些信息以:
  • 提取含义
  • 做出预测
  • 生成响应

Encoder vs Decoder

Transformers 有三种类型:

Encoder-Only (BERT)

功能:深入理解文本 :仔细分析每个单词的细心读者 适合
  • Classification
  • 理解上下文
  • 提取信息
  • 情感分析
工作原理:读取所有单词以建立理解

Decoder-Only (GPT)

功能:生成文本 :逐字创建内容的作家 适合
  • 文本生成
  • 聊天机器人
  • 代码补全
  • 创意写作
工作原理:基于前面的单词预测下一个单词

Encoder-Decoder (T5)

功能:转换文本 :阅读一种语言并编写另一种语言的翻译器 适合
  • 翻译
  • 摘要
  • 问答
  • 文本转换
工作原理:Encoder 读取输入,decoder 生成输出

Self-Attention 详解

Transformers 的关键创新是”self-attention” - 将每个单词与所有其他单词关联的能力。

简单示例

句子:“The cat sat on the mat” Self-attention 创建一个网格,显示每个单词与其他单词的关系程度:
        The  cat  sat  on  the  mat
The      •    •    ○    ○    ○    ○
cat      •    •    •    ○    ○    ○
sat      ○    •    •    •    ○    •
on       ○    ○    •    •    •    •
the      •    ○    ○    •    •    •
mat      ○    ○    •    •    •    •

• = 强关系
○ = 弱关系
模型在训练期间学习这些关系。

Multi-Head Attention

Transformers 使用多个 attention “heads” - 就像有多个专家,每个专家都在寻找不同的模式:
  • Head 1:寻找语法关系
  • Head 2:寻找语义含义
  • Head 3:寻找实体关系
  • Head 4:寻找时间连接
  • (还有更多…)
所有这些视角结合起来形成丰富的理解。

Layers and Depth

Transformers 堆叠多个层,每一层都增加更多理解: Layer 1:基本模式(语法、简单关系) Layer 2:短语和简单概念 Layer 3:句子和上下文 Layer 4:段落和主题 … Layer N:深入、抽象的理解 更多层 = 更深入的理解(但也需要更多计算)

为什么 Transformers 占主导地位

Parallelization

旧模型:顺序处理单词(慢) Transformers:同时处理所有单词(快) 这使得在现代 GPU 上训练快得多。

Long-Range Dependencies

可以连接长距离的信息:
  • 文档的开头和结尾
  • 被段落分隔的问题和答案
  • 来自更早的上下文

Transfer Learning

在通用文本上训练的 Transformers 可以针对特定任务进行微调:
  1. 在 Wikipedia 上预训练(通用知识)
  2. 在医学文本上微调(专业化)

Scalability

Transformers 随着以下因素变得更好:
  • 更多数据
  • 更多参数
  • 更多计算
这种可预测的扩展使像 GPT-4 这样的大型模型成为可能。

常见的 Transformer 模型

BERT 系列

  • BERT:双向理解
  • RoBERTa:稳健优化的 BERT
  • DistilBERT:更小、更快的 BERT
  • ALBERT:更轻的 BERT

GPT 系列

  • GPT-2:早期文本生成
  • GPT-3:大规模生成
  • GPT-4:多模态能力

T5/BART 系列

  • T5:文本到文本统一框架
  • BART:去噪自编码器
  • mT5:多语言 T5

专门化

  • CLIP:视觉和语言
  • Whisper:语音识别
  • LayoutLM:文档理解

Transformer 大小

大小参数层数用例
Tiny100M 以下4-6移动、边缘设备
Small100-500M6-12标准应用
Base500M-1B12-24生产系统
Large1B-10B24-48高性能
XL10B+48+最先进

计算要求

训练

  • 小模型:在单个 GPU 上数小时
  • 中等模型:在多个 GPU 上数天
  • 大模型:在 GPU 集群上数周

推理

  • 小模型:CPU 可用
  • 中等模型:单个 GPU
  • 大模型:多个 GPU

内存公式(粗略)

  • Parameters × 4 bytes = 模型大小
  • 训练时增加 2-3 倍(gradients、optimizer)
  • 示例:1B 参数 ≈ 4GB 模型,训练时 12GB

优化和变体

Flash Attention

通过重新组织内存访问使 attention 计算快得多。

Sparse Attention

只关注重要的 tokens,而不是所有 tokens。

Efficient Transformers

  • Linformer:线性复杂度 attention
  • Performer:使用随机特征
  • Reformer:可逆层

Mixture of Experts (MoE)

为不同的输入使用不同的”expert”网络,只激活需要的部分。

限制

Quadratic Complexity

Attention 成本随序列长度呈二次增长:
  • 100 tokens: 10,000 次比较
  • 1,000 tokens: 1,000,000 次比较

Context Windows

有限的输入长度:
  • BERT: 512 tokens
  • GPT-3: 4,096 tokens
  • GPT-4: 32,000 tokens
  • Claude: 100,000+ tokens

Computational Cost

大型模型的训练和运行成本很高。

Lack of True Understanding

尽管能力令人印象深刻,transformers 并不真正”理解” - 它们找到模式。

未来方向

效率改进

  • 更好的 attention 机制
  • 稀疏模型
  • Quantization
  • Distillation

更长上下文

  • 扩展 context windows
  • 高效的长距离 attention
  • 分层处理

Multimodal

  • 组合文本、图像、音频、视频
  • 统一架构
  • 跨模态理解

实际影响

对于训练

  • 从预训练的 transformers 开始
  • 在您的特定任务上微调
  • 为您的数据使用适当的模型大小

对于部署

  • 考虑用于生产的蒸馏版本
  • 使用 quantization 减少大小
  • 实现缓存以提高效率

对于选择

  • Encoder 用于理解任务
  • Decoder 用于生成任务
  • Encoder-decoder 用于转换任务

下一步