系列文章:AI大模型知识体系 | 第一篇


一、为什么现在搞AI必须了解Transformer?

如果你最近在关注AI,那你一定听过ChatGPT、文心一言、通义千问这些大模型的名字。它们能写代码、能聊天、能帮你总结文档,几乎无所不能。但你可能不知道的是,这些看起来"智能"得不得了的模型,底层都建立在同一个架构之上——Transformer

Transformer诞生于2017年,Google的一篇论文《Attention Is All You Need》横空出世,标题就非常霸气:你只需要注意力。在那之前,处理文本序列主要靠RNN和LSTM,它们像一个一个字地读书,速度慢不说,读到后面还会忘了前面讲了什么。Transformer的出现彻底改变了这一切:它可以同时看到一整句话的所有词,而且能判断哪些词之间关系更密切。

今天这篇文章,我们就用最通俗的方式,带你从零理解Transformer的核心思想。不需要你有多深厚的数学功底,只要会写代码、有基本的编程思维,就能看懂。


二、注意力机制:像你在图书馆查资料

在讲Transformer之前,我们先来理解一个核心概念——注意力机制(Attention)

想象你在图书馆写一篇关于"如何养护多肉植物"的报告。你面前摆了一大桌子书,有《植物学概论》《多肉养护指南》《汽车修理手册》《Python编程入门》《花卉图鉴》等等。

你会怎么做?你肯定不会每本书都从头到尾读一遍,而是:

  1. 先明确你报告的主题是什么("多肉植物养护")

  2. 然后快速扫一眼每本书的标题和目录

  3. 判断哪些书跟你的主题相关度高

  4. 把注意力重点放在相关的书上,比如《多肉养护指南》你会仔细看,《汽车修理手册》你基本不看

这个过程,就是注意力机制的核心思想:根据当前需求,对不同信息源分配不同的关注度。相关的信息多关注,不相关的少关注甚至忽略。


三、Self-Attention:一句话里的词是怎么互相理解的?

Self-Attention,翻译过来叫自注意力,是Transformer最核心的组件。

我们来看一个例子。假设有一句话:

"我喜欢吃苹果"

当模型处理到"苹果"这个词时,它需要理解这个"苹果"到底是什么意思——是水果的苹果,还是苹果公司的苹果?这时候,Self-Attention就派上用场了:它会让句子里的每个词都去"看"其他所有词,然后决定应该重点关注谁。

具体来说,"苹果"会跟句子里的每个词计算一个相关性分数

  • "苹果"和"吃"的关系分数 → 很高(因为"吃苹果"是常见搭配)

  • "苹果"和"我"的关系分数 → 一般

  • "苹果"和"喜欢"的关系分数 → 较低

这样模型就知道,"苹果"在这里大概率是被"吃"的对象,所以它应该被理解为一种水果。

再比如"我喜欢苹果的手机"这句话,"苹果"和"手机"的关系分数就会很高,模型就知道这里指的是苹果公司。

这就是Self-Attention的威力:它让每个词都能根据上下文动态调整自己的含义。


四、Q、K、V到底是什么?用搜索引擎来理解

Self-Attention的实现依赖于三个概念:Query(查询)、Key(键)、Value(值),简称Q、K、V。这三个词听起来很抽象,但如果你用过搜索引擎,就一定能秒懂。

把Self-Attention想象成一次搜索引擎查询

概念

搜索引擎类比

在句子中的作用

Query(Q)

你在搜索框里输入的搜索词

当前词想要查找什么信息

Key(K)

每个网页的标题

每个词的"标签",用来跟Query匹配

Value(V)

每个网页的具体内容

每个词实际携带的信息

过程是这样的:假设当前词是"苹果",它的Query就是"我想了解跟我相关的上下文"。然后它拿自己的Q去跟句子里每个词的K做匹配(就像搜索词跟网页标题做匹配),得到一组相关性分数。最后,根据这些分数,对各词的V进行加权求和——分数高的词,贡献的信息就多。

用公式表达就是:

$$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) V$$

别被这个公式吓到!翻译成白话就四步:

  1. Q乘以K的转置:计算Query和每个Key的相似度(搜索词和标题的匹配度)

  2. 除以根号d_k:做一个缩放,防止数值太大导致结果不稳定(就像把分数归一化到合理范围)

  3. softmax:把分数转换成百分比,让所有分数加起来等于1(高的更高,低的更低,拉开差距)

  4. 乘以V:按照百分比来提取各词的信息(关注度高的词,信息提取得多)

来看一段简单的PyTorch代码,直观感受一下:

import torch
import torch.nn.functional as F

# 假设句子有5个词,每个词用64维向量表示
seq_len = 5
d_k = 64

# 随机生成Q、K、V(实际中是通过线性变换得到的)
Q = torch.randn(seq_len, d_k)
K = torch.randn(seq_len, d_k)
V = torch.randn(seq_len, d_k)

# 第一步:计算注意力分数
scores = torch.matmul(Q, K.transpose(-2, -1)) / (d_k ** 0.5)

# 第二步:softmax归一化,得到注意力权重
attention_weights = F.softmax(scores, dim=-1)

# 第三步:用权重对V加权求和,得到输出
output = torch.matmul(attention_weights, V)

print("注意力权重矩阵(每行代表一个词对其他词的关注度):")
print(attention_weights)

这段代码就是Self-Attention的全部计算过程,总共就三步,核心只有三行代码。每个词通过Q、K、V的交互,就能"看到"句子里的所有其他词,并判断该关注谁。


五、Multi-Head Attention:多个角度看同一句话

上面讲的是一次Self-Attention,你可以理解为从一个角度理解句子。但Transformer用的是Multi-Head Attention(多头注意力),也就是同时从多个角度看同一句话。

打个比方:你作为一个面试官在评估一个候选人——

  • 第1个角度:关注候选人的技术能力

  • 第2个角度:关注候选人的沟通表达

  • 第3个角度:关注候选人的项目经验

每个角度会注意到不同的信息,最后把所有角度的结论综合起来,就能得到一个更全面的理解。

在Transformer中,每个"头"就是一组独立的Q、K、V,它们各自学习关注句子中不同类型的关系。比如一个头可能学会了关注语法结构,另一个头学会了关注语义关联,还有的头可能学会了关注位置关系。最终把这些头的结果拼接起来,模型对句子的理解就丰富多了。

用代码来看就是这么个结构:

# Multi-Head Attention 的简化思路
num_heads = 8          # 8个"面试官"同时打分
d_model = 512          # 每个词的总维度
d_k = d_model // num_heads  # 每个面试官负责 64 维

# 每个头独立计算Attention,最后拼接
# head_1: 可能关注语法关系
# head_2: 可能关注语义关系
# head_3: 可能关注指代关系
# ...
# 最终 output = concat(head_1, head_2, ..., head_8) * W_o

8个头各管一摊,最后汇总,这就是"多头"的全部秘密。


六、Feed-Forward和残差连接:锦上添花的两道工序

Transformer的每一层除了Multi-Head Attention,还有两个重要组件:

1. Feed-Forward Network(前馈神经网络)

Attention机制负责的是"词与词之间的关系",而Feed-Forward网络负责的是"对每个词自身的信息做进一步加工"。你可以把它想象成:Attention是开会讨论,Feed-Forward是每个人回去各自消化整理。

2. 残差连接(Residual Connection)

简单来说就是抄近道。每一层的输入会直接加到输出上,公式就是:

$$\text{output} = x + \text{SubLayer}(x)$$

为什么要这么做?因为如果网络太深,信息在层层传递中容易丢失(专业说法叫"梯度消失")。残差连接就像修了一条直通的快速路,保证原始信息不会丢。

这两个组件虽然简单,但对于模型的训练稳定性至关重要。没有它们,Transformer根本训不出来。再加上一个Layer Normalization(层归一化),一个完整的Transformer层就齐了。


七、从Transformer到GPT和BERT

原始的Transformer同时包含**编码器(Encoder)解码器(Decoder)**两部分。但在后续的发展中,研究者们发现:

  • 只用Encoder → 适合理解类任务(分类、提取),代表模型:BERT

  • 只用Decoder → 适合生成类任务(写文章、对话),代表模型:GPT系列

简单理解:

架构

代表模型

擅长什么

类比

Encoder-only

BERT

理解、分类、提取

像一个阅读理解高手

Decoder-only

GPT

生成、对话、创作

像一个写作高手

Encoder-Decoder

原始Transformer

翻译等序列到序列任务

像一个翻译官

GPT之所以火遍全球,就是因为它采用了Decoder-only架构,通过大规模预训练,让模型在"根据前文预测下一个词"这件事上做到了极致。你输入一段话,它就能一个字一个字地"猜"出后面最可能是什么,猜得又快又准,看起来就像真的在跟你对话一样。

而现在几乎所有的大语言模型(LLM),包括ChatGPT、LLaMA、通义千问等,都是基于Decoder-only的Transformer架构。所以理解了Transformer,你就拿到了理解整个大模型世界的钥匙。


八、总结:一张图看懂Transformer

我们来回顾一下Transformer的整体结构,从底向上看:

输入文本
  │
  ▼
[词嵌入 + 位置编码]        ← 把文字变成向量,并告诉模型词的顺序
  │
  ▼
┌──────────────────────┐
│  Transformer Block    │ ← 这个方块重复N次(比如GPT-3重复了96次)
│  ┌────────────────┐  │
│  │ Multi-Head     │  │ ← 从多个角度理解词与词的关系
│  │ Self-Attention │  │
│  └───────┬────────┘  │
│          + 残差连接    │ ← 抄近道,防止信息丢失
│  ┌───────▼────────┐  │
│  │  Feed-Forward  │  │ ← 对每个词做进一步加工
│  └───────┬────────┘  │
│          + 残差连接    │
└──────────────────────┘
  │
  ▼
输出(下一个词的概率分布)

核心要点回顾:

  1. 注意力机制让模型在处理每个词时,能看到整个句子的上下文

  2. Q、K、V是实现注意力的手段——像搜索引擎一样匹配和提取信息

  3. Multi-Head让模型从多个维度理解文本

  4. 残差连接保证深层网络也能稳定训练

  5. Decoder-only架构成就了GPT系列,也成就了今天的大模型时代

作为AI大模型系列的第一篇,这篇文章帮你建立了对Transformer的直觉理解。下一篇我们将深入探讨大模型的预训练和微调策略,敬请期待!


如果这篇文章对你有帮助,欢迎点赞、收藏、关注三连!你的支持是我持续创作的最大动力。有任何问题欢迎评论区交流~

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐